Artifact
ee7d628a1ae28b5837c458bd1ee32a09aab8a87a3b2f91d18a6a30db69f1d6c0:
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 0a  ls::digests]}]..
0170: 23 20 48 65 6c 70 65 72 20 66 75 6e 63 74 69 6f  # Helper functio
0180: 6e 73 20 2d 20 53 65 65 20 63 6f 6d 6d 6f 6e 2e  ns - See common.
0190: 74 63 6c 0a 70 72 6f 63 20 64 69 67 65 73 74 5f  tcl.proc digest_
01a0: 72 65 61 64 5f 63 68 61 6e 20 7b 63 6d 64 20 66  read_chan {cmd f
01b0: 69 6c 65 6e 61 6d 65 20 61 72 67 73 7d 20 7b 3b  ilename args} {;
01c0: 73 65 74 20 63 68 20 5b 6f 70 65 6e 20 24 66 69  set ch [open $fi
01d0: 6c 65 6e 61 6d 65 20 72 62 5d 3b 73 65 74 20 62  lename rb];set b
01e0: 73 69 7a 65 20 5b 66 63 6f 6e 66 69 67 75 72 65  size [fconfigure
01f0: 20 24 63 68 20 2d 62 75 66 66 65 72 73 69 7a 65   $ch -buffersize
0200: 5d 3b 73 65 74 20 6e 65 77 20 5b 24 63 6d 64 20  ];set new [$cmd 
0210: 7b 2a 7d 24 61 72 67 73 20 2d 63 68 61 6e 20 24  {*}$args -chan $
0220: 63 68 5d 3b 77 68 69 6c 65 20 7b 21 5b 65 6f 66  ch];while {![eof
0230: 20 24 6e 65 77 5d 7d 20 7b 73 65 74 20 6d 64 20   $new]} {set md 
0240: 5b 72 65 61 64 20 24 6e 65 77 20 24 62 73 69 7a  [read $new $bsiz
0250: 65 5d 7d 3b 63 6c 6f 73 65 20 24 6e 65 77 3b 72  e]};close $new;r
0260: 65 74 75 72 6e 20 24 6d 64 7d 0a 70 72 6f 63 20  eturn $md}.proc 
0270: 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61  digest_write_cha
0280: 6e 20 7b 63 6d 64 20 66 69 6c 65 6e 61 6d 65 20  n {cmd filename 
0290: 64 61 74 61 20 61 72 67 73 7d 20 7b 3b 73 65 74  data args} {;set
02a0: 20 63 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e   ch [open $filen
02b0: 61 6d 65 20 77 62 5d 3b 73 65 74 20 6e 65 77 20  ame wb];set new 
02c0: 5b 24 63 6d 64 20 7b 2a 7d 24 61 72 67 73 20 2d  [$cmd {*}$args -
02d0: 63 68 61 6e 20 24 63 68 5d 3b 70 75 74 73 20 2d  chan $ch];puts -
02e0: 6e 6f 6e 65 77 6c 69 6e 65 20 24 6e 65 77 20 24  nonewline $new $
02f0: 64 61 74 61 3b 66 6c 75 73 68 20 24 6e 65 77 3b  data;flush $new;
0300: 63 6c 6f 73 65 20 24 6e 65 77 3b 73 65 74 20 63  close $new;set c
0310: 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d  h [open $filenam
0320: 65 20 72 62 5d 3b 73 65 74 20 6d 64 20 5b 72 65  e rb];set md [re
0330: 61 64 20 24 63 68 5d 3b 63 6c 6f 73 65 20 24 63  ad $ch];close $c
0340: 68 3b 72 65 74 75 72 6e 20 24 6d 64 7d 0a 70 72  h;return $md}.pr
0350: 6f 63 20 64 69 67 65 73 74 5f 61 63 63 75 6d 75  oc digest_accumu
0360: 6c 61 74 65 20 7b 73 74 72 69 6e 67 20 61 72 67  late {string arg
0370: 73 7d 20 7b 3b 73 65 74 20 63 6d 64 20 5b 7b 2a  s} {;set cmd [{*
0380: 7d 24 61 72 67 73 20 2d 63 6f 6d 6d 61 6e 64 20  }$args -command 
0390: 64 63 6d 64 5d 3b 20 24 63 6d 64 20 75 70 64 61  dcmd]; $cmd upda
03a0: 74 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65  te [string range
03b0: 20 24 73 74 72 69 6e 67 20 30 20 32 30 5d 3b 24   $string 0 20];$
03c0: 63 6d 64 20 75 70 64 61 74 65 20 5b 73 74 72 69  cmd update [stri
03d0: 6e 67 20 72 61 6e 67 65 20 24 73 74 72 69 6e 67  ng range $string
03e0: 20 32 31 20 65 6e 64 5d 3b 72 65 74 75 72 6e 20   21 end];return 
03f0: 5b 24 63 6d 64 20 66 69 6e 61 6c 69 7a 65 5d 7d  [$cmd finalize]}
0400: 0a 0a 73 65 74 20 74 65 73 74 5f 64 61 74 61 20  ..set test_data 
0410: 22 45 78 61 6d 70 6c 65 20 73 74 72 69 6e 67 20  "Example string 
0420: 66 6f 72 20 6d 65 73 73 61 67 65 20 64 69 67 65  for message dige
0430: 73 74 20 74 65 73 74 73 2e 5c 6e 22 0a 73 65 74  st tests.\n".set
0440: 20 74 65 73 74 5f 66 69 6c 65 20 22 6d 64 5f 64   test_file "md_d
0450: 61 74 61 2e 64 61 74 22 0a 73 65 74 20 74 65 73  ata.dat".set tes
0460: 74 5f 61 6c 74 5f 66 69 6c 65 20 22 6d 64 5f 61  t_alt_file "md_a
0470: 6c 74 5f 64 61 74 61 2e 64 61 74 22 0a 73 65 74  lt_data.dat".set
0480: 20 74 65 73 74 5f 6b 65 79 20 22 45 78 61 6d 70   test_key "Examp
0490: 6c 65 20 6b 65 79 22 0a 3a 3a 74 63 6c 74 65 73  le key".::tcltes
04a0: 74 3a 3a 6d 61 6b 65 46 69 6c 65 20 24 74 65 73  t::makeFile $tes
04b0: 74 5f 64 61 74 61 20 24 74 65 73 74 5f 66 69 6c  t_data $test_fil
04c0: 65 0a 0a 23 20 54 65 73 74 20 73 68 6f 72 74 2d  e..# Test short-
04d0: 63 75 74 20 63 6f 6d 6d 61 6e 64 73 0a 0a 0a 74  cut commands...t
04e0: 65 73 74 20 53 68 6f 72 74 63 75 74 5f 43 6d 64  est Shortcut_Cmd
04f0: 73 2d 31 2e 31 20 7b 6d 64 34 20 63 6d 64 7d 20  s-1.1 {md4 cmd} 
0500: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64  -constraints {md
0510: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
0520: 73 3a 3a 6d 64 34 20 24 74 65 73 74 5f 64 61 74  s::md4 $test_dat
0530: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
0540: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37  {793399f792eca27
0550: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35  52c6af3234ba7085
0560: 38 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75  8}..test Shortcu
0570: 74 5f 43 6d 64 73 2d 31 2e 32 20 7b 6d 64 35 20  t_Cmds-1.2 {md5 
0580: 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  cmd} -body {..::
0590: 74 6c 73 3a 3a 6d 64 35 20 24 74 65 73 74 5f 64  tls::md5 $test_d
05a0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
05b0: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
05c0: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
05d0: 61 30 39 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74  a09}..test Short
05e0: 63 75 74 5f 43 6d 64 73 2d 31 2e 33 20 7b 73 68  cut_Cmds-1.3 {sh
05f0: 61 31 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a  a1 cmd} -body {.
0600: 09 3a 3a 74 6c 73 3a 3a 73 68 61 31 20 24 74 65  .::tls::sha1 $te
0610: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
0620: 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32  esult {4fe03b7f2
0630: 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36  568551dfafb98ca6
0640: 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d  004e65c4b71aa7d}
0650: 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74 5f  ..test Shortcut_
0660: 43 6d 64 73 2d 31 2e 34 20 7b 73 68 61 32 35 36  Cmds-1.4 {sha256
0670: 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   cmd} -body {..:
0680: 3a 74 6c 73 3a 3a 73 68 61 32 35 36 20 24 74 65  :tls::sha256 $te
0690: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
06a0: 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31  esult {9d3578fc1
06b0: 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66  38205cf0ee4b4cef
06c0: 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62  35fe101bb4ecac7b
06d0: 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63  1614c18e6fa48b5c
06e0: 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 53  7f95e19}..test S
06f0: 68 6f 72 74 63 75 74 5f 43 6d 64 73 2d 31 2e 35  hortcut_Cmds-1.5
0700: 20 7b 73 68 61 35 31 32 20 63 6d 64 7d 20 2d 62   {sha512 cmd} -b
0710: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68  ody {..::tls::sh
0720: 61 35 31 32 20 24 74 65 73 74 5f 64 61 74 61 0a  a512 $test_data.
0730: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64      } -result {d
0740: 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30 37  178e759dc5912707
0750: 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36 32  1588d2fad173c062
0760: 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63 30  38d87e800a6403c0
0770: 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30 65  a30daa4faaf05d0e
0780: 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35 38  7ce04916afaa6a58
0790: 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30 31  a30cbeb597dacb01
07a0: 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39 64  c62f9fb9d89bab9d
07b0: 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31 7d  a630c699e4816f1}
07c0: 0a 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d  ...# Test MD com
07d0: 6d 61 6e 64 20 66 6f 72 20 72 65 61 64 20 63 68  mand for read ch
07e0: 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 4d 44 5f  annel...test MD_
07f0: 43 68 61 6e 5f 52 65 61 64 2d 32 2e 31 20 7b 6d  Chan_Read-2.1 {m
0800: 64 34 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  d4} -constraints
0810: 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09   {md4} -body {..
0820: 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e  digest_read_chan
0830: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
0840: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64  _file -digest md
0850: 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  4.    } -result 
0860: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37  {793399f792eca27
0870: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35  52c6af3234ba7085
0880: 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  8}..test MD_Chan
0890: 5f 52 65 61 64 2d 32 2e 32 20 7b 6d 64 35 7d 20  _Read-2.2 {md5} 
08a0: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
08b0: 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  read_chan ::tls:
08c0: 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d  :md $test_file -
08d0: 64 69 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d  digest md5.    }
08e0: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30   -result {962bf0
08f0: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34  803b4232ec23bd84
0900: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73  27bb94ea09}..tes
0910: 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32  t MD_Chan_Read-2
0920: 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20  .3 {sha1} -body 
0930: 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63  {..digest_read_c
0940: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
0950: 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74  est_file -digest
0960: 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73   sha1.    } -res
0970: 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36  ult {4fe03b7f256
0980: 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30  8551dfafb98ca600
0990: 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a  4e65c4b71aa7d}..
09a0: 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61  test MD_Chan_Rea
09b0: 64 2d 32 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  d-2.4 {sha256} -
09c0: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72  body {..digest_r
09d0: 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ead_chan ::tls::
09e0: 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64  md $test_file -d
09f0: 69 67 65 73 74 20 73 68 61 32 35 36 0a 20 20 20  igest sha256.   
0a00: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35   } -result {9d35
0a10: 37 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34  78fc138205cf0ee4
0a20: 62 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65  b4cef35fe101bb4e
0a30: 63 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61  cac7b1614c18e6fa
0a40: 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74  48b5c7f95e19}..t
0a50: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64  est MD_Chan_Read
0a60: 2d 32 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62  -2.5 {sha512} -b
0a70: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
0a80: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
0a90: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69  d $test_file -di
0aa0: 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 20 20  gest sha512.    
0ab0: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65  } -result {d178e
0ac0: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38  759dc59127071588
0ad0: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38  d2fad173c06238d8
0ae0: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64  7e800a6403c0a30d
0af0: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30  aa4faaf05d0e7ce0
0b00: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63  4916afaa6a58a30c
0b10: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66  beb597dacb01c62f
0b20: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30  9fb9d89bab9da630
0b30: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65  c699e4816f1}..te
0b40: 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d  st MD_Chan_Read-
0b50: 32 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62  2.6 {md5 bin} -b
0b60: 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e  ody {..binary en
0b70: 63 6f 64 65 20 68 65 78 20 5b 64 69 67 65 73 74  code hex [digest
0b80: 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  _read_chan ::tls
0b90: 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20  ::md $test_file 
0ba0: 2d 62 69 6e 20 2d 64 69 67 65 73 74 20 6d 64 35  -bin -digest md5
0bb0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
0bc0: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
0bd0: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
0be0: 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  9}..test MD_Chan
0bf0: 5f 52 65 61 64 2d 32 2e 37 20 7b 6d 64 35 20 68  _Read-2.7 {md5 h
0c00: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  ex} -body {..dig
0c10: 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a  est_read_chan ::
0c20: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69  tls::md $test_fi
0c30: 6c 65 20 2d 68 65 78 20 2d 64 69 67 65 73 74 20  le -hex -digest 
0c40: 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  md5.    } -resul
0c50: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
0c60: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
0c70: 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20  a09}..# Test MD 
0c80: 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 77 72 69 74  command for writ
0c90: 65 20 63 68 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74  e channel...test
0ca0: 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33   MD_Chan_Write-3
0cb0: 2e 31 20 7b 6d 64 34 7d 20 2d 63 6f 6e 73 74 72  .1 {md4} -constr
0cc0: 61 69 6e 74 73 20 7b 6d 64 34 7d 20 2d 62 6f 64  aints {md4} -bod
0cd0: 79 20 7b 0a 09 64 69 67 65 73 74 5f 77 72 69 74  y {..digest_writ
0ce0: 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  e_chan ::tls::md
0cf0: 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20   $test_alt_file 
0d00: 24 74 65 73 74 5f 64 61 74 61 20 2d 64 69 67 65  $test_data -dige
0d10: 73 74 20 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65  st md4.    } -re
0d20: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32  sult {793399f792
0d30: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62  eca2752c6af3234b
0d40: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44  a70858}..test MD
0d50: 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 32 20  _Chan_Write-3.2 
0d60: 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  {md5} -body {..d
0d70: 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e  igest_write_chan
0d80: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
0d90: 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f  _alt_file $test_
0da0: 64 61 74 61 20 2d 64 69 67 65 73 74 20 6d 64 35  data -digest md5
0db0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
0dc0: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
0dd0: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
0de0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f  }..test MD_Chan_
0df0: 57 72 69 74 65 2d 33 2e 33 20 7b 73 68 61 31 7d  Write-3.3 {sha1}
0e00: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
0e10: 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c  _write_chan ::tl
0e20: 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f  s::md $test_alt_
0e30: 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61 20  file $test_data 
0e40: 2d 64 69 67 65 73 74 20 73 68 61 31 0a 20 20 20  -digest sha1.   
0e50: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30   } -result {4fe0
0e60: 33 62 37 66 32 35 36 38 35 35 31 64 66 61 66 62  3b7f2568551dfafb
0e70: 39 38 63 61 36 30 30 34 65 36 35 63 34 62 37 31  98ca6004e65c4b71
0e80: 61 61 37 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 43  aa7d}..test MD_C
0e90: 68 61 6e 5f 57 72 69 74 65 2d 33 2e 34 20 7b 73  han_Write-3.4 {s
0ea0: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
0eb0: 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61  digest_write_cha
0ec0: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
0ed0: 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74  t_alt_file $test
0ee0: 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20 73 68  _data -digest sh
0ef0: 61 32 35 36 0a 20 20 20 20 7d 20 2d 72 65 73 75  a256.    } -resu
0f00: 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32  lt {9d3578fc1382
0f10: 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66  05cf0ee4b4cef35f
0f20: 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31  e101bb4ecac7b161
0f30: 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39  4c18e6fa48b5c7f9
0f40: 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 43  5e19}..test MD_C
0f50: 68 61 6e 5f 57 72 69 74 65 2d 33 2e 35 20 7b 73  han_Write-3.5 {s
0f60: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
0f70: 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61  digest_write_cha
0f80: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
0f90: 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74  t_alt_file $test
0fa0: 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20 73 68  _data -digest sh
0fb0: 61 35 31 32 0a 20 20 20 20 7d 20 2d 72 65 73 75  a512.    } -resu
0fc0: 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39  lt {d178e759dc59
0fd0: 31 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37  127071588d2fad17
0fe0: 33 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36  3c06238d87e800a6
0ff0: 34 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66  403c0a30daa4faaf
1000: 30 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61  05d0e7ce04916afa
1010: 61 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64  a6a58a30cbeb597d
1020: 61 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39  acb01c62f9fb9d89
1030: 62 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38  bab9da630c699e48
1040: 31 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 43  16f1}..test MD_C
1050: 68 61 6e 5f 57 72 69 74 65 2d 33 2e 36 20 7b 6d  han_Write-3.6 {m
1060: 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a  d5 bin} -body {.
1070: 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68  .binary encode h
1080: 65 78 20 5b 64 69 67 65 73 74 5f 77 72 69 74 65  ex [digest_write
1090: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
10a0: 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24  $test_alt_file $
10b0: 74 65 73 74 5f 64 61 74 61 20 2d 62 69 6e 20 2d  test_data -bin -
10c0: 64 69 67 65 73 74 20 6d 64 35 5d 0a 20 20 20 20  digest md5].    
10d0: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
10e0: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
10f0: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65  427bb94ea09}..te
1100: 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74 65  st MD_Chan_Write
1110: 2d 33 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d  -3.7 {md5 hex} -
1120: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 77  body {..digest_w
1130: 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  rite_chan ::tls:
1140: 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69  :md $test_alt_fi
1150: 6c 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 68  le $test_data -h
1160: 65 78 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20  ex -digest md5. 
1170: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
1180: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
1190: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
11a0: 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61  .# Test MD comma
11b0: 6e 64 20 66 6f 72 20 6f 62 6a 65 63 74 20 63 6f  nd for object co
11c0: 6d 6d 61 6e 64 0a 0a 0a 74 65 73 74 20 4d 44 5f  mmand...test MD_
11d0: 43 6f 6d 6d 61 6e 64 2d 34 2e 31 20 7b 6d 64 34  Command-4.1 {md4
11e0: 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b  } -constraints {
11f0: 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  md4} -body {..di
1200: 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20  gest_accumulate 
1210: 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73  $test_data ::tls
1220: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 34  ::md -digest md4
1230: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1240: 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35  793399f792eca275
1250: 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38  2c6af3234ba70858
1260: 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61  }..test MD_Comma
1270: 6e 64 2d 34 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f  nd-4.2 {md5} -bo
1280: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63  dy {..digest_acc
1290: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61  umulate $test_da
12a0: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  ta ::tls::md -di
12b0: 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d  gest md5.    } -
12c0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
12d0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
12e0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
12f0: 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 33 20 7b  MD_Command-4.3 {
1300: 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  sha1} -body {..d
1310: 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65  igest_accumulate
1320: 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c   $test_data ::tl
1330: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
1340: 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  a1.    } -result
1350: 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35   {4fe03b7f256855
1360: 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36  1dfafb98ca6004e6
1370: 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73  5c4b71aa7d}..tes
1380: 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 34  t MD_Command-4.4
1390: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
13a0: 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75  {..digest_accumu
13b0: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
13c0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
13d0: 74 20 73 68 61 32 35 36 0a 20 20 20 20 7d 20 2d  t sha256.    } -
13e0: 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63  result {9d3578fc
13f0: 31 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65  138205cf0ee4b4ce
1400: 66 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37  f35fe101bb4ecac7
1410: 62 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35  b1614c18e6fa48b5
1420: 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20  c7f95e19}..test 
1430: 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 35 20 7b  MD_Command-4.5 {
1440: 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a  sha512} -body {.
1450: 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61  .digest_accumula
1460: 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a  te $test_data ::
1470: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
1480: 73 68 61 35 31 32 0a 20 20 20 20 7d 20 2d 72 65  sha512.    } -re
1490: 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63  sult {d178e759dc
14a0: 35 39 31 32 37 30 37 31 35 38 38 64 32 66 61 64  59127071588d2fad
14b0: 31 37 33 63 30 36 32 33 38 64 38 37 65 38 30 30  173c06238d87e800
14c0: 61 36 34 30 33 63 30 61 33 30 64 61 61 34 66 61  a6403c0a30daa4fa
14d0: 61 66 30 35 64 30 65 37 63 65 30 34 39 31 36 61  af05d0e7ce04916a
14e0: 66 61 61 36 61 35 38 61 33 30 63 62 65 62 35 39  faa6a58a30cbeb59
14f0: 37 64 61 63 62 30 31 63 36 32 66 39 66 62 39 64  7dacb01c62f9fb9d
1500: 38 39 62 61 62 39 64 61 36 33 30 63 36 39 39 65  89bab9da630c699e
1510: 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44  4816f1}..test MD
1520: 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 36 20 7b 6d 64  _Command-4.6 {md
1530: 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09  5 bin} -body {..
1540: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
1550: 78 20 5b 64 69 67 65 73 74 5f 61 63 63 75 6d 75  x [digest_accumu
1560: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
1570: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1580: 74 20 6d 64 35 20 2d 62 69 6e 5d 0a 20 20 20 20  t md5 -bin].    
1590: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
15a0: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
15b0: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65  427bb94ea09}..te
15c0: 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e  st MD_Command-4.
15d0: 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64  7 {md5 hex} -bod
15e0: 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75  y {..digest_accu
15f0: 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74  mulate $test_dat
1600: 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  a ::tls::md -dig
1610: 65 73 74 20 6d 64 35 20 2d 68 65 78 0a 20 20 20  est md5 -hex.   
1620: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62   } -result {962b
1630: 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64  f0803b4232ec23bd
1640: 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23  8427bb94ea09}..#
1650: 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61 6e 64   Test MD command
1660: 20 66 6f 72 20 64 61 74 61 20 73 68 6f 72 74 63   for data shortc
1670: 75 74 0a 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f  ut...test MD_Sho
1680: 72 74 63 75 74 2d 35 2e 31 20 7b 6d 64 34 7d 20  rtcut-5.1 {md4} 
1690: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64  -constraints {md
16a0: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
16b0: 73 3a 3a 6d 64 20 6d 64 34 20 24 74 65 73 74 5f  s::md md4 $test_
16c0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
16d0: 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63  lt {793399f792ec
16e0: 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37  a2752c6af3234ba7
16f0: 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 53  0858}..test MD_S
1700: 68 6f 72 74 63 75 74 2d 35 2e 32 20 7b 6d 64 35  hortcut-5.2 {md5
1710: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1720: 3a 3a 6d 64 20 6d 64 35 20 24 74 65 73 74 5f 64  ::md md5 $test_d
1730: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
1740: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
1750: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
1760: 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68  a09}..test MD_Sh
1770: 6f 72 74 63 75 74 2d 35 2e 33 20 7b 73 68 61 31  ortcut-5.3 {sha1
1780: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1790: 3a 3a 6d 64 20 73 68 61 31 20 24 74 65 73 74 5f  ::md sha1 $test_
17a0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
17b0: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
17c0: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
17d0: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
17e0: 65 73 74 20 4d 44 5f 53 68 6f 72 74 63 75 74 2d  est MD_Shortcut-
17f0: 35 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f  5.4 {sha256} -bo
1800: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
1810: 73 68 61 32 35 36 20 24 74 65 73 74 5f 64 61 74  sha256 $test_dat
1820: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
1830: 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63  {9d3578fc138205c
1840: 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30  f0ee4b4cef35fe10
1850: 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31  1bb4ecac7b1614c1
1860: 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31  8e6fa48b5c7f95e1
1870: 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72  9}..test MD_Shor
1880: 74 63 75 74 2d 35 2e 35 20 7b 73 68 61 35 31 32  tcut-5.5 {sha512
1890: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
18a0: 3a 3a 6d 64 20 73 68 61 35 31 32 20 24 74 65 73  ::md sha512 $tes
18b0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
18c0: 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63  sult {d178e759dc
18d0: 35 39 31 32 37 30 37 31 35 38 38 64 32 66 61 64  59127071588d2fad
18e0: 31 37 33 63 30 36 32 33 38 64 38 37 65 38 30 30  173c06238d87e800
18f0: 61 36 34 30 33 63 30 61 33 30 64 61 61 34 66 61  a6403c0a30daa4fa
1900: 61 66 30 35 64 30 65 37 63 65 30 34 39 31 36 61  af05d0e7ce04916a
1910: 66 61 61 36 61 35 38 61 33 30 63 62 65 62 35 39  faa6a58a30cbeb59
1920: 37 64 61 63 62 30 31 63 36 32 66 39 66 62 39 64  7dacb01c62f9fb9d
1930: 38 39 62 61 62 39 64 61 36 33 30 63 36 39 39 65  89bab9da630c699e
1940: 34 38 31 36 66 31 7d 0a 0a 23 20 54 65 73 74 20  4816f1}..# Test 
1950: 4d 44 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 64  MD command for d
1960: 61 74 61 0a 0a 0a 74 65 73 74 20 4d 44 5f 44 61  ata...test MD_Da
1970: 74 61 2d 36 2e 31 20 7b 6d 64 34 7d 20 2d 63 6f  ta-6.1 {md4} -co
1980: 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64 34 7d 20  nstraints {md4} 
1990: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
19a0: 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 34 20 2d  md -digest md4 -
19b0: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
19c0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37      } -result {7
19d0: 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32  93399f792eca2752
19e0: 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d  c6af3234ba70858}
19f0: 0a 0a 74 65 73 74 20 4d 44 5f 44 61 74 61 2d 36  ..test MD_Data-6
1a00: 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b  .2 {md5} -body {
1a10: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
1a20: 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74  est md5 -data $t
1a30: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
1a40: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
1a50: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
1a60: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
1a70: 4d 44 5f 44 61 74 61 2d 36 2e 33 20 7b 73 68 61  MD_Data-6.3 {sha
1a80: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  1} -body {..::tl
1a90: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
1aa0: 61 31 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  a1 -data $test_d
1ab0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
1ac0: 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35  t {4fe03b7f25685
1ad0: 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65  51dfafb98ca6004e
1ae0: 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65  65c4b71aa7d}..te
1af0: 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 34 20 7b  st MD_Data-6.4 {
1b00: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a  sha256} -body {.
1b10: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
1b20: 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20  st sha256 -data 
1b30: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
1b40: 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38   -result {9d3578
1b50: 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34  fc138205cf0ee4b4
1b60: 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61  cef35fe101bb4eca
1b70: 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38  c7b1614c18e6fa48
1b80: 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73  b5c7f95e19}..tes
1b90: 74 20 4d 44 5f 44 61 74 61 2d 36 2e 35 20 7b 73  t MD_Data-6.5 {s
1ba0: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
1bb0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1bc0: 74 20 73 68 61 35 31 32 20 2d 64 61 74 61 20 24  t sha512 -data $
1bd0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1be0: 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35  -result {d178e75
1bf0: 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32  9dc59127071588d2
1c00: 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65  fad173c06238d87e
1c10: 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61  800a6403c0a30daa
1c20: 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39  4faaf05d0e7ce049
1c30: 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65  16afaa6a58a30cbe
1c40: 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66  b597dacb01c62f9f
1c50: 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36  b9d89bab9da630c6
1c60: 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 74  99e4816f1}..test
1c70: 20 4d 44 5f 44 61 74 61 2d 36 2e 36 20 7b 6d 64   MD_Data-6.6 {md
1c80: 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09  5 bin} -body {..
1c90: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
1ca0: 78 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  x [::tls::md -di
1cb0: 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24  gest md5 -data $
1cc0: 74 65 73 74 5f 64 61 74 61 20 2d 62 69 6e 5d 0a  test_data -bin].
1cd0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
1ce0: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32  62bf0803b4232ec2
1cf0: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d  3bd8427bb94ea09}
1d00: 0a 0a 74 65 73 74 20 4d 44 5f 44 61 74 61 2d 36  ..test MD_Data-6
1d10: 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f  .7 {md5 hex} -bo
1d20: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
1d30: 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74  -digest md5 -dat
1d40: 61 20 24 74 65 73 74 5f 64 61 74 61 20 2d 68 65  a $test_data -he
1d50: 78 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  x.    } -result 
1d60: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
1d70: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
1d80: 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f  9}..# Test MD co
1d90: 6d 6d 61 6e 64 20 66 6f 72 20 66 69 6c 65 0a 0a  mmand for file..
1da0: 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d 37 2e  .test MD_File-7.
1db0: 31 20 7b 6d 64 34 7d 20 2d 63 6f 6e 73 74 72 61  1 {md4} -constra
1dc0: 69 6e 74 73 20 7b 6d 64 34 7d 20 2d 62 6f 64 79  ints {md4} -body
1dd0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
1de0: 69 67 65 73 74 20 6d 64 34 20 2d 66 69 6c 65 20  igest md4 -file 
1df0: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
1e00: 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39   -result {793399
1e10: 66 37 39 32 65 63 61 32 37 35 32 63 36 61 66 33  f792eca2752c6af3
1e20: 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73  234ba70858}..tes
1e30: 74 20 4d 44 5f 46 69 6c 65 2d 37 2e 32 20 7b 6d  t MD_File-7.2 {m
1e40: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  d5} -body {..::t
1e50: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
1e60: 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  d5 -file $test_f
1e70: 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ile.    } -resul
1e80: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
1e90: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
1ea0: 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69  a09}..test MD_Fi
1eb0: 6c 65 2d 37 2e 33 20 7b 73 68 61 31 7d 20 2d 62  le-7.3 {sha1} -b
1ec0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
1ed0: 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 66   -digest sha1 -f
1ee0: 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20  ile $test_file. 
1ef0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66     } -result {4f
1f00: 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66 61  e03b7f2568551dfa
1f10: 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34 62  fb98ca6004e65c4b
1f20: 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 4d 44  71aa7d}..test MD
1f30: 5f 46 69 6c 65 2d 37 2e 34 20 7b 73 68 61 32 35  _File-7.4 {sha25
1f40: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  6} -body {..::tl
1f50: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
1f60: 61 32 35 36 20 2d 66 69 6c 65 20 24 74 65 73 74  a256 -file $test
1f70: 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73  _file.    } -res
1f80: 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38  ult {9d3578fc138
1f90: 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35  205cf0ee4b4cef35
1fa0: 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36  fe101bb4ecac7b16
1fb0: 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66  14c18e6fa48b5c7f
1fc0: 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  95e19}..test MD_
1fd0: 46 69 6c 65 2d 37 2e 35 20 7b 73 68 61 35 31 32  File-7.5 {sha512
1fe0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1ff0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
2000: 35 31 32 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  512 -file $test_
2010: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
2020: 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39  lt {d178e759dc59
2030: 31 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37  127071588d2fad17
2040: 33 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36  3c06238d87e800a6
2050: 34 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66  403c0a30daa4faaf
2060: 30 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61  05d0e7ce04916afa
2070: 61 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64  a6a58a30cbeb597d
2080: 61 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39  acb01c62f9fb9d89
2090: 62 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38  bab9da630c699e48
20a0: 31 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 46  16f1}..test MD_F
20b0: 69 6c 65 2d 37 2e 36 20 7b 6d 64 35 20 62 69 6e  ile-7.6 {md5 bin
20c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72  } -body {..binar
20d0: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a  y encode hex [::
20e0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
20f0: 6d 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  md5 -file $test_
2100: 66 69 6c 65 20 2d 62 69 6e 5d 0a 20 20 20 20 7d  file -bin].    }
2110: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30   -result {962bf0
2120: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34  803b4232ec23bd84
2130: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73  27bb94ea09}..tes
2140: 74 20 4d 44 5f 46 69 6c 65 2d 37 2e 37 20 7b 6d  t MD_File-7.7 {m
2150: 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a  d5 hex} -body {.
2160: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
2170: 73 74 20 6d 64 35 20 2d 66 69 6c 65 20 24 74 65  st md5 -file $te
2180: 73 74 5f 66 69 6c 65 20 2d 68 65 78 0a 20 20 20  st_file -hex.   
2190: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62   } -result {962b
21a0: 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64  f0803b4232ec23bd
21b0: 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23  8427bb94ea09}..#
21c0: 20 4d 44 20 45 72 72 6f 72 20 43 61 73 65 73 0a   MD Error Cases.
21d0: 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73  ..test MD_Errors
21e0: 2d 38 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72  -8.1 {Too few ar
21f0: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  gs} -body {..::t
2200: 6c 73 3a 3a 6d 64 0a 20 20 20 20 7d 20 2d 72 65  ls::md.    } -re
2210: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72  sult {wrong # ar
2220: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a  gs: should be ":
2230: 3a 74 6c 73 3a 3a 6d 64 20 3f 2d 62 69 6e 7c 2d  :tls::md ?-bin|-
2240: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
2250: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d  me? ?-digest nam
2260: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d  e? ?-key key? ?-
2270: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e  mac name? [-chan
2280: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d  nel chan | -comm
2290: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66  and cmdName | -f
22a0: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f  ile filename | ?
22b0: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d  -data? data]"} -
22c0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
22d0: 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d  .test MD_Errors-
22e0: 38 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72  8.2 {Too many ar
22f0: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  gs} -body {..::t
2300: 6c 73 3a 3a 6d 64 20 74 6f 6f 20 6d 61 6e 79 20  ls::md too many 
2310: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67  command line arg
2320: 73 20 74 6f 20 70 61 73 73 20 74 68 65 20 74 65  s to pass the te
2330: 73 74 20 77 69 74 68 6f 75 74 20 61 6e 20 65 72  st without an er
2340: 72 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20  ror or failing. 
2350: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72     } -result {wr
2360: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
2370: 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64  ld be "::tls::md
2380: 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63   ?-bin|-hex? ?-c
2390: 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69  ipher name? ?-di
23a0: 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79  gest name? ?-key
23b0: 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65   key? ?-mac name
23c0: 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e  ? [-channel chan
23d0: 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e   | -command cmdN
23e0: 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65  ame | -file file
23f0: 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64  name | ?-data? d
2400: 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f  ata]"} -returnCo
2410: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44  des {1}..test MD
2420: 5f 45 72 72 6f 72 73 2d 38 2e 33 20 7b 49 6e 76  _Errors-8.3 {Inv
2430: 61 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62 6f  alid digest} -bo
2440: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
2450: 62 6f 67 75 73 20 64 61 74 61 0a 20 20 20 20 7d  bogus data.    }
2460: 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69   -result {invali
2470: 64 20 64 69 67 65 73 74 20 22 62 6f 67 75 73 22  d digest "bogus"
2480: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
2490: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f  1}..test MD_Erro
24a0: 72 73 2d 38 2e 34 20 7b 49 6e 76 61 6c 69 64 20  rs-8.4 {Invalid 
24b0: 64 69 67 65 73 74 20 41 72 67 7d 20 2d 62 6f 64  digest Arg} -bod
24c0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
24d0: 64 69 67 65 73 74 20 62 6f 67 75 73 20 2d 64 61  digest bogus -da
24e0: 74 61 20 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  ta data.    } -r
24f0: 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 64  esult {invalid d
2500: 69 67 65 73 74 20 22 62 6f 67 75 73 22 7d 20 2d  igest "bogus"} -
2510: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
2520: 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d  .test MD_Errors-
2530: 38 2e 35 20 7b 4e 6f 20 64 69 67 65 73 74 7d 20  8.5 {No digest} 
2540: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2550: 6d 64 20 2d 68 65 78 20 2d 64 61 74 61 20 76 61  md -hex -data va
2560: 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  lue.    } -resul
2570: 74 20 7b 6e 6f 20 64 69 67 65 73 74 7d 20 2d 72  t {no digest} -r
2580: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
2590: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
25a0: 2e 36 20 7b 49 6e 76 61 6c 69 64 20 6f 70 74 69  .6 {Invalid opti
25b0: 6f 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  on} -body {..::t
25c0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
25d0: 68 61 32 35 36 20 2d 62 6f 67 75 73 20 76 61 6c  ha256 -bogus val
25e0: 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ue.    } -result
25f0: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 2d 62   {bad option "-b
2600: 6f 67 75 73 22 3a 20 6d 75 73 74 20 62 65 20 2d  ogus": must be -
2610: 62 69 6e 2c 20 2d 62 69 6e 61 72 79 2c 20 2d 68  bin, -binary, -h
2620: 65 78 2c 20 2d 68 65 78 61 64 65 63 69 6d 61 6c  ex, -hexadecimal
2630: 2c 20 2d 63 68 61 6e 2c 20 2d 63 68 61 6e 6e 65  , -chan, -channe
2640: 6c 2c 20 2d 63 69 70 68 65 72 2c 20 2d 63 6f 6d  l, -cipher, -com
2650: 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20 2d 64 69  mand, -data, -di
2660: 67 65 73 74 2c 20 2d 66 69 6c 65 2c 20 2d 66 69  gest, -file, -fi
2670: 6c 65 6e 61 6d 65 2c 20 2d 68 61 73 68 2c 20 2d  lename, -hash, -
2680: 6b 65 79 2c 20 6f 72 20 2d 6d 61 63 7d 20 2d 72  key, or -mac} -r
2690: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
26a0: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
26b0: 2e 37 20 7b 49 6e 76 61 6c 69 64 20 66 69 6c 65  .7 {Invalid file
26c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
26d0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
26e0: 32 35 36 20 2d 66 69 6c 65 20 62 6f 67 75 73 0a  256 -file bogus.
26f0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63      } -result {c
2700: 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 22 62 6f  ouldn't open "bo
2710: 67 75 73 22 3a 20 6e 6f 20 73 75 63 68 20 66 69  gus": no such fi
2720: 6c 65 20 6f 72 20 64 69 72 65 63 74 6f 72 79 7d  le or directory}
2730: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
2740: 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72  }..test MD_Error
2750: 73 2d 38 2e 38 20 7b 49 6e 76 61 6c 69 64 20 63  s-8.8 {Invalid c
2760: 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a  hannel} -body {.
2770: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
2780: 73 74 20 73 68 61 32 35 36 20 2d 63 68 61 6e 6e  st sha256 -chann
2790: 65 6c 20 62 6f 67 75 73 0a 20 20 20 20 7d 20 2d  el bogus.    } -
27a0: 72 65 73 75 6c 74 20 7b 63 61 6e 20 6e 6f 74 20  result {can not 
27b0: 66 69 6e 64 20 63 68 61 6e 6e 65 6c 20 6e 61 6d  find channel nam
27c0: 65 64 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74  ed "bogus"} -ret
27d0: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
27e0: 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 39  st MD_Errors-8.9
27f0: 20 7b 4e 6f 20 6f 70 65 72 61 74 69 6f 6e 7d 20   {No operation} 
2800: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2810: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
2820: 36 20 2d 62 69 6e 0a 20 20 20 20 7d 20 2d 72 65  6 -bin.    } -re
2830: 73 75 6c 74 20 7b 4e 6f 20 6f 70 65 72 61 74 69  sult {No operati
2840: 6f 6e 3a 20 55 73 65 20 2d 63 68 61 6e 6e 65 6c  on: Use -channel
2850: 2c 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74  , -command, -dat
2860: 61 2c 20 6f 72 20 2d 66 69 6c 65 20 6f 70 74 69  a, or -file opti
2870: 6f 6e 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  on} -returnCodes
2880: 20 7b 31 7d 0a 0a 0a 23 20 54 65 73 74 20 43 4d   {1}...# Test CM
2890: 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74  AC command.set t
28a0: 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 73 2d  est_cipher "aes-
28b0: 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 65 73  128-cbc".set tes
28c0: 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b  t_key "Example k
28d0: 65 79 20 31 32 33 34 22 0a 0a 0a 74 65 73 74 20  ey 1234"...test 
28e0: 43 4d 41 43 2d 39 2e 31 20 7b 64 61 74 61 7d 20  CMAC-9.1 {data} 
28f0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2900: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65  cmac -cipher $te
2910: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2920: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
2930: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
2940: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2950: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2960: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2970: 20 43 4d 41 43 2d 39 2e 32 20 7b 66 69 6c 65 7d   CMAC-9.2 {file}
2980: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2990: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74  :cmac -cipher $t
29a0: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
29b0: 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20  $test_key -file 
29c0: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
29d0: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
29e0: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
29f0: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
2a00: 74 20 43 4d 41 43 2d 39 2e 33 20 7b 63 68 61 6e  t CMAC-9.3 {chan
2a10: 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  nel} -body {..di
2a20: 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a  gest_read_chan :
2a30: 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73 74  :tls::cmac $test
2a40: 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20 24 74  _file -cipher $t
2a50: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2a60: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
2a70: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2a80: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2a90: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2aa0: 20 43 4d 41 43 2d 39 2e 34 20 7b 63 6f 6d 6d 61   CMAC-9.4 {comma
2ab0: 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  nd} -body {..dig
2ac0: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
2ad0: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
2ae0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74  :cmac -cipher $t
2af0: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2b00: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
2b10: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2b20: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2b30: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2b40: 20 43 4d 41 43 2d 39 2e 35 20 7b 64 61 74 61 20   CMAC-9.5 {data 
2b50: 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69  bin} -body {..bi
2b60: 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20  nary encode hex 
2b70: 5b 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 62 69  [::tls::cmac -bi
2b80: 6e 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  n -cipher $test_
2b90: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2ba0: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
2bb0: 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72  t_data].    } -r
2bc0: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
2bd0: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
2be0: 64 66 65 35 32 66 61 7d 0a 0a 23 20 54 65 73 74  dfe52fa}..# Test
2bf0: 20 4d 44 20 43 4d 41 43 0a 0a 0a 74 65 73 74 20   MD CMAC...test 
2c00: 4d 44 5f 43 4d 41 43 2d 31 30 2e 31 20 7b 64 61  MD_CMAC-10.1 {da
2c10: 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ta} -body {..::t
2c20: 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24  ls::md -cipher $
2c30: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2c40: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61   $test_key -data
2c50: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
2c60: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2c70: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2c80: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2c90: 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 32 20  st MD_CMAC-10.2 
2ca0: 7b 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09  {file} -body {..
2cb0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65  ::tls::md -ciphe
2cc0: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
2cd0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66  key $test_key -f
2ce0: 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20  ile $test_file. 
2cf0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
2d00: 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36  f5c20f9973e2d606
2d10: 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a  b14c7efdfe52fa}.
2d20: 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30  .test MD_CMAC-10
2d30: 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f  .3 {channel} -bo
2d40: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61  dy {..digest_rea
2d50: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  d_chan ::tls::md
2d60: 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 63 69 70   $test_file -cip
2d70: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
2d80: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a   -key $test_key.
2d90: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
2da0: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30  af5c20f9973e2d60
2db0: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d  6b14c7efdfe52fa}
2dc0: 0a 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31  ..test MD_CMAC-1
2dd0: 30 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62  0.4 {command} -b
2de0: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63  ody {..digest_ac
2df0: 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64  cumulate $test_d
2e00: 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63  ata ::tls::md -c
2e10: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68  ipher $test_ciph
2e20: 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  er -key $test_ke
2e30: 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  y.    } -result 
2e40: 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64  {baf5c20f9973e2d
2e50: 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66  606b14c7efdfe52f
2e60: 61 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43  a}..test MD_CMAC
2e70: 2d 31 30 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d  -10.5 {data bin}
2e80: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79   -body {..binary
2e90: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74   encode hex [::t
2ea0: 6c 73 3a 3a 6d 64 20 2d 62 69 6e 20 2d 63 69 70  ls::md -bin -cip
2eb0: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
2ec0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
2ed0: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
2ee0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
2ef0: 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64  {baf5c20f9973e2d
2f00: 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66  606b14c7efdfe52f
2f10: 61 7d 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20  a}..# Test CMAC 
2f20: 53 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20  Shortcut...test 
2f30: 43 4d 41 43 5f 53 68 6f 72 74 63 75 74 2d 31 31  CMAC_Shortcut-11
2f40: 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20  .1 {data} -body 
2f50: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24  {..::tls::cmac $
2f60: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2f70: 20 24 74 65 73 74 5f 6b 65 79 20 24 74 65 73 74   $test_key $test
2f80: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
2f90: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
2fa0: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
2fb0: 65 35 32 66 61 7d 0a 0a 23 20 43 4d 41 43 20 45  e52fa}..# CMAC E
2fc0: 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73  rror Cases...tes
2fd0: 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32  t CMAC_Errors-12
2fe0: 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73  .1 {Too few args
2ff0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3000: 3a 3a 63 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65  ::cmac.    } -re
3010: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72  sult {wrong # ar
3020: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a  gs: should be ":
3030: 3a 74 6c 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e  :tls::cmac ?-bin
3040: 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20  |-hex? ?-cipher 
3050: 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e  name? ?-digest n
3060: 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20  ame? ?-key key? 
3070: 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68  ?-mac name? [-ch
3080: 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f  annel chan | -co
3090: 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20  mmand cmdName | 
30a0: 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c  -file filename |
30b0: 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d   ?-data? data]"}
30c0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
30d0: 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72  }..test CMAC_Err
30e0: 6f 72 73 2d 31 32 2e 32 20 7b 54 6f 6f 20 6d 61  ors-12.2 {Too ma
30f0: 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b  ny args} -body {
3100: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 74 6f  ..::tls::cmac to
3110: 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c  o many command l
3120: 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73 73  ine args to pass
3130: 20 74 68 65 20 74 65 73 74 20 77 69 74 68 6f 75   the test withou
3140: 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61  t an error or fa
3150: 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73  iling.    } -res
3160: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67  ult {wrong # arg
3170: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a  s: should be "::
3180: 74 6c 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c  tls::cmac ?-bin|
3190: 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e  -hex? ?-cipher n
31a0: 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61  ame? ?-digest na
31b0: 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f  me? ?-key key? ?
31c0: 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61  -mac name? [-cha
31d0: 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d  nnel chan | -com
31e0: 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d  mand cmdName | -
31f0: 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20  file filename | 
3200: 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20  ?-data? data]"} 
3210: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
3220: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f  ..test CMAC_Erro
3230: 72 73 2d 31 32 2e 33 20 7b 4e 6f 20 63 69 70 68  rs-12.3 {No ciph
3240: 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  er} -body {..::t
3250: 6c 73 3a 3a 63 6d 61 63 20 2d 68 65 78 20 2d 64  ls::cmac -hex -d
3260: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
3270: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f     } -result {no
3280: 20 63 69 70 68 65 72 7d 20 2d 72 65 74 75 72 6e   cipher} -return
3290: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
32a0: 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 34  CMAC_Errors-12.4
32b0: 20 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20   {No key} -body 
32c0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
32d0: 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70  cipher $test_cip
32e0: 68 65 72 20 2d 64 61 74 61 20 24 74 65 73 74 5f  her -data $test_
32f0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3300: 6c 74 20 7b 6e 6f 20 6b 65 79 7d 20 2d 72 65 74  lt {no key} -ret
3310: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
3320: 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31  st CMAC_Errors-1
3330: 32 2e 35 20 7b 49 6e 76 61 6c 69 64 20 63 69 70  2.5 {Invalid cip
3340: 68 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  her} -body {..::
3350: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
3360: 72 20 62 6f 67 75 73 20 2d 64 61 74 61 20 24 74  r bogus -data $t
3370: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
3380: 72 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20  result {invalid 
3390: 63 69 70 68 65 72 20 22 62 6f 67 75 73 22 7d 20  cipher "bogus"} 
33a0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
33b0: 0a 0a 0a 23 20 54 65 73 74 20 48 4d 41 43 20 63  ...# Test HMAC c
33c0: 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f  ommand.set test_
33d0: 64 69 67 65 73 74 20 6d 64 35 0a 73 65 74 20 74  digest md5.set t
33e0: 65 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65  est_key "Example
33f0: 20 6b 65 79 22 0a 0a 0a 74 65 73 74 20 48 4d 41   key"...test HMA
3400: 43 2d 31 33 2e 31 20 7b 64 61 74 61 7d 20 2d 62  C-13.1 {data} -b
3410: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
3420: 61 63 20 2d 64 69 67 65 73 74 20 24 74 65 73 74  ac -digest $test
3430: 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65  _digest -key $te
3440: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
3450: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
3460: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
3470: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
3480: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48  a79d93d}..test H
3490: 4d 41 43 2d 31 33 2e 32 20 7b 66 69 6c 65 7d 20  MAC-13.2 {file} 
34a0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
34b0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74 65  hmac -digest $te
34c0: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
34d0: 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24  test_key -file $
34e0: 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20  test_file.    } 
34f0: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
3500: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
3510: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
3520: 20 48 4d 41 43 2d 31 33 2e 33 20 7b 63 68 61 6e   HMAC-13.3 {chan
3530: 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  nel} -body {..di
3540: 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a  gest_read_chan :
3550: 3a 74 6c 73 3a 3a 68 6d 61 63 20 24 74 65 73 74  :tls::hmac $test
3560: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 24 74  _file -digest $t
3570: 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20  est_digest -key 
3580: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
3590: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
35a0: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
35b0: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
35c0: 20 48 4d 41 43 2d 31 33 2e 34 20 7b 63 6f 6d 6d   HMAC-13.4 {comm
35d0: 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  and} -body {..di
35e0: 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20  gest_accumulate 
35f0: 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73  $test_data ::tls
3600: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24  ::hmac -digest $
3610: 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79  test_digest -key
3620: 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d   $test_key.    }
3630: 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37   -result {f98327
3640: 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37  ef3e20ab6d388f67
3650: 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73  6c6a79d93d}..tes
3660: 74 20 48 4d 41 43 2d 31 33 2e 35 20 7b 64 61 74  t HMAC-13.5 {dat
3670: 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09  a bin} -body {..
3680: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
3690: 78 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  x [::tls::hmac -
36a0: 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67  digest $test_dig
36b0: 65 73 74 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74  est -bin -key $t
36c0: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74  est_key -data $t
36d0: 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20  est_data].    } 
36e0: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
36f0: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
3700: 63 36 61 37 39 64 39 33 64 7d 0a 0a 23 20 54 65  c6a79d93d}..# Te
3710: 73 74 20 4d 44 20 48 4d 41 43 0a 0a 0a 74 65 73  st MD HMAC...tes
3720: 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 31 20 7b  t MD_HMAC-14.1 {
3730: 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  data} -body {..:
3740: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
3750: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
3760: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
3770: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3780: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3790: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
37a0: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
37b0: 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e  test MD_HMAC-14.
37c0: 32 20 7b 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b  2 {file} -body {
37d0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
37e0: 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74  est $test_digest
37f0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
3800: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
3810: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3820: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
3830: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
3840: 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d  }..test MD_HMAC-
3850: 31 34 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d  14.3 {channel} -
3860: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72  body {..digest_r
3870: 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ead_chan ::tls::
3880: 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64  md $test_file -d
3890: 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65  igest $test_dige
38a0: 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  st -key $test_ke
38b0: 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  y.    } -result 
38c0: 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36  {f98327ef3e20ab6
38d0: 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33  d388f676c6a79d93
38e0: 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43  d}..test MD_HMAC
38f0: 2d 31 34 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20  -14.4 {command} 
3900: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
3910: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
3920: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _data ::tls::md 
3930: 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69  -digest $test_di
3940: 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f  gest -key $test_
3950: 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  key.    } -resul
3960: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
3970: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
3980: 39 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d  93d}..test MD_HM
3990: 41 43 2d 31 34 2e 35 20 7b 64 61 74 61 20 62 69  AC-14.5 {data bi
39a0: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61  n} -body {..bina
39b0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a  ry encode hex [:
39c0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
39d0: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 62   $test_digest -b
39e0: 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  in -key $test_ke
39f0: 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  y -data $test_da
3a00: 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ta].    } -resul
3a10: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
3a20: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
3a30: 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 48 4d 41  93d}..# Test HMA
3a40: 43 20 53 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73  C Shortcut...tes
3a50: 74 20 48 4d 41 43 5f 53 68 6f 72 74 63 75 74 2d  t HMAC_Shortcut-
3a60: 31 35 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64  15.1 {data} -bod
3a70: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
3a80: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
3a90: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 24 74 65  ey $test_key $te
3aa0: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
3ab0: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
3ac0: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
3ad0: 61 37 39 64 39 33 64 7d 0a 0a 23 20 48 4d 41 43  a79d93d}..# HMAC
3ae0: 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74   Error Cases...t
3af0: 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d  est HMAC_Errors-
3b00: 31 36 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72  16.1 {Too few ar
3b10: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  gs} -body {..::t
3b20: 6c 73 3a 3a 68 6d 61 63 0a 20 20 20 20 7d 20 2d  ls::hmac.    } -
3b30: 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20  result {wrong # 
3b40: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
3b50: 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62  "::tls::hmac ?-b
3b60: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65  in|-hex? ?-ciphe
3b70: 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74  r name? ?-digest
3b80: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79   name? ?-key key
3b90: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d  ? ?-mac name? [-
3ba0: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d  channel chan | -
3bb0: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20  command cmdName 
3bc0: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65  | -file filename
3bd0: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d   | ?-data? data]
3be0: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
3bf0: 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45  {1}..test HMAC_E
3c00: 72 72 6f 72 73 2d 31 36 2e 32 20 7b 54 6f 6f 20  rrors-16.2 {Too 
3c10: 6d 61 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64 79  many args} -body
3c20: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
3c30: 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64  too many command
3c40: 20 6c 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61   line args to pa
3c50: 73 73 20 74 68 65 20 74 65 73 74 20 77 69 74 68  ss the test with
3c60: 6f 75 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20  out an error or 
3c70: 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72  failing.    } -r
3c80: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61  esult {wrong # a
3c90: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  rgs: should be "
3ca0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69  ::tls::hmac ?-bi
3cb0: 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72  n|-hex? ?-cipher
3cc0: 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20   name? ?-digest 
3cd0: 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f  name? ?-key key?
3ce0: 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63   ?-mac name? [-c
3cf0: 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63  hannel chan | -c
3d00: 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c  ommand cmdName |
3d10: 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20   -file filename 
3d20: 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22  | ?-data? data]"
3d30: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
3d40: 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72  1}..test HMAC_Er
3d50: 72 6f 72 73 2d 31 36 2e 33 20 7b 4e 6f 20 64 69  rors-16.3 {No di
3d60: 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  gest} -body {..:
3d70: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 68 65 78 20  :tls::hmac -hex 
3d80: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
3d90: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3da0: 6e 6f 20 64 69 67 65 73 74 7d 20 2d 72 65 74 75  no digest} -retu
3db0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
3dc0: 74 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36  t HMAC_Errors-16
3dd0: 2e 34 20 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64  .4 {No key} -bod
3de0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
3df0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
3e00: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
3e10: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3e20: 6e 6f 20 6b 65 79 7d 20 2d 72 65 74 75 72 6e 43  no key} -returnC
3e30: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48  odes {1}..test H
3e40: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 35 20  MAC_Errors-16.5 
3e50: 7b 49 6e 76 61 6c 69 64 20 64 69 67 65 73 74 7d  {Invalid digest}
3e60: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3e70: 3a 6d 64 20 2d 64 69 67 65 73 74 20 62 6f 67 75  :md -digest bogu
3e80: 73 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  s -key $test_key
3e90: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
3ea0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
3eb0: 7b 69 6e 76 61 6c 69 64 20 64 69 67 65 73 74 20  {invalid digest 
3ec0: 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 6e  "bogus"} -return
3ed0: 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a 23 20 54 65  Codes {1}...# Te
3ee0: 73 74 20 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 73  st MAC command.s
3ef0: 65 74 20 74 65 73 74 5f 63 69 70 68 65 72 20 22  et test_cipher "
3f00: 61 65 73 2d 31 32 38 2d 63 62 63 22 0a 73 65 74  aes-128-cbc".set
3f10: 20 74 65 73 74 5f 64 69 67 65 73 74 20 73 68 61   test_digest sha
3f20: 32 35 36 0a 73 65 74 20 74 65 73 74 5f 6b 65 79  256.set test_key
3f30: 20 22 45 78 61 6d 70 6c 65 20 6b 65 79 20 31 32   "Example key 12
3f40: 33 34 22 0a 0a 0a 74 65 73 74 20 4d 41 43 2d 31  34"...test MAC-1
3f50: 37 2e 31 20 7b 43 4d 41 43 7d 20 2d 62 6f 64 79  7.1 {CMAC} -body
3f60: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d   {..::tls::mac -
3f70: 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70  cipher $test_cip
3f80: 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  her -key $test_k
3f90: 65 79 20 2d 6d 61 63 20 63 6d 61 63 20 2d 64 61  ey -mac cmac -da
3fa0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3fb0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66    } -result {baf
3fc0: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62  5c20f9973e2d606b
3fd0: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a  14c7efdfe52fa}..
3fe0: 74 65 73 74 20 4d 41 43 2d 31 37 2e 32 20 7b 48  test MAC-17.2 {H
3ff0: 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  MAC} -body {..::
4000: 74 6c 73 3a 3a 6d 61 63 20 2d 64 69 67 65 73 74  tls::mac -digest
4010: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
4020: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61  ey $test_key -ma
4030: 63 20 68 6d 61 63 20 2d 64 61 74 61 20 24 74 65  c hmac -data $te
4040: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
4050: 65 73 75 6c 74 20 7b 36 37 36 64 61 66 39 36 33  esult {676daf963
4060: 37 30 64 30 65 33 63 35 35 39 38 35 35 37 64 61  70d0e3c5598557da
4070: 33 38 61 39 61 38 31 30 61 34 66 62 61 63 62 62  38a9a810a4fbacbb
4080: 32 64 31 30 63 36 37 66 36 64 66 61 38 33 66 31  2d10c67f6dfa83f1
4090: 30 66 34 38 65 39 36 7d 0a 0a 74 65 73 74 20 4d  0f48e96}..test M
40a0: 41 43 2d 31 37 2e 33 20 7b 4d 44 2d 43 4d 41 43  AC-17.3 {MD-CMAC
40b0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
40c0: 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65  ::md -cipher $te
40d0: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
40e0: 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20 63 6d  test_key -mac cm
40f0: 61 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ac -data $test_d
4100: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
4110: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65  t {baf5c20f9973e
4120: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35  2d606b14c7efdfe5
4130: 32 66 61 7d 0a 0a 74 65 73 74 20 4d 41 43 2d 31  2fa}..test MAC-1
4140: 37 2e 34 20 7b 4d 44 2d 48 4d 41 43 7d 20 2d 62  7.4 {MD-HMAC} -b
4150: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4160: 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64   -digest $test_d
4170: 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74  igest -key $test
4180: 5f 6b 65 79 20 2d 6d 61 63 20 68 6d 61 63 20 2d  _key -mac hmac -
4190: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
41a0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36      } -result {6
41b0: 37 36 64 61 66 39 36 33 37 30 64 30 65 33 63 35  76daf96370d0e3c5
41c0: 35 39 38 35 35 37 64 61 33 38 61 39 61 38 31 30  598557da38a9a810
41d0: 61 34 66 62 61 63 62 62 32 64 31 30 63 36 37 66  a4fbacbb2d10c67f
41e0: 36 64 66 61 38 33 66 31 30 66 34 38 65 39 36 7d  6dfa83f10f48e96}
41f0: 0a 0a 23 20 4d 41 43 20 45 72 72 6f 72 20 43 61  ..# MAC Error Ca
4200: 73 65 73 0a 0a 0a 74 65 73 74 20 4d 41 43 5f 45  ses...test MAC_E
4210: 72 72 6f 72 73 2d 31 38 2e 31 20 7b 54 6f 6f 20  rrors-18.1 {Too 
4220: 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 20  few args} -body 
4230: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 0a 20 20  {..::tls::mac.  
4240: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f    } -result {wro
4250: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
4260: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63  d be "::tls::mac
4270: 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63   ?-bin|-hex? ?-c
4280: 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69  ipher name? ?-di
4290: 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79  gest name? ?-key
42a0: 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65   key? ?-mac name
42b0: 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e  ? [-channel chan
42c0: 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e   | -command cmdN
42d0: 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65  ame | -file file
42e0: 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64  name | ?-data? d
42f0: 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f  ata]"} -returnCo
4300: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41  des {1}..test MA
4310: 43 5f 45 72 72 6f 72 73 2d 31 38 2e 32 20 7b 4e  C_Errors-18.2 {N
4320: 6f 20 6d 61 63 7d 20 2d 62 6f 64 79 20 7b 0a 09  o mac} -body {..
4330: 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 6b 65 79 20  ::tls::mac -key 
4340: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
4350: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
4360: 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 4d 41 43   -result {no MAC
4370: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
4380: 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72  1}..test MAC_Err
4390: 6f 72 73 2d 31 38 2e 33 20 7b 4e 6f 20 6b 65 79  ors-18.3 {No key
43a0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
43b0: 3a 3a 6d 61 63 20 2d 6d 61 63 20 68 6d 61 63 20  ::mac -mac hmac 
43c0: 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69  -digest $test_di
43d0: 67 65 73 74 20 2d 64 61 74 61 20 24 74 65 73 74  gest -data $test
43e0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
43f0: 75 6c 74 20 7b 6e 6f 20 6b 65 79 7d 20 2d 72 65  ult {no key} -re
4400: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
4410: 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31  est MAC_Errors-1
4420: 38 2e 34 20 7b 49 6e 76 61 6c 69 64 20 4d 41 43  8.4 {Invalid MAC
4430: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
4440: 3a 3a 6d 61 63 20 2d 6d 61 63 20 62 6f 67 75 73  ::mac -mac bogus
4450: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
4460: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
4470: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4480: 69 6e 76 61 6c 69 64 20 4d 41 43 20 22 62 6f 67  invalid MAC "bog
4490: 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  us"} -returnCode
44a0: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f  s {1}..test MAC_
44b0: 45 72 72 6f 72 73 2d 31 38 2e 35 20 7b 54 6f 6f  Errors-18.5 {Too
44c0: 20 6d 61 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64   many args} -bod
44d0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20  y {..::tls::mac 
44e0: 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64  too many command
44f0: 20 6c 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61   line args to pa
4500: 73 73 20 74 68 65 20 74 65 73 74 20 77 69 74 68  ss the test with
4510: 6f 75 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20  out an error or 
4520: 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72  failing.    } -r
4530: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61  esult {wrong # a
4540: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  rgs: should be "
4550: 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f 2d 62 69 6e  ::tls::mac ?-bin
4560: 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20  |-hex? ?-cipher 
4570: 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e  name? ?-digest n
4580: 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20  ame? ?-key key? 
4590: 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68  ?-mac name? [-ch
45a0: 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f  annel chan | -co
45b0: 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20  mmand cmdName | 
45c0: 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c  -file filename |
45d0: 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d   ?-data? data]"}
45e0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
45f0: 7d 0a 0a 0a 23 20 52 46 43 20 31 33 32 31 20 4d  }...# RFC 1321 M
4600: 65 73 73 61 67 65 20 44 69 67 65 73 74 20 35 0a  essage Digest 5.
4610: 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d  ..test RFC1321-M
4620: 44 35 2d 31 39 2e 31 20 7b 54 43 31 7d 20 2d 62  D5-19.1 {TC1} -b
4630: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4640: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61   -digest md5 -da
4650: 74 61 20 22 22 0a 20 20 20 20 7d 20 2d 72 65 73  ta "".    } -res
4660: 75 6c 74 20 7b 64 34 31 64 38 63 64 39 38 66 30  ult {d41d8cd98f0
4670: 30 62 32 30 34 65 39 38 30 30 39 39 38 65 63 66  0b204e9800998ecf
4680: 38 34 32 37 65 7d 0a 0a 74 65 73 74 20 52 46 43  8427e}..test RFC
4690: 31 33 32 31 2d 4d 44 35 2d 31 39 2e 32 20 7b 54  1321-MD5-19.2 {T
46a0: 43 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C2} -body {..::t
46b0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
46c0: 64 35 20 2d 64 61 74 61 20 22 61 22 0a 20 20 20  d5 -data "a".   
46d0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 63 63 31   } -result {0cc1
46e0: 37 35 62 39 63 30 66 31 62 36 61 38 33 31 63 33  75b9c0f1b6a831c3
46f0: 39 39 65 32 36 39 37 37 32 36 36 31 7d 0a 0a 74  99e269772661}..t
4700: 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d  est RFC1321-MD5-
4710: 31 39 2e 33 20 7b 54 43 33 7d 20 2d 62 6f 64 79  19.3 {TC3} -body
4720: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4730: 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20  igest md5 -data 
4740: 22 61 62 63 22 0a 20 20 20 20 7d 20 2d 72 65 73  "abc".    } -res
4750: 75 6c 74 20 7b 39 30 30 31 35 30 39 38 33 63 64  ult {900150983cd
4760: 32 34 66 62 30 64 36 39 36 33 66 37 64 32 38 65  24fb0d6963f7d28e
4770: 31 37 66 37 32 7d 0a 0a 74 65 73 74 20 52 46 43  17f72}..test RFC
4780: 31 33 32 31 2d 4d 44 35 2d 31 39 2e 34 20 7b 54  1321-MD5-19.4 {T
4790: 43 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C4} -body {..::t
47a0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
47b0: 64 35 20 2d 64 61 74 61 20 22 6d 65 73 73 61 67  d5 -data "messag
47c0: 65 20 64 69 67 65 73 74 22 0a 20 20 20 20 7d 20  e digest".    } 
47d0: 2d 72 65 73 75 6c 74 20 7b 66 39 36 62 36 39 37  -result {f96b697
47e0: 64 37 63 62 37 39 33 38 64 35 32 35 61 32 66 33  d7cb7938d525a2f3
47f0: 31 61 61 66 31 36 31 64 30 7d 0a 0a 74 65 73 74  1aaf161d0}..test
4800: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
4810: 35 20 7b 54 43 35 7d 20 2d 62 6f 64 79 20 7b 0a  5 {TC5} -body {.
4820: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4830: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22 61 62  st md5 -data "ab
4840: 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72  cdefghijklmnopqr
4850: 73 74 75 76 77 78 79 7a 22 0a 20 20 20 20 7d 20  stuvwxyz".    } 
4860: 2d 72 65 73 75 6c 74 20 7b 63 33 66 63 64 33 64  -result {c3fcd3d
4870: 37 36 31 39 32 65 34 30 30 37 64 66 62 34 39 36  76192e4007dfb496
4880: 63 63 61 36 37 65 31 33 62 7d 0a 0a 74 65 73 74  cca67e13b}..test
4890: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
48a0: 36 20 7b 54 43 36 7d 20 2d 62 6f 64 79 20 7b 0a  6 {TC6} -body {.
48b0: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
48c0: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22 41 42  st md5 -data "AB
48d0: 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52  CDEFGHIJKLMNOPQR
48e0: 53 54 55 56 57 58 59 5a 61 62 63 64 65 66 67 68  STUVWXYZabcdefgh
48f0: 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78  ijklmnopqrstuvwx
4900: 79 7a 30 31 32 33 34 35 36 37 38 39 22 0a 20 20  yz0123456789".  
4910: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37    } -result {d17
4920: 34 61 62 39 38 64 32 37 37 64 39 66 35 61 35 36  4ab98d277d9f5a56
4930: 31 31 63 32 63 39 66 34 31 39 64 39 66 7d 0a 0a  11c2c9f419d9f}..
4940: 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35  test RFC1321-MD5
4950: 2d 31 39 2e 37 20 7b 54 43 37 7d 20 2d 62 6f 64  -19.7 {TC7} -bod
4960: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4970: 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61  digest md5 -data
4980: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
4990: 22 31 32 33 34 35 36 37 38 39 30 22 20 38 5d 0a  "1234567890" 8].
49a0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35      } -result {5
49b0: 37 65 64 66 34 61 32 32 62 65 33 63 39 35 35 61  7edf4a22be3c955a
49c0: 63 34 39 64 61 32 65 32 31 30 37 62 36 37 61 7d  c49da2e2107b67a}
49d0: 0a 0a 23 20 52 46 43 20 36 32 33 34 20 53 48 41  ..# RFC 6234 SHA
49e0: 31 0a 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34  1...test RFC6234
49f0: 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 31 20 7b 54  -MD-SHA1-20.1 {T
4a00: 43 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C1} -body {..::t
4a10: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
4a20: 68 61 31 20 2d 64 61 74 61 20 22 61 62 63 22 0a  ha1 -data "abc".
4a30: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61      } -result {a
4a40: 39 39 39 33 65 33 36 34 37 30 36 38 31 36 61 62  9993e364706816ab
4a50: 61 33 65 32 35 37 31 37 38 35 30 63 32 36 63 39  a3e25717850c26c9
4a60: 63 64 30 64 38 39 64 7d 0a 0a 74 65 73 74 20 52  cd0d89d}..test R
4a70: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32  FC6234-MD-SHA1-2
4a80: 30 2e 32 20 7b 54 43 32 5f 31 7d 20 2d 62 6f 64  0.2 {TC2_1} -bod
4a90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4aa0: 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61 74  digest sha1 -dat
4ab0: 61 20 22 61 62 63 64 62 63 64 65 63 64 65 66 64  a "abcdbcdecdefd
4ac0: 65 66 67 65 66 67 68 66 67 68 69 67 68 69 6a 68  efgefghfghighijh
4ad0: 69 6a 6b 69 6a 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c  ijkijkljklmklmnl
4ae0: 6d 6e 6f 6d 6e 6f 70 6e 6f 70 71 22 0a 20 20 20  mnomnopnopq".   
4af0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 34 39 38   } -result {8498
4b00: 33 65 34 34 31 63 33 62 64 32 36 65 62 61 61 65  3e441c3bd26ebaae
4b10: 34 61 61 31 66 39 35 31 32 39 65 35 65 35 34 36  4aa1f95129e5e546
4b20: 37 30 66 31 7d 0a 0a 74 65 73 74 20 52 46 43 36  70f1}..test RFC6
4b30: 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 33  234-MD-SHA1-20.3
4b40: 20 7b 54 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09   {TC3} -body {..
4b50: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
4b60: 74 20 73 68 61 31 20 2d 64 61 74 61 20 5b 73 74  t sha1 -data [st
4b70: 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 22 20  ring repeat "a" 
4b80: 31 30 30 30 30 30 30 5d 0a 20 20 20 20 7d 20 2d  1000000].    } -
4b90: 72 65 73 75 6c 74 20 7b 33 34 61 61 39 37 33 63  result {34aa973c
4ba0: 64 34 63 34 64 61 61 34 66 36 31 65 65 62 32 62  d4c4daa4f61eeb2b
4bb0: 64 62 61 64 32 37 33 31 36 35 33 34 30 31 36 66  dbad27316534016f
4bc0: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
4bd0: 4d 44 2d 53 48 41 31 2d 32 30 2e 34 20 7b 54 43  MD-SHA1-20.4 {TC
4be0: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
4bf0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
4c00: 61 31 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67  a1 -data [string
4c10: 20 72 65 70 65 61 74 20 22 30 31 32 33 34 35 36   repeat "0123456
4c20: 37 22 20 38 30 5d 0a 20 20 20 20 7d 20 2d 72 65  7" 80].    } -re
4c30: 73 75 6c 74 20 7b 64 65 61 33 35 36 61 32 63 64  sult {dea356a2cd
4c40: 64 64 39 30 63 37 61 37 65 63 65 64 63 35 65 62  dd90c7a7ecedc5eb
4c50: 62 35 36 33 39 33 34 66 34 36 30 34 35 32 7d 0a  b563934f460452}.
4c60: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
4c70: 2d 53 48 41 31 2d 32 30 2e 35 20 7b 54 43 36 7d  -SHA1-20.5 {TC6}
4c80: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
4c90: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31  :md -digest sha1
4ca0: 20 2d 64 61 74 61 20 22 5c 78 35 65 22 0a 20 20   -data "\x5e".  
4cb0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 65 36    } -result {5e6
4cc0: 66 38 30 61 33 34 61 39 37 39 38 63 61 66 63 36  f80a34a9798cafc6
4cd0: 61 35 64 62 39 36 63 63 35 37 62 61 34 63 34 64  a5db96cc57ba4c4d
4ce0: 62 35 39 63 32 7d 0a 0a 74 65 73 74 20 52 46 43  b59c2}..test RFC
4cf0: 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e  6234-MD-SHA1-20.
4d00: 36 20 7b 54 43 38 5f 31 7d 20 2d 62 6f 64 79 20  6 {TC8_1} -body 
4d10: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
4d20: 67 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20  gest sha1 -data 
4d30: 22 5c 78 39 61 5c 78 37 64 5c 78 66 64 5c 78 66  "\x9a\x7d\xfd\xf
4d40: 31 5c 78 65 63 5c 78 65 61 5c 78 64 30 5c 78 36  1\xec\xea\xd0\x6
4d50: 65 5c 78 64 36 5c 78 34 36 5c 78 61 61 5c 78 35  e\xd6\x46\xaa\x5
4d60: 35 5c 78 66 65 5c 78 37 35 5c 78 37 31 5c 78 34  5\xfe\x75\x71\x4
4d70: 36 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  6".    } -result
4d80: 20 7b 38 32 61 62 66 66 36 36 30 35 64 62 65 31   {82abff6605dbe1
4d90: 63 31 37 64 65 66 31 32 61 33 39 34 66 61 32 32  c17def12a394fa22
4da0: 61 38 32 62 35 34 34 61 33 35 7d 0a 0a 74 65 73  a82b544a35}..tes
4db0: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
4dc0: 31 2d 32 30 2e 37 20 7b 54 43 31 30 5f 31 7d 20  1-20.7 {TC10_1} 
4dd0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4de0: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
4df0: 2d 64 61 74 61 20 22 5c 78 66 37 5c 78 38 66 5c  -data "\xf7\x8f\
4e00: 78 39 32 5c 78 31 34 5c 78 31 62 5c 78 63 64 5c  x92\x14\x1b\xcd\
4e10: 78 31 37 5c 78 30 61 5c 78 65 38 5c 78 39 62 5c  x17\x0a\xe8\x9b\
4e20: 78 34 66 5c 78 62 61 5c 78 31 35 5c 78 61 31 5c  x4f\xba\x15\xa1\
4e30: 78 64 35 5c 78 39 66 5c 78 33 66 5c 78 64 38 5c  xd5\x9f\x3f\xd8\
4e40: 78 34 64 5c 78 32 32 5c 78 33 63 5c 78 39 32 5c  x4d\x22\x3c\x92\
4e50: 78 35 31 5c 78 62 64 5c 78 61 63 5c 78 62 62 5c  x51\xbd\xac\xbb\
4e60: 78 61 65 5c 78 36 31 5c 78 64 30 5c 78 35 65 5c  xae\x61\xd0\x5e\
4e70: 78 64 31 5c 78 31 35 5c 78 61 30 5c 78 36 61 5c  xd1\x15\xa0\x6a\
4e80: 78 37 63 5c 78 65 31 5c 78 31 37 5c 78 62 37 5c  x7c\xe1\x17\xb7\
4e90: 78 62 65 5c 78 65 61 5c 78 64 32 5c 78 34 34 5c  xbe\xea\xd2\x44\
4ea0: 78 32 31 5c 78 64 65 5c 78 64 39 5c 78 63 33 5c  x21\xde\xd9\xc3\
4eb0: 78 32 35 5c 78 39 32 5c 78 62 64 5c 78 35 37 5c  x25\x92\xbd\x57\
4ec0: 78 65 64 5c 78 65 61 5c 78 65 33 5c 78 39 63 5c  xed\xea\xe3\x9c\
4ed0: 78 33 39 5c 78 66 61 5c 78 31 66 5c 78 65 38 5c  x39\xfa\x1f\xe8\
4ee0: 78 39 34 5c 78 36 61 5c 78 38 34 5c 78 64 30 5c  x94\x6a\x84\xd0\
4ef0: 78 63 66 5c 78 31 66 5c 78 37 62 5c 78 65 65 5c  xcf\x1f\x7b\xee\
4f00: 78 61 64 5c 78 31 37 5c 78 31 33 5c 78 65 32 5c  xad\x17\x13\xe2\
4f10: 78 65 30 5c 78 39 35 5c 78 39 38 5c 78 39 37 5c  xe0\x95\x98\x97\
4f20: 78 33 34 5c 78 37 66 5c 78 36 37 5c 78 63 38 5c  x34\x7f\x67\xc8\
4f30: 78 30 62 5c 78 30 34 5c 78 30 30 5c 78 63 32 5c  x0b\x04\x00\xc2\
4f40: 78 30 39 5c 78 38 31 5c 78 35 64 5c 78 36 62 5c  x09\x81\x5d\x6b\
4f50: 78 31 30 5c 78 61 36 5c 78 38 33 5c 78 38 33 5c  x10\xa6\x83\x83\
4f60: 78 36 66 5c 78 64 35 5c 78 35 36 5c 78 32 61 5c  x6f\xd5\x56\x2a\
4f70: 78 35 36 5c 78 63 61 5c 78 62 31 5c 78 61 32 5c  x56\xca\xb1\xa2\
4f80: 78 38 65 5c 78 38 31 5c 78 62 36 5c 78 35 37 5c  x8e\x81\xb6\x57\
4f90: 78 36 36 5c 78 35 34 5c 78 36 33 5c 78 31 63 5c  x66\x54\x63\x1c\
4fa0: 78 66 31 5c 78 36 35 5c 78 36 36 5c 78 62 38 5c  xf1\x65\x66\xb8\
4fb0: 78 36 65 5c 78 33 62 5c 78 33 33 5c 78 61 31 5c  x6e\x3b\x33\xa1\
4fc0: 78 30 38 5c 78 62 30 5c 78 35 33 5c 78 30 37 5c  x08\xb0\x53\x07\
4fd0: 78 63 30 5c 78 30 61 5c 78 66 66 5c 78 31 34 5c  xc0\x0a\xff\x14\
4fe0: 78 61 37 5c 78 36 38 5c 78 65 64 5c 78 37 33 5c  xa7\x68\xed\x73\
4ff0: 78 35 30 5c 78 36 30 5c 78 36 61 5c 78 30 66 5c  x50\x60\x6a\x0f\
5000: 78 38 35 5c 78 65 36 5c 78 61 39 5c 78 31 64 5c  x85\xe6\xa9\x1d\
5010: 78 33 39 5c 78 36 66 5c 78 35 62 5c 78 35 63 5c  x39\x6f\x5b\x5c\
5020: 78 62 65 5c 78 35 37 5c 78 37 66 5c 78 39 62 5c  xbe\x57\x7f\x9b\
5030: 78 33 38 5c 78 38 30 5c 78 37 63 5c 78 37 64 5c  x38\x80\x7c\x7d\
5040: 78 35 32 5c 78 33 64 5c 78 36 64 5c 78 37 39 5c  x52\x3d\x6d\x79\
5050: 78 32 66 5c 78 36 65 5c 78 62 63 5c 78 32 34 5c  x2f\x6e\xbc\x24\
5060: 78 61 34 5c 78 65 63 5c 78 66 32 5c 78 62 33 5c  xa4\xec\xf2\xb3\
5070: 78 61 34 5c 78 32 37 5c 78 63 64 5c 78 62 62 5c  xa4\x27\xcd\xbb\
5080: 78 66 62 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  xfb".    } -resu
5090: 6c 74 20 7b 63 62 30 30 38 32 63 38 66 31 39 37  lt {cb0082c8f197
50a0: 64 32 36 30 39 39 31 62 61 36 61 34 36 30 65 37  d260991ba6a460e7
50b0: 36 65 32 30 32 62 61 64 32 37 62 33 7d 0a 0a 23  6e202bad27b3}..#
50c0: 20 52 46 43 20 36 32 33 34 20 53 48 41 32 35 36   RFC 6234 SHA256
50d0: 0a 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  ...test RFC6234-
50e0: 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 31 20 7b  MD-SHA256-21.1 {
50f0: 54 43 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC1} -body {..::
5100: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
5110: 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 61 62  sha256 -data "ab
5120: 63 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  c".    } -result
5130: 20 7b 62 61 37 38 31 36 62 66 38 66 30 31 63 66   {ba7816bf8f01cf
5140: 65 61 34 31 34 31 34 30 64 65 35 64 61 65 32 32  ea414140de5dae22
5150: 32 33 62 30 30 33 36 31 61 33 39 36 31 37 37 61  23b00361a396177a
5160: 39 63 62 34 31 30 66 66 36 31 66 32 30 30 31 35  9cb410ff61f20015
5170: 61 64 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33  ad}..test RFC623
5180: 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 32  4-MD-SHA256-21.2
5190: 20 7b 54 43 32 5f 31 7d 20 2d 62 6f 64 79 20 7b   {TC2_1} -body {
51a0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
51b0: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
51c0: 20 22 61 62 63 64 62 63 64 65 63 64 65 66 64 65   "abcdbcdecdefde
51d0: 66 67 65 66 67 68 66 67 68 69 67 68 69 6a 68 69  fgefghfghighijhi
51e0: 6a 6b 69 6a 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d  jkijkljklmklmnlm
51f0: 6e 6f 6d 6e 6f 70 6e 6f 70 71 22 0a 20 20 20 20  nomnopnopq".    
5200: 7d 20 2d 72 65 73 75 6c 74 20 7b 32 34 38 64 36  } -result {248d6
5210: 61 36 31 64 32 30 36 33 38 62 38 65 35 63 30 32  a61d20638b8e5c02
5220: 36 39 33 30 63 33 65 36 30 33 39 61 33 33 63 65  6930c3e6039a33ce
5230: 34 35 39 36 34 66 66 32 31 36 37 66 36 65 63 65  45964ff2167f6ece
5240: 64 64 34 31 39 64 62 30 36 63 31 7d 0a 0a 74 65  dd419db06c1}..te
5250: 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48  st RFC6234-MD-SH
5260: 41 32 35 36 2d 32 31 2e 33 20 7b 54 43 33 7d 20  A256-21.3 {TC3} 
5270: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5280: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
5290: 36 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67 20  6 -data [string 
52a0: 72 65 70 65 61 74 20 22 61 22 20 31 30 30 30 30  repeat "a" 10000
52b0: 30 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  00].    } -resul
52c0: 74 20 7b 63 64 63 37 36 65 35 63 39 39 31 34 66  t {cdc76e5c9914f
52d0: 62 39 32 38 31 61 31 63 37 65 32 38 34 64 37 33  b9281a1c7e284d73
52e0: 65 36 37 66 31 38 30 39 61 34 38 61 34 39 37 32  e67f1809a48a4972
52f0: 30 30 65 30 34 36 64 33 39 63 63 63 37 31 31 32  00e046d39ccc7112
5300: 63 64 30 7d 0a 0a 74 65 73 74 20 52 46 43 36 32  cd0}..test RFC62
5310: 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e  34-MD-SHA256-21.
5320: 34 20 7b 54 43 34 7d 20 2d 62 6f 64 79 20 7b 0a  4 {TC4} -body {.
5330: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
5340: 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20  st sha256 -data 
5350: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
5360: 30 31 32 33 34 35 36 37 22 20 38 30 5d 0a 20 20  01234567" 80].  
5370: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 39 34    } -result {594
5380: 38 34 37 33 32 38 34 35 31 62 64 66 61 38 35 30  847328451bdfa850
5390: 35 36 32 32 35 34 36 32 63 63 31 64 38 36 37 64  56225462cc1d867d
53a0: 38 37 37 66 62 33 38 38 64 66 30 63 65 33 35 66  877fb388df0ce35f
53b0: 32 35 61 62 35 35 36 32 62 66 62 62 35 7d 0a 0a  25ab5562bfbb5}..
53c0: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
53d0: 53 48 41 32 35 36 2d 32 31 2e 35 20 7b 54 43 36  SHA256-21.5 {TC6
53e0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
53f0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
5400: 32 35 36 20 2d 64 61 74 61 20 22 5c 78 31 39 22  256 -data "\x19"
5410: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5420: 36 38 61 61 32 65 32 65 65 35 64 66 66 39 36 65  68aa2e2ee5dff96e
5430: 33 33 35 35 65 36 63 37 65 65 33 37 33 65 33 64  3355e6c7ee373e3d
5440: 36 61 34 65 31 37 66 37 35 66 39 35 31 38 64 38  6a4e17f75f9518d8
5450: 34 33 37 30 39 63 30 63 39 62 63 33 65 33 64 34  43709c0c9bc3e3d4
5460: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
5470: 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 36 20 7b  MD-SHA256-21.6 {
5480: 54 43 38 5f 32 35 36 7d 20 2d 62 6f 64 79 20 7b  TC8_256} -body {
5490: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
54a0: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
54b0: 20 22 5c 78 65 33 5c 78 64 37 5c 78 32 35 5c 78   "\xe3\xd7\x25\x
54c0: 37 30 5c 78 64 63 5c 78 64 64 5c 78 37 38 5c 78  70\xdc\xdd\x78\x
54d0: 37 63 5c 78 65 33 5c 78 38 38 5c 78 37 61 5c 78  7c\xe3\x88\x7a\x
54e0: 62 32 5c 78 63 64 5c 78 36 38 5c 78 34 36 5c 78  b2\xcd\x68\x46\x
54f0: 35 32 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  52".    } -resul
5500: 74 20 7b 31 37 35 65 65 36 39 62 30 32 62 61 39  t {175ee69b02ba9
5510: 62 35 38 65 32 62 30 61 35 66 64 31 33 38 31 39  b58e2b0a5fd13819
5520: 63 65 61 35 37 33 66 33 39 34 30 61 39 34 66 38  cea573f3940a94f8
5530: 32 35 31 32 38 63 66 34 32 30 39 62 65 61 62 62  25128cf4209beabb
5540: 34 65 38 7d 0a 0a 74 65 73 74 20 52 46 43 36 32  4e8}..test RFC62
5550: 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e  34-MD-SHA256-21.
5560: 37 20 7b 54 43 31 30 5f 32 35 36 7d 20 2d 62 6f  7 {TC10_256} -bo
5570: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
5580: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5590: 64 61 74 61 20 22 5c 78 38 33 5c 78 32 36 5c 78  data "\x83\x26\x
55a0: 37 35 5c 78 34 65 5c 78 32 32 5c 78 37 37 5c 78  75\x4e\x22\x77\x
55b0: 33 37 5c 78 32 66 5c 78 34 66 5c 78 63 31 5c 78  37\x2f\x4f\xc1\x
55c0: 32 62 5c 78 32 30 5c 78 35 32 5c 78 37 61 5c 78  2b\x20\x52\x7a\x
55d0: 66 65 5c 78 66 30 5c 78 34 64 5c 78 38 61 5c 78  fe\xf0\x4d\x8a\x
55e0: 30 35 5c 78 36 39 5c 78 37 31 5c 78 62 31 5c 78  05\x69\x71\xb1\x
55f0: 31 61 5c 78 64 35 5c 78 37 31 5c 78 32 33 5c 78  1a\xd5\x71\x23\x
5600: 61 37 5c 78 63 31 5c 78 33 37 5c 78 37 36 5c 78  a7\xc1\x37\x76\x
5610: 30 30 5c 78 30 30 5c 78 64 37 5c 78 62 65 5c 78  00\x00\xd7\xbe\x
5620: 66 36 5c 78 66 33 5c 78 63 31 5c 78 66 37 5c 78  f6\xf3\xc1\xf7\x
5630: 61 39 5c 78 30 38 5c 78 33 61 5c 78 61 33 5c 78  a9\x08\x3a\xa3\x
5640: 39 64 5c 78 38 31 5c 78 30 64 5c 78 62 33 5c 78  9d\x81\x0d\xb3\x
5650: 31 30 5c 78 37 37 5c 78 37 64 5c 78 61 62 5c 78  10\x77\x7d\xab\x
5660: 38 62 5c 78 31 65 5c 78 37 66 5c 78 30 32 5c 78  8b\x1e\x7f\x02\x
5670: 62 38 5c 78 34 61 5c 78 32 36 5c 78 63 37 5c 78  b8\x4a\x26\xc7\x
5680: 37 33 5c 78 33 32 5c 78 35 66 5c 78 38 62 5c 78  73\x32\x5f\x8b\x
5690: 32 33 5c 78 37 34 5c 78 64 65 5c 78 37 61 5c 78  23\x74\xde\x7a\x
56a0: 34 62 5c 78 35 61 5c 78 35 38 5c 78 63 62 5c 78  4b\x5a\x58\xcb\x
56b0: 35 63 5c 78 35 63 5c 78 66 33 5c 78 35 62 5c 78  5c\x5c\xf3\x5b\x
56c0: 63 65 5c 78 65 36 5c 78 66 62 5c 78 39 34 5c 78  ce\xe6\xfb\x94\x
56d0: 36 65 5c 78 35 62 5c 78 64 36 5c 78 39 34 5c 78  6e\x5b\xd6\x94\x
56e0: 66 61 5c 78 35 39 5c 78 33 61 5c 78 38 62 5c 78  fa\x59\x3a\x8b\x
56f0: 65 62 5c 78 33 66 5c 78 39 64 5c 78 36 35 5c 78  eb\x3f\x9d\x65\x
5700: 39 32 5c 78 65 63 5c 78 65 64 5c 78 61 61 5c 78  92\xec\xed\xaa\x
5710: 36 36 5c 78 63 61 5c 78 38 32 5c 78 61 32 5c 78  66\xca\x82\xa2\x
5720: 39 64 5c 78 30 63 5c 78 35 31 5c 78 62 63 5c 78  9d\x0c\x51\xbc\x
5730: 66 39 5c 78 33 33 5c 78 36 32 5c 78 33 30 5c 78  f9\x33\x62\x30\x
5740: 65 35 5c 78 64 37 5c 78 38 34 5c 78 65 34 5c 78  e5\xd7\x84\xe4\x
5750: 63 30 5c 78 61 34 5c 78 33 66 5c 78 38 64 5c 78  c0\xa4\x3f\x8d\x
5760: 37 39 5c 78 61 33 5c 78 30 61 5c 78 31 36 5c 78  79\xa3\x0a\x16\x
5770: 35 63 5c 78 62 61 5c 78 62 65 5c 78 34 35 5c 78  5c\xba\xbe\x45\x
5780: 32 62 5c 78 37 37 5c 78 34 62 5c 78 39 63 5c 78  2b\x77\x4b\x9c\x
5790: 37 31 5c 78 30 39 5c 78 61 39 5c 78 37 64 5c 78  71\x09\xa9\x7d\x
57a0: 31 33 5c 78 38 66 5c 78 31 32 5c 78 39 32 5c 78  13\x8f\x12\x92\x
57b0: 32 38 5c 78 39 36 5c 78 36 66 5c 78 36 63 5c 78  28\x96\x6f\x6c\x
57c0: 30 61 5c 78 64 63 5c 78 31 30 5c 78 36 61 5c 78  0a\xdc\x10\x6a\x
57d0: 61 64 5c 78 35 61 5c 78 39 66 5c 78 64 64 5c 78  ad\x5a\x9f\xdd\x
57e0: 33 30 5c 78 38 32 5c 78 35 37 5c 78 36 39 5c 78  30\x82\x57\x69\x
57f0: 62 32 5c 78 63 36 5c 78 37 31 5c 78 61 66 5c 78  b2\xc6\x71\xaf\x
5800: 36 37 5c 78 35 39 5c 78 64 66 5c 78 32 38 5c 78  67\x59\xdf\x28\x
5810: 65 62 5c 78 33 39 5c 78 33 64 5c 78 35 34 5c 78  eb\x39\x3d\x54\x
5820: 64 36 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  d6".    } -resul
5830: 74 20 7b 39 37 64 62 63 61 37 64 66 34 36 64 36  t {97dbca7df46d6
5840: 32 63 38 61 34 32 32 63 39 34 31 64 64 37 65 38  2c8a422c941dd7e8
5850: 33 35 62 38 61 64 33 33 36 31 37 36 33 66 37 65  35b8ad3361763f7e
5860: 39 62 32 64 39 35 66 34 66 30 64 61 36 65 31 63  9b2d95f4f0da6e1c
5870: 63 62 63 7d 0a 0a 23 20 52 46 43 20 34 32 33 31  cbc}..# RFC 4231
5880: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54   HMAC Examples T
5890: 65 73 74 20 43 61 73 65 20 23 31 0a 73 65 74 20  est Case #1.set 
58a0: 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  key [binary deco
58b0: 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72  de hex [string r
58c0: 65 70 65 61 74 20 22 30 62 22 20 32 30 5d 5d 0a  epeat "0b" 20]].
58d0: 73 65 74 20 64 61 74 61 20 22 48 69 20 54 68 65  set data "Hi The
58e0: 72 65 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32  re"...test RFC42
58f0: 33 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e 31  31_HMAC_TC1-22.1
5900: 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20   {sha224} -body 
5910: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
5920: 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b  digest sha224 -k
5930: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
5940: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
5950: 74 20 7b 38 39 36 66 62 31 31 32 38 61 62 62 64  t {896fb1128abbd
5960: 66 31 39 36 38 33 32 31 30 37 63 64 34 39 64 66  f196832107cd49df
5970: 33 33 66 34 37 62 34 62 31 31 36 39 39 31 32 62  33f47b4b1169912b
5980: 61 34 66 35 33 36 38 34 62 32 32 7d 0a 0a 74 65  a4f53684b22}..te
5990: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
59a0: 54 43 31 2d 32 32 2e 32 20 7b 73 68 61 32 35 36  TC1-22.2 {sha256
59b0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
59c0: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
59d0: 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20  ha256 -key $key 
59e0: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
59f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 30 33 34 34  } -result {b0344
5a00: 63 36 31 64 38 64 62 33 38 35 33 35 63 61 38 61  c61d8db38535ca8a
5a10: 66 63 65 61 66 30 62 66 31 32 62 38 38 31 64 63  fceaf0bf12b881dc
5a20: 32 30 30 63 39 38 33 33 64 61 37 32 36 65 39 33  200c9833da726e93
5a30: 37 36 63 32 65 33 32 63 66 66 37 7d 0a 0a 74 65  76c2e32cff7}..te
5a40: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
5a50: 54 43 31 2d 32 32 2e 33 20 7b 73 68 61 33 38 34  TC1-22.3 {sha384
5a60: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
5a70: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
5a80: 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20  ha384 -key $key 
5a90: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
5aa0: 7d 20 2d 72 65 73 75 6c 74 20 7b 61 66 64 30 33  } -result {afd03
5ab0: 39 34 34 64 38 34 38 39 35 36 32 36 62 30 38 32  944d84895626b082
5ac0: 35 66 34 61 62 34 36 39 30 37 66 31 35 66 39 64  5f4ab46907f15f9d
5ad0: 61 64 62 65 34 31 30 31 65 63 36 38 32 61 61 30  adbe4101ec682aa0
5ae0: 33 34 63 37 63 65 62 63 35 39 63 66 61 65 61 39  34c7cebc59cfaea9
5af0: 65 61 39 30 37 36 65 64 65 37 66 34 61 66 31 35  ea9076ede7f4af15
5b00: 32 65 38 62 32 66 61 39 63 62 36 7d 0a 0a 74 65  2e8b2fa9cb6}..te
5b10: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
5b20: 54 43 31 2d 32 32 2e 34 20 7b 73 68 61 35 31 32  TC1-22.4 {sha512
5b30: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
5b40: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
5b50: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20  ha512 -key $key 
5b60: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
5b70: 7d 20 2d 72 65 73 75 6c 74 20 7b 38 37 61 61 37  } -result {87aa7
5b80: 63 64 65 61 35 65 66 36 31 39 64 34 66 66 30 62  cdea5ef619d4ff0b
5b90: 34 32 34 31 61 31 64 36 63 62 30 32 33 37 39 66  4241a1d6cb02379f
5ba0: 34 65 32 63 65 34 65 63 32 37 38 37 61 64 30 62  4e2ce4ec2787ad0b
5bb0: 33 30 35 34 35 65 31 37 63 64 65 64 61 61 38 33  30545e17cdedaa83
5bc0: 33 62 37 64 36 62 38 61 37 30 32 30 33 38 62 32  3b7d6b8a702038b2
5bd0: 37 34 65 61 65 61 33 66 34 65 34 62 65 39 64 39  74eaea3f4e4be9d9
5be0: 31 34 65 65 62 36 31 66 31 37 30 32 65 36 39 36  14eeb61f1702e696
5bf0: 63 32 30 33 61 31 32 36 38 35 34 7d 0a 0a 23 20  c203a126854}..# 
5c00: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
5c10: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
5c20: 20 23 32 20 2d 20 54 65 73 74 20 77 69 74 68 20   #2 - Test with 
5c30: 61 20 6b 65 79 20 73 68 6f 72 74 65 72 20 74 68  a key shorter th
5c40: 61 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  an the length of
5c50: 20 74 68 65 20 48 4d 41 43 20 6f 75 74 70 75 74   the HMAC output
5c60: 2e 0a 73 65 74 20 6b 65 79 20 22 4a 65 66 65 22  ..set key "Jefe"
5c70: 0a 73 65 74 20 64 61 74 61 20 22 77 68 61 74 20  .set data "what 
5c80: 64 6f 20 79 61 20 77 61 6e 74 20 66 6f 72 20 6e  do ya want for n
5c90: 6f 74 68 69 6e 67 3f 22 0a 0a 0a 74 65 73 74 20  othing?"...test 
5ca0: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 32  RFC4231_HMAC_TC2
5cb0: 2d 32 33 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d  -23.1 {sha224} -
5cc0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
5cd0: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32  mac -digest sha2
5ce0: 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  24 -key $key -da
5cf0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
5d00: 72 65 73 75 6c 74 20 7b 61 33 30 65 30 31 30 39  result {a30e0109
5d10: 38 62 63 36 64 62 62 66 34 35 36 39 30 66 33 61  8bc6dbbf45690f3a
5d20: 37 65 39 65 36 64 30 66 38 62 62 65 61 32 61 33  7e9e6d0f8bbea2a3
5d30: 39 65 36 31 34 38 30 30 38 66 64 30 35 65 34 34  9e6148008fd05e44
5d40: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
5d50: 48 4d 41 43 5f 54 43 32 2d 32 33 2e 32 20 7b 73  HMAC_TC2-23.2 {s
5d60: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
5d70: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
5d80: 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20  est sha256 -key 
5d90: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
5da0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5db0: 35 62 64 63 63 31 34 36 62 66 36 30 37 35 34 65  5bdcc146bf60754e
5dc0: 36 61 30 34 32 34 32 36 30 38 39 35 37 35 63 37  6a042426089575c7
5dd0: 35 61 30 30 33 66 30 38 39 64 32 37 33 39 38 33  5a003f089d273983
5de0: 39 64 65 63 35 38 62 39 36 34 65 63 33 38 34 33  9dec58b964ec3843
5df0: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
5e00: 48 4d 41 43 5f 54 43 32 2d 32 33 2e 33 20 7b 73  HMAC_TC2-23.3 {s
5e10: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
5e20: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
5e30: 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20  est sha384 -key 
5e40: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
5e50: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5e60: 61 66 34 35 64 32 65 33 37 36 34 38 34 30 33 31  af45d2e376484031
5e70: 36 31 37 66 37 38 64 32 62 35 38 61 36 62 31 62  617f78d2b58a6b1b
5e80: 39 63 37 65 66 34 36 34 66 35 61 30 31 62 34 37  9c7ef464f5a01b47
5e90: 65 34 32 65 63 33 37 33 36 33 32 32 34 34 35 65  e42ec3736322445e
5ea0: 38 65 32 32 34 30 63 61 35 65 36 39 65 32 63 37  8e2240ca5e69e2c7
5eb0: 38 62 33 32 33 39 65 63 66 61 62 32 31 36 34 39  8b3239ecfab21649
5ec0: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
5ed0: 48 4d 41 43 5f 54 43 32 2d 32 33 2e 34 20 7b 73  HMAC_TC2-23.4 {s
5ee0: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
5ef0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
5f00: 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20  est sha512 -key 
5f10: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
5f20: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5f30: 31 36 34 62 37 61 37 62 66 63 66 38 31 39 65 32  164b7a7bfcf819e2
5f40: 65 33 39 35 66 62 65 37 33 62 35 36 65 30 61 33  e395fbe73b56e0a3
5f50: 38 37 62 64 36 34 32 32 32 65 38 33 31 66 64 36  87bd64222e831fd6
5f60: 31 30 32 37 30 63 64 37 65 61 32 35 30 35 35 34  10270cd7ea250554
5f70: 39 37 35 38 62 66 37 35 63 30 35 61 39 39 34 61  9758bf75c05a994a
5f80: 36 64 30 33 34 66 36 35 66 38 66 30 65 36 66 64  6d034f65f8f0e6fd
5f90: 63 61 65 61 62 31 61 33 34 64 34 61 36 62 34 62  caeab1a34d4a6b4b
5fa0: 36 33 36 65 30 37 30 61 33 38 62 63 65 37 33 37  636e070a38bce737
5fb0: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d  }..# RFC 4231 HM
5fc0: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74  AC Examples Test
5fd0: 20 43 61 73 65 20 23 33 20 2d 20 54 65 73 74 20   Case #3 - Test 
5fe0: 77 69 74 68 20 61 20 63 6f 6d 62 69 6e 65 64 20  with a combined 
5ff0: 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20 61 6e  length of key an
6000: 64 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6c  d data that is l
6010: 61 72 67 65 72 20 74 68 61 6e 20 36 34 20 62 79  arger than 64 by
6020: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a  tes (= block-siz
6030: 65 20 6f 66 20 53 48 41 2d 32 32 34 20 61 6e 64  e of SHA-224 and
6040: 20 53 48 41 2d 32 35 36 29 2e 0a 73 65 74 20 6b   SHA-256)..set k
6050: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
6060: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
6070: 70 65 61 74 20 22 61 61 22 20 32 30 5d 5d 0a 73  peat "aa" 20]].s
6080: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
6090: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69  decode hex [stri
60a0: 6e 67 20 72 65 70 65 61 74 20 22 64 64 22 20 35  ng repeat "dd" 5
60b0: 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34 32  0]]...test RFC42
60c0: 33 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e 31  31_HMAC_TC3-24.1
60d0: 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20   {sha224} -body 
60e0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
60f0: 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b  digest sha224 -k
6100: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
6110: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
6120: 74 20 7b 37 66 62 33 63 62 33 35 38 38 63 36 63  t {7fb3cb3588c6c
6130: 31 66 36 66 66 61 39 36 39 34 64 37 64 36 61 64  1f6ffa9694d7d6ad
6140: 32 36 34 39 33 36 35 62 30 63 31 66 36 35 64 36  2649365b0c1f65d6
6150: 39 64 31 65 63 38 33 33 33 65 61 7d 0a 0a 74 65  9d1ec8333ea}..te
6160: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6170: 54 43 33 2d 32 34 2e 32 20 7b 73 68 61 32 35 36  TC3-24.2 {sha256
6180: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
6190: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
61a0: 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20  ha256 -key $key 
61b0: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
61c0: 7d 20 2d 72 65 73 75 6c 74 20 7b 37 37 33 65 61  } -result {773ea
61d0: 39 31 65 33 36 38 30 30 65 34 36 38 35 34 64 62  91e36800e46854db
61e0: 38 65 62 64 30 39 31 38 31 61 37 32 39 35 39 30  8ebd09181a729590
61f0: 39 38 62 33 65 66 38 63 31 32 32 64 39 36 33 35  98b3ef8c122d9635
6200: 35 31 34 63 65 64 35 36 35 66 65 7d 0a 0a 74 65  514ced565fe}..te
6210: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6220: 54 43 33 2d 32 34 2e 33 20 7b 73 68 61 33 38 34  TC3-24.3 {sha384
6230: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
6240: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
6250: 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20  ha384 -key $key 
6260: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
6270: 7d 20 2d 72 65 73 75 6c 74 20 7b 38 38 30 36 32  } -result {88062
6280: 36 30 38 64 33 65 36 61 64 38 61 30 61 61 32 61  608d3e6ad8a0aa2a
6290: 63 65 30 31 34 63 38 61 38 36 66 30 61 61 36 33  ce014c8a86f0aa63
62a0: 35 64 39 34 37 61 63 39 66 65 62 65 38 33 65 66  5d947ac9febe83ef
62b0: 34 65 35 35 39 36 36 31 34 34 62 32 61 35 61 62  4e55966144b2a5ab
62c0: 33 39 64 63 31 33 38 31 34 62 39 34 65 33 61 62  39dc13814b94e3ab
62d0: 36 65 31 30 31 61 33 34 66 32 37 7d 0a 0a 74 65  6e101a34f27}..te
62e0: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
62f0: 54 43 33 2d 32 34 2e 34 20 7b 73 68 61 35 31 32  TC3-24.4 {sha512
6300: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
6310: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
6320: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20  ha512 -key $key 
6330: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
6340: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 37 33 62  } -result {fa73b
6350: 30 30 38 39 64 35 36 61 32 38 34 65 66 62 30 66  0089d56a284efb0f
6360: 30 37 35 36 63 38 39 30 62 65 39 62 31 62 35 64  0756c890be9b1b5d
6370: 62 64 64 38 65 65 38 31 61 33 36 35 35 66 38 33  bdd8ee81a3655f83
6380: 65 33 33 62 32 32 37 39 64 33 39 62 66 33 65 38  e33b2279d39bf3e8
6390: 34 38 32 37 39 61 37 32 32 63 38 30 36 62 34 38  48279a722c806b48
63a0: 35 61 34 37 65 36 37 63 38 30 37 62 39 34 36 61  5a47e67c807b946a
63b0: 33 33 37 62 65 65 38 39 34 32 36 37 34 32 37 38  337bee8942674278
63c0: 38 35 39 65 31 33 32 39 32 66 62 7d 0a 0a 23 20  859e13292fb}..# 
63d0: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
63e0: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
63f0: 20 23 34 20 2d 20 54 65 73 74 20 77 69 74 68 20   #4 - Test with 
6400: 61 20 63 6f 6d 62 69 6e 65 64 20 6c 65 6e 67 74  a combined lengt
6410: 68 20 6f 66 20 6b 65 79 20 61 6e 64 20 64 61 74  h of key and dat
6420: 61 20 74 68 61 74 20 69 73 20 6c 61 72 67 65 72  a that is larger
6430: 20 74 68 61 6e 20 36 34 20 62 79 74 65 73 20 28   than 64 bytes (
6440: 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20  = block-size of 
6450: 53 48 41 2d 32 32 34 20 61 6e 64 20 53 48 41 2d  SHA-224 and SHA-
6460: 32 35 36 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62  256)..set key [b
6470: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
6480: 20 22 30 31 30 32 30 33 30 34 30 35 30 36 30 37   "01020304050607
6490: 30 38 30 39 30 61 30 62 30 63 30 64 30 65 30 66  08090a0b0c0d0e0f
64a0: 31 30 31 31 31 32 31 33 31 34 31 35 31 36 31 37  1011121314151617
64b0: 31 38 31 39 22 5d 0a 73 65 74 20 64 61 74 61 20  1819"].set data 
64c0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
64d0: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  ex [string repea
64e0: 74 20 22 63 64 22 20 35 30 5d 5d 0a 0a 0a 74 65  t "cd" 50]]...te
64f0: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6500: 54 43 34 2d 32 35 2e 31 20 7b 73 68 61 32 32 34  TC4-25.1 {sha224
6510: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
6520: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
6530: 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20  ha224 -key $key 
6540: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
6550: 7d 20 2d 72 65 73 75 6c 74 20 7b 36 63 31 31 35  } -result {6c115
6560: 30 36 38 37 34 30 31 33 63 61 63 36 61 32 61 62  06874013cac6a2ab
6570: 63 31 62 62 33 38 32 36 32 37 63 65 63 36 61 39  c1bb382627cec6a9
6580: 30 64 38 36 65 66 63 30 31 32 64 65 37 61 66 65  0d86efc012de7afe
6590: 63 35 61 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  c5a}..test RFC42
65a0: 33 31 5f 48 4d 41 43 5f 54 43 34 2d 32 35 2e 32  31_HMAC_TC4-25.2
65b0: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
65c0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
65d0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b  digest sha256 -k
65e0: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
65f0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
6600: 74 20 7b 38 32 35 35 38 61 33 38 39 61 34 34 33  t {82558a389a443
6610: 63 30 65 61 34 63 63 38 31 39 38 39 39 66 32 30  c0ea4cc819899f20
6620: 38 33 61 38 35 66 30 66 61 61 33 65 35 37 38 66  83a85f0faa3e578f
6630: 38 30 37 37 61 32 65 33 66 66 34 36 37 32 39 36  8077a2e3ff467296
6640: 36 35 62 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  65b}..test RFC42
6650: 33 31 5f 48 4d 41 43 5f 54 43 34 2d 32 35 2e 33  31_HMAC_TC4-25.3
6660: 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20   {sha384} -body 
6670: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
6680: 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b  digest sha384 -k
6690: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
66a0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
66b0: 74 20 7b 33 65 38 61 36 39 62 37 37 38 33 63 32  t {3e8a69b7783c2
66c0: 35 38 35 31 39 33 33 61 62 36 32 39 30 61 66 36  5851933ab6290af6
66d0: 63 61 37 37 61 39 39 38 31 34 38 30 38 35 30 30  ca77a99814808500
66e0: 30 39 63 63 35 35 37 37 63 36 65 31 66 35 37 33  09cc5577c6e1f573
66f0: 62 34 65 36 38 30 31 64 64 32 33 63 34 61 37 64  b4e6801dd23c4a7d
6700: 36 37 39 63 63 66 38 61 33 38 36 63 36 37 34 63  679ccf8a386c674c
6710: 66 66 62 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  ffb}..test RFC42
6720: 33 31 5f 48 4d 41 43 5f 54 43 34 2d 32 35 2e 34  31_HMAC_TC4-25.4
6730: 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20   {sha512} -body 
6740: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
6750: 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b  digest sha512 -k
6760: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
6770: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
6780: 74 20 7b 62 30 62 61 34 36 35 36 33 37 34 35 38  t {b0ba465637458
6790: 63 36 39 39 30 65 35 61 38 63 35 66 36 31 64 34  c6990e5a8c5f61d4
67a0: 61 66 37 65 35 37 36 64 39 37 66 66 39 34 62 38  af7e576d97ff94b8
67b0: 37 32 64 65 37 36 66 38 30 35 30 33 36 31 65 65  72de76f8050361ee
67c0: 33 64 62 61 39 31 63 61 35 63 31 31 61 61 32 35  3dba91ca5c11aa25
67d0: 65 62 34 64 36 37 39 32 37 35 63 63 35 37 38 38  eb4d679275cc5788
67e0: 30 36 33 61 35 66 31 39 37 34 31 31 32 30 63 34  063a5f19741120c4
67f0: 66 32 64 65 32 61 64 65 62 65 62 31 30 61 32 39  f2de2adebeb10a29
6800: 38 64 64 7d 0a 0a 23 20 52 46 43 20 34 32 33 31  8dd}..# RFC 4231
6810: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54   HMAC Examples T
6820: 65 73 74 20 43 61 73 65 20 23 35 20 2d 20 54 65  est Case #5 - Te
6830: 73 74 20 77 69 74 68 20 61 20 74 72 75 6e 63 61  st with a trunca
6840: 74 69 6f 6e 20 6f 66 20 6f 75 74 70 75 74 20 74  tion of output t
6850: 6f 20 31 32 38 20 62 69 74 73 2e 0a 73 65 74 20  o 128 bits..set 
6860: 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  key [binary deco
6870: 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72  de hex [string r
6880: 65 70 65 61 74 20 22 30 63 22 20 32 30 5d 5d 0a  epeat "0c" 20]].
6890: 73 65 74 20 64 61 74 61 20 22 54 65 73 74 20 57  set data "Test W
68a0: 69 74 68 20 54 72 75 6e 63 61 74 69 6f 6e 22 0a  ith Truncation".
68b0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
68c0: 4d 41 43 5f 54 43 35 2d 32 36 2e 31 20 7b 73 68  MAC_TC5-26.1 {sh
68d0: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 73  a224} -body {..s
68e0: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74  tring range [::t
68f0: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
6900: 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65   sha224 -key $ke
6910: 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30  y -data $data] 0
6920: 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   31.    } -resul
6930: 74 20 7b 30 65 32 61 65 61 36 38 61 39 30 63 38  t {0e2aea68a90c8
6940: 64 33 37 63 39 38 38 62 63 64 62 39 66 63 61 36  d37c988bcdb9fca6
6950: 66 61 38 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  fa8}..test RFC42
6960: 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e 32  31_HMAC_TC5-26.2
6970: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
6980: 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20  {..string range 
6990: 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  [::tls::hmac -di
69a0: 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79  gest sha256 -key
69b0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
69c0: 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72  a] 0 31.    } -r
69d0: 65 73 75 6c 74 20 7b 61 33 62 36 31 36 37 34 37  esult {a3b616747
69e0: 33 31 30 30 65 65 30 36 65 30 63 37 39 36 63 32  3100ee06e0c796c2
69f0: 39 35 35 35 35 32 62 7d 0a 0a 74 65 73 74 20 52  955552b}..test R
6a00: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d  FC4231_HMAC_TC5-
6a10: 32 36 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  26.3 {sha384} -b
6a20: 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61  ody {..string ra
6a30: 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63  nge [::tls::hmac
6a40: 20 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20   -digest sha384 
6a50: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6a60: 24 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20  $data] 0 31.    
6a70: 7d 20 2d 72 65 73 75 6c 74 20 7b 33 61 62 66 33  } -result {3abf3
6a80: 34 63 33 35 30 33 62 32 61 32 33 61 34 36 65 66  4c3503b2a23a46ef
6a90: 63 36 31 39 62 61 65 66 38 39 37 7d 0a 0a 74 65  c619baef897}..te
6aa0: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6ab0: 54 43 35 2d 32 36 2e 34 20 7b 73 68 61 35 31 32  TC5-26.4 {sha512
6ac0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e  } -body {..strin
6ad0: 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a  g range [::tls::
6ae0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6af0: 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  512 -key $key -d
6b00: 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31 0a  ata $data] 0 31.
6b10: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34      } -result {4
6b20: 31 35 66 61 64 36 32 37 31 35 38 30 61 35 33 31  15fad6271580a531
6b30: 64 34 31 37 39 62 63 38 39 31 64 38 37 61 36 7d  d4179bc891d87a6}
6b40: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
6b50: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
6b60: 43 61 73 65 20 23 36 20 2d 20 54 65 73 74 20 77  Case #6 - Test w
6b70: 69 74 68 20 61 20 6b 65 79 20 6c 61 72 67 65 72  ith a key larger
6b80: 20 74 68 61 6e 20 31 32 38 20 62 79 74 65 73 20   than 128 bytes 
6b90: 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66  (= block-size of
6ba0: 20 53 48 41 2d 33 38 34 20 61 6e 64 20 53 48 41   SHA-384 and SHA
6bb0: 2d 35 31 32 29 2e 0a 73 65 74 20 6b 65 79 20 5b  -512)..set key [
6bc0: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
6bd0: 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  x [string repeat
6be0: 20 22 61 61 22 20 31 33 31 5d 5d 0a 73 65 74 20   "aa" 131]].set 
6bf0: 64 61 74 61 20 22 54 65 73 74 20 55 73 69 6e 67  data "Test Using
6c00: 20 4c 61 72 67 65 72 20 54 68 61 6e 20 42 6c 6f   Larger Than Blo
6c10: 63 6b 2d 53 69 7a 65 20 4b 65 79 20 2d 20 48 61  ck-Size Key - Ha
6c20: 73 68 20 4b 65 79 20 46 69 72 73 74 22 0a 0a 0a  sh Key First"...
6c30: 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41  test RFC4231_HMA
6c40: 43 5f 54 43 36 2d 32 37 2e 31 20 7b 73 68 61 32  C_TC6-27.1 {sha2
6c50: 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  24} -body {..::t
6c60: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
6c70: 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65   sha224 -key $ke
6c80: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
6c90: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 35 65    } -result {95e
6ca0: 39 61 30 64 62 39 36 32 30 39 35 61 64 61 65 62  9a0db962095adaeb
6cb0: 65 39 62 32 64 36 66 30 64 62 63 65 32 64 34 39  e9b2d6f0dbce2d49
6cc0: 39 66 31 31 32 66 32 64 32 62 37 32 37 33 66 61  9f112f2d2b7273fa
6cd0: 36 38 37 30 65 7d 0a 0a 74 65 73 74 20 52 46 43  6870e}..test RFC
6ce0: 34 32 33 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37  4231_HMAC_TC6-27
6cf0: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64  .2 {sha256} -bod
6d00: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
6d10: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
6d20: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6d30: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
6d40: 75 6c 74 20 7b 36 30 65 34 33 31 35 39 31 65 65  ult {60e431591ee
6d50: 30 62 36 37 66 30 64 38 61 32 36 61 61 63 62 66  0b67f0d8a26aacbf
6d60: 35 62 37 37 66 38 65 30 62 63 36 32 31 33 37 32  5b77f8e0bc621372
6d70: 38 63 35 31 34 30 35 34 36 30 34 30 66 30 65 65  8c5140546040f0ee
6d80: 33 37 66 35 34 7d 0a 0a 74 65 73 74 20 52 46 43  37f54}..test RFC
6d90: 34 32 33 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37  4231_HMAC_TC6-27
6da0: 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64  .3 {sha384} -bod
6db0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
6dc0: 20 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20   -digest sha384 
6dd0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6de0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
6df0: 75 6c 74 20 7b 34 65 63 65 30 38 34 34 38 35 38  ult {4ece0844858
6e00: 31 33 65 39 30 38 38 64 32 63 36 33 61 30 34 31  13e9088d2c63a041
6e10: 62 63 35 62 34 34 66 39 65 66 31 30 31 32 61 32  bc5b44f9ef1012a2
6e20: 62 35 38 38 66 33 63 64 31 31 66 30 35 30 33 33  b588f3cd11f05033
6e30: 61 63 34 63 36 30 63 32 65 66 36 61 62 34 30 33  ac4c60c2ef6ab403
6e40: 30 66 65 38 32 39 36 32 34 38 64 66 31 36 33 66  0fe8296248df163f
6e50: 34 34 39 35 32 7d 0a 0a 74 65 73 74 20 52 46 43  44952}..test RFC
6e60: 34 32 33 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37  4231_HMAC_TC6-27
6e70: 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64  .4 {sha512} -bod
6e80: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
6e90: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20   -digest sha512 
6ea0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6eb0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
6ec0: 75 6c 74 20 7b 38 30 62 32 34 32 36 33 63 37 63  ult {80b24263c7c
6ed0: 31 61 33 65 62 62 37 31 34 39 33 63 31 64 64 37  1a3ebb71493c1dd7
6ee0: 62 65 38 62 34 39 62 34 36 64 31 66 34 31 62 34  be8b49b46d1f41b4
6ef0: 61 65 65 63 31 31 32 31 62 30 31 33 37 38 33 66  aeec1121b013783f
6f00: 38 66 33 35 32 36 62 35 36 64 30 33 37 65 30 35  8f3526b56d037e05
6f10: 66 32 35 39 38 62 64 30 66 64 32 32 31 35 64 36  f2598bd0fd2215d6
6f20: 61 31 65 35 32 39 35 65 36 34 66 37 33 66 36 33  a1e5295e64f73f63
6f30: 66 30 61 65 63 38 62 39 31 35 61 39 38 35 64 37  f0aec8b915a985d7
6f40: 38 36 35 39 38 7d 0a 0a 23 20 52 46 43 20 34 32  86598}..# RFC 42
6f50: 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73  31 HMAC Examples
6f60: 20 54 65 73 74 20 43 61 73 65 20 23 37 20 2d 20   Test Case #7 - 
6f70: 54 65 73 74 20 77 69 74 68 20 61 20 6b 65 79 20  Test with a key 
6f80: 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 69 73  and data that is
6f90: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31 32 38   larger than 128
6fa0: 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d   bytes (= block-
6fb0: 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38 34 20  size of SHA-384 
6fc0: 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a 73 65  and SHA-512)..se
6fd0: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65  t key [binary de
6fe0: 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67  code hex [string
6ff0: 20 72 65 70 65 61 74 20 22 61 61 22 20 31 33 31   repeat "aa" 131
7000: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 68 69  ]].set data "Thi
7010: 73 20 69 73 20 61 20 74 65 73 74 20 75 73 69 6e  s is a test usin
7020: 67 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e 20  g a larger than 
7030: 62 6c 6f 63 6b 2d 73 69 7a 65 20 6b 65 79 20 61  block-size key a
7040: 6e 64 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e  nd a larger than
7050: 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 64 61 74 61   block-size data
7060: 2e 20 54 68 65 20 6b 65 79 20 6e 65 65 64 73 20  . The key needs 
7070: 74 6f 20 62 65 20 68 61 73 68 65 64 20 62 65 66  to be hashed bef
7080: 6f 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 62  ore being used b
7090: 79 20 74 68 65 20 48 4d 41 43 20 61 6c 67 6f 72  y the HMAC algor
70a0: 69 74 68 6d 2e 22 0a 0a 0a 74 65 73 74 20 52 46  ithm."...test RF
70b0: 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d 32  C4231_HMAC_TC7-2
70c0: 38 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f  8.1 {sha224} -bo
70d0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
70e0: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34  c -digest sha224
70f0: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
7100: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
7110: 73 75 6c 74 20 7b 33 61 38 35 34 31 36 36 61 63  sult {3a854166ac
7120: 35 64 39 66 30 32 33 66 35 34 64 35 31 37 64 30  5d9f023f54d517d0
7130: 62 33 39 64 62 64 39 34 36 37 37 30 64 62 39 63  b39dbd946770db9c
7140: 32 62 39 35 63 39 66 36 66 35 36 35 64 31 7d 0a  2b95c9f6f565d1}.
7150: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
7160: 41 43 5f 54 43 37 2d 32 38 2e 32 20 7b 73 68 61  AC_TC7-28.2 {sha
7170: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  256} -body {..::
7180: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
7190: 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b  t sha256 -key $k
71a0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
71b0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 62     } -result {9b
71c0: 30 39 66 66 61 37 31 62 39 34 32 66 63 62 32 37  09ffa71b942fcb27
71d0: 36 33 35 66 62 63 64 35 62 30 65 39 34 34 62 66  635fbcd5b0e944bf
71e0: 64 63 36 33 36 34 34 66 30 37 31 33 39 33 38 61  dc63644f0713938a
71f0: 37 66 35 31 35 33 35 63 33 61 33 35 65 32 7d 0a  7f51535c3a35e2}.
7200: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
7210: 41 43 5f 54 43 37 2d 32 38 2e 33 20 7b 73 68 61  AC_TC7-28.3 {sha
7220: 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  384} -body {..::
7230: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
7240: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b  t sha384 -key $k
7250: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
7260: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 36     } -result {66
7270: 31 37 31 37 38 65 39 34 31 66 30 32 30 64 33 35  17178e941f020d35
7280: 31 65 32 66 32 35 34 65 38 66 64 33 32 63 36 30  1e2f254e8fd32c60
7290: 32 34 32 30 66 65 62 30 62 38 66 62 39 61 64 63  2420feb0b8fb9adc
72a0: 63 65 62 62 38 32 34 36 31 65 39 39 63 35 61 36  cebb82461e99c5a6
72b0: 37 38 63 63 33 31 65 37 39 39 31 37 36 64 33 38  78cc31e799176d38
72c0: 36 30 65 36 31 31 30 63 34 36 35 32 33 65 7d 0a  60e6110c46523e}.
72d0: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
72e0: 41 43 5f 54 43 37 2d 32 38 2e 34 20 7b 73 68 61  AC_TC7-28.4 {sha
72f0: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  512} -body {..::
7300: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
7310: 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b  t sha512 -key $k
7320: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
7330: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 33     } -result {e3
7340: 37 62 36 61 37 37 35 64 63 38 37 64 62 61 61 34  7b6a775dc87dbaa4
7350: 64 66 61 39 66 39 36 65 35 65 33 66 66 64 64 65  dfa9f96e5e3ffdde
7360: 62 64 37 31 66 38 38 36 37 32 38 39 38 36 35 64  bd71f8867289865d
7370: 66 35 61 33 32 64 32 30 63 64 63 39 34 34 62 36  f5a32d20cdc944b6
7380: 30 32 32 63 61 63 33 63 34 39 38 32 62 31 30 64  022cac3c4982b10d
7390: 35 65 65 62 35 35 63 33 65 34 64 65 31 35 31 33  5eeb55c3e4de1513
73a0: 34 36 37 36 66 62 36 64 65 30 34 34 36 30 36 35  4676fb6de0446065
73b0: 63 39 37 34 34 30 66 61 38 63 36 61 35 38 7d 0a  c97440fa8c6a58}.
73c0: 0a 23 20 4e 49 53 54 20 38 30 30 2d 33 38 62 20  .# NIST 800-38b 
73d0: 52 65 63 6f 6d 6d 65 6e 64 61 74 69 6f 6e 20 66  Recommendation f
73e0: 6f 72 20 42 6c 6f 63 6b 20 43 69 70 68 65 72 20  or Block Cipher 
73f0: 4d 6f 64 65 73 20 6f 66 20 4f 70 65 72 61 74 69  Modes of Operati
7400: 6f 6e 3a 20 54 68 65 20 43 4d 41 43 20 4d 6f 64  on: The CMAC Mod
7410: 65 20 66 6f 72 20 41 75 74 68 65 6e 74 69 63 61  e for Authentica
7420: 74 69 6f 6e 0a 23 20 41 45 53 2d 31 32 38 0a 73  tion.# AES-128.s
7430: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
7440: 65 63 6f 64 65 20 68 65 78 20 22 32 62 37 65 31  ecode hex "2b7e1
7450: 35 31 36 32 38 61 65 64 32 61 36 61 62 66 37 31  51628aed2a6abf71
7460: 35 38 38 30 39 63 66 34 66 33 63 22 5d 0a 0a 0a  58809cf4f3c"]...
7470: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7480: 2d 41 45 53 31 32 38 2d 32 39 2e 31 20 7b 6c 65  -AES128-29.1 {le
7490: 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  n=0} -body {..::
74a0: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
74b0: 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b  r aes-128-cbc -k
74c0: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 22 22  ey $key -data ""
74d0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
74e0: 62 62 31 64 36 39 32 39 65 39 35 39 33 37 32 38  bb1d6929e9593728
74f0: 37 66 61 33 37 64 31 32 39 62 37 35 36 37 34 36  7fa37d129b756746
7500: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
7510: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7520: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
7530: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 22  93d7e117393172a"
7540: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
7550: 33 38 62 2d 41 45 53 31 32 38 2d 32 39 2e 32 20  38b-AES128-29.2 
7560: 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20  {len=128} -body 
7570: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
7580: 63 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d 63  cipher aes-128-c
7590: 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  bc -key $key -da
75a0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
75b0: 72 65 73 75 6c 74 20 7b 30 37 30 61 31 36 62 34  result {070a16b4
75c0: 36 62 34 64 34 31 34 34 66 37 39 62 64 64 39 64  6b4d4144f79bdd9d
75d0: 64 30 34 61 32 38 37 63 7d 0a 73 65 74 20 64 61  d04a287c}.set da
75e0: 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ta [binary decod
75f0: 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32  e hex "6bc1bee22
7600: 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37  e409f96e93d7e117
7610: 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37 31  393172aae2d8a571
7620: 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63 34  e03ac9c9eb76fac4
7630: 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36 61  5af8e5130c81c46a
7640: 33 35 63 65 34 31 31 22 5d 0a 0a 74 65 73 74 20  35ce411"]..test 
7650: 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 31  NIST800-38b-AES1
7660: 32 38 2d 32 39 2e 33 20 7b 6c 65 6e 3d 33 32 30  28-29.3 {len=320
7670: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7680: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7690: 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 20  es-128-cbc -key 
76a0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
76b0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
76c0: 64 66 61 36 36 37 34 37 64 65 39 61 65 36 33 30  dfa66747de9ae630
76d0: 33 30 63 61 33 32 36 31 31 34 39 37 63 38 32 37  30ca32611497c827
76e0: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
76f0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7700: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
7710: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61  93d7e117393172aa
7720: 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39  e2d8a571e03ac9c9
7730: 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33  eb76fac45af8e513
7740: 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31 65  0c81c46a35ce411e
7750: 35 66 62 63 31 31 39 31 61 30 61 35 32 65 66 66  5fbc1191a0a52eff
7760: 36 39 66 32 34 34 35 64 66 34 66 39 62 31 37 61  69f2445df4f9b17a
7770: 64 32 62 34 31 37 62 65 36 36 63 33 37 31 30 22  d2b417be66c3710"
7780: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
7790: 33 38 62 2d 41 45 53 31 32 38 2d 32 39 2e 34 20  38b-AES128-29.4 
77a0: 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20  {len=512} -body 
77b0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
77c0: 63 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d 63  cipher aes-128-c
77d0: 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  bc -key $key -da
77e0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
77f0: 72 65 73 75 6c 74 20 7b 35 31 66 30 62 65 62 66  result {51f0bebf
7800: 37 65 33 62 39 64 39 32 66 63 34 39 37 34 31 37  7e3b9d92fc497417
7810: 37 39 33 36 33 63 66 65 7d 0a 0a 23 20 41 45 53  79363cfe}..# AES
7820: 2d 31 39 32 0a 73 65 74 20 6b 65 79 20 5b 62 69  -192.set key [bi
7830: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
7840: 22 38 65 37 33 62 30 66 37 64 61 30 65 36 34 35  "8e73b0f7da0e645
7850: 32 63 38 31 30 66 33 32 62 38 30 39 30 37 39 65  2c810f32b809079e
7860: 35 36 32 66 38 65 61 64 32 35 32 32 63 36 62 37  562f8ead2522c6b7
7870: 62 22 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38  b"]...test NIST8
7880: 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 2d 33  00-38b-AES-192-3
7890: 30 2e 31 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64  0.1 {len=0} -bod
78a0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
78b0: 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31 39 32   -cipher aes-192
78c0: 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d  -cbc -key $key -
78d0: 64 61 74 61 20 22 22 0a 20 20 20 20 7d 20 2d 72  data "".    } -r
78e0: 65 73 75 6c 74 20 7b 64 31 37 64 64 66 34 36 61  esult {d17ddf46a
78f0: 64 61 61 63 64 65 35 33 31 63 61 63 34 38 33 64  daacde531cac483d
7900: 65 37 61 39 33 36 37 7d 0a 73 65 74 20 64 61 74  e7a9367}.set dat
7910: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7920: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
7930: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
7940: 39 33 31 37 32 61 22 5d 0a 0a 74 65 73 74 20 4e  93172a"]..test N
7950: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31  IST800-38b-AES-1
7960: 39 32 2d 33 30 2e 32 20 7b 6c 65 6e 3d 31 32 38  92-30.2 {len=128
7970: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7980: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7990: 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20  es-192-cbc -key 
79a0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
79b0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
79c0: 39 65 39 39 61 37 62 66 33 31 65 37 31 30 39 30  9e99a7bf31e71090
79d0: 30 36 36 32 66 36 35 65 36 31 37 63 35 31 38 34  0662f65e617c5184
79e0: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
79f0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7a00: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
7a10: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61  93d7e117393172aa
7a20: 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39  e2d8a571e03ac9c9
7a30: 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33  eb76fac45af8e513
7a40: 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31 22  0c81c46a35ce411"
7a50: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
7a60: 33 38 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 33  38b-AES-192-30.3
7a70: 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79   {len=320} -body
7a80: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
7a90: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d  -cipher aes-192-
7aa0: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
7ab0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
7ac0: 2d 72 65 73 75 6c 74 20 7b 38 61 31 64 65 35 62  -result {8a1de5b
7ad0: 65 32 65 62 33 31 61 61 64 30 38 39 61 38 32 65  e2eb31aad089a82e
7ae0: 36 65 65 39 30 38 62 30 65 7d 0a 73 65 74 20 64  6ee908b0e}.set d
7af0: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
7b00: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32  de hex "6bc1bee2
7b10: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31  2e409f96e93d7e11
7b20: 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37  7393172aae2d8a57
7b30: 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63  1e03ac9c9eb76fac
7b40: 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36  45af8e5130c81c46
7b50: 61 33 35 63 65 34 31 31 65 35 66 62 63 31 31 39  a35ce411e5fbc119
7b60: 31 61 30 61 35 32 65 66 66 36 39 66 32 34 34 35  1a0a52eff69f2445
7b70: 64 66 34 66 39 62 31 37 61 64 32 62 34 31 37 62  df4f9b17ad2b417b
7b80: 65 36 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74  e66c3710"]..test
7b90: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
7ba0: 2d 31 39 32 2d 33 30 2e 34 20 7b 6c 65 6e 3d 35  -192-30.4 {len=5
7bb0: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  12} -body {..::t
7bc0: 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72  ls::cmac -cipher
7bd0: 20 61 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65   aes-192-cbc -ke
7be0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
7bf0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
7c00: 20 7b 61 31 64 35 64 66 30 65 65 64 37 39 30 66   {a1d5df0eed790f
7c10: 37 39 34 64 37 37 35 38 39 36 35 39 66 33 39 61  794d77589659f39a
7c20: 31 31 7d 0a 0a 23 20 41 45 53 2d 32 35 36 0a 73  11}..# AES-256.s
7c30: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
7c40: 65 63 6f 64 65 20 68 65 78 20 22 36 30 33 64 65  ecode hex "603de
7c50: 62 31 30 31 35 63 61 37 31 62 65 32 62 37 33 61  b1015ca71be2b73a
7c60: 65 66 30 38 35 37 64 37 37 38 31 31 66 33 35 32  ef0857d77811f352
7c70: 63 30 37 33 62 36 31 30 38 64 37 32 64 39 38 31  c073b6108d72d981
7c80: 30 61 33 30 39 31 34 64 66 66 34 22 5d 0a 0a 0a  0a30914dff4"]...
7c90: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7ca0: 2d 41 45 53 2d 32 35 36 2d 33 31 2e 31 20 7b 6c  -AES-256-31.1 {l
7cb0: 65 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  en=0} -body {..:
7cc0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
7cd0: 65 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d  er aes-256-cbc -
7ce0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 22  key $key -data "
7cf0: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
7d00: 7b 30 32 38 39 36 32 66 36 31 62 37 62 66 38 39  {028962f61b7bf89
7d10: 65 66 63 36 62 35 35 31 66 34 36 36 37 64 39 38  efc6b551f4667d98
7d20: 33 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  3}.set data [bin
7d30: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
7d40: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36  6bc1bee22e409f96
7d50: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61  e93d7e117393172a
7d60: 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  "]..test NIST800
7d70: 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e  -38b-AES-256-31.
7d80: 32 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f 64  2 {len=128} -bod
7d90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
7da0: 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35 36   -cipher aes-256
7db0: 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d  -cbc -key $key -
7dc0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
7dd0: 20 2d 72 65 73 75 6c 74 20 7b 32 38 61 37 30 32   -result {28a702
7de0: 33 66 34 35 32 65 38 66 38 32 62 64 34 62 66 32  3f452e8f82bd4bf2
7df0: 38 64 38 63 33 37 63 33 35 63 7d 0a 73 65 74 20  8d8c37c35c}.set 
7e00: 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63  data [binary dec
7e10: 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65  ode hex "6bc1bee
7e20: 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31  22e409f96e93d7e1
7e30: 31 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35  17393172aae2d8a5
7e40: 37 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61  71e03ac9c9eb76fa
7e50: 63 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34  c45af8e5130c81c4
7e60: 36 61 33 35 63 65 34 31 31 22 5d 0a 0a 74 65 73  6a35ce411"]..tes
7e70: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
7e80: 53 2d 32 35 36 2d 33 31 2e 33 20 7b 6c 65 6e 3d  S-256-31.3 {len=
7e90: 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  320} -body {..::
7ea0: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
7eb0: 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b  r aes-256-cbc -k
7ec0: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
7ed0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
7ee0: 74 20 7b 61 61 66 33 64 38 66 31 64 65 35 36 34  t {aaf3d8f1de564
7ef0: 30 63 32 33 32 66 35 62 31 36 39 62 39 63 39 31  0c232f5b169b9c91
7f00: 31 65 36 7d 0a 73 65 74 20 64 61 74 61 20 5b 62  1e6}.set data [b
7f10: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
7f20: 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39 66   "6bc1bee22e409f
7f30: 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31 37  96e93d7e11739317
7f40: 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61 63  2aae2d8a571e03ac
7f50: 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38 65  9c9eb76fac45af8e
7f60: 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65 34  5130c81c46a35ce4
7f70: 31 31 65 35 66 62 63 31 31 39 31 61 30 61 35 32  11e5fbc1191a0a52
7f80: 65 66 66 36 39 66 32 34 34 35 64 66 34 66 39 62  eff69f2445df4f9b
7f90: 31 37 61 64 32 62 34 31 37 62 65 36 36 63 33 37  17ad2b417be66c37
7fa0: 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38  10"]..test NIST8
7fb0: 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 33  00-38b-AES-256-3
7fc0: 31 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62  1.4 {len=512} -b
7fd0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
7fe0: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32  ac -cipher aes-2
7ff0: 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  56-cbc -key $key
8000: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
8010: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 31 39 39   } -result {e199
8020: 32 31 39 30 35 34 39 66 36 65 64 35 36 39 36 61  2190549f6ed5696a
8030: 32 63 30 35 36 63 33 31 35 34 31 30 7d 0a 0a 23  2c056c315410}..#
8040: 20 43 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65   Cleanup.::tclte
8050: 73 74 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 20 24  st::removeFile $
8060: 74 65 73 74 5f 66 69 6c 65 0a 3a 3a 74 63 6c 74  test_file.::tclt
8070: 65 73 74 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 20  est::removeFile 
8080: 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 0a 0a  $test_alt_file..
8090: 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74  # Cleanup.::tclt
80a0: 65 73 74 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74  est::cleanupTest
80b0: 73 0a 72 65 74 75 72 6e 0a                       s.return.