Hex Artifact Content

Artifact 3cbbdd0b3b9bf1adebef42e6fcbaf6deef8004c311703d5e78f709cd8e273690:


0000: 23 20 41 75 74 6f 20 67 65 6e 65 72 61 74 65 64  # Auto generated
0010: 20 74 65 73 74 20 63 61 73 65 73 20 66 6f 72 20   test cases for 
0020: 64 69 67 65 73 74 2e 63 73 76 0a 0a 23 20 4c 6f  digest.csv..# Lo
0030: 61 64 20 54 63 6c 20 54 65 73 74 20 70 61 63 6b  ad Tcl Test pack
0040: 61 67 65 0a 69 66 20 7b 5b 6c 73 65 61 72 63 68  age.if {[lsearch
0050: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c   [namespace chil
0060: 64 72 65 6e 5d 20 3a 3a 74 63 6c 74 65 73 74 5d  dren] ::tcltest]
0070: 20 3d 3d 20 2d 31 7d 20 7b 0a 09 70 61 63 6b 61   == -1} {..packa
0080: 67 65 20 72 65 71 75 69 72 65 20 74 63 6c 74 65  ge require tclte
0090: 73 74 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d  st..namespace im
00a0: 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a  port ::tcltest::
00b0: 2a 0a 7d 0a 0a 73 65 74 20 61 75 74 6f 5f 70 61  *.}..set auto_pa
00c0: 74 68 20 5b 63 6f 6e 63 61 74 20 5b 6c 69 73 74  th [concat [list
00d0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b   [file dirname [
00e0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e  file dirname [in
00f0: 66 6f 20 73 63 72 69 70 74 5d 5d 5d 5d 20 24 61  fo script]]]] $a
0100: 75 74 6f 5f 70 61 74 68 5d 0a 0a 70 61 63 6b 61  uto_path]..packa
0110: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 0a  ge require tls..
0120: 23 20 43 6f 6e 73 74 72 61 69 6e 74 73 0a 73 6f  # Constraints.so
0130: 75 72 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a  urce common.tcl.
0140: 0a 23 20 48 65 6c 70 65 72 20 66 75 6e 63 74 69  .# Helper functi
0150: 6f 6e 73 0a 70 72 6f 63 20 72 65 61 64 5f 63 68  ons.proc read_ch
0160: 61 6e 20 7b 63 6d 64 20 6d 64 20 66 69 6c 65 6e  an {cmd md filen
0170: 61 6d 65 20 61 72 67 73 7d 20 7b 73 65 74 20 63  ame args} {set c
0180: 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d  h [open $filenam
0190: 65 20 72 62 5d 3b 66 63 6f 6e 66 69 67 75 72 65  e rb];fconfigure
01a0: 20 24 63 68 20 2d 74 72 61 6e 73 6c 61 74 69 6f   $ch -translatio
01b0: 6e 20 62 69 6e 61 72 79 3b 73 65 74 20 62 73 69  n binary;set bsi
01c0: 7a 65 20 5b 66 63 6f 6e 66 69 67 75 72 65 20 24  ze [fconfigure $
01d0: 63 68 20 2d 62 75 66 66 65 72 73 69 7a 65 5d 3b  ch -buffersize];
01e0: 73 65 74 20 6e 65 77 20 5b 24 63 6d 64 20 24 6d  set new [$cmd $m
01f0: 64 20 7b 2a 7d 24 61 72 67 73 20 2d 63 68 61 6e  d {*}$args -chan
0200: 20 24 63 68 5d 3b 77 68 69 6c 65 20 7b 21 5b 65   $ch];while {![e
0210: 6f 66 20 24 6e 65 77 5d 7d 20 7b 73 65 74 20 72  of $new]} {set r
0220: 65 73 75 6c 74 20 5b 72 65 61 64 20 24 6e 65 77  esult [read $new
0230: 20 24 62 73 69 7a 65 5d 7d 3b 63 6c 6f 73 65 20   $bsize]};close 
0240: 24 6e 65 77 3b 72 65 74 75 72 6e 20 24 72 65 73  $new;return $res
0250: 75 6c 74 7d 0a 70 72 6f 63 20 61 63 63 75 6d 75  ult}.proc accumu
0260: 6c 61 74 65 20 7b 73 74 72 69 6e 67 20 61 72 67  late {string arg
0270: 73 7d 20 7b 73 65 74 20 63 6d 64 20 5b 7b 2a 7d  s} {set cmd [{*}
0280: 24 61 72 67 73 20 2d 63 6f 6d 6d 61 6e 64 20 64  $args -command d
0290: 63 6d 64 5d 3b 24 63 6d 64 20 75 70 64 61 74 65  cmd];$cmd update
02a0: 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24   [string range $
02b0: 73 74 72 69 6e 67 20 30 20 32 30 5d 3b 24 63 6d  string 0 20];$cm
02c0: 64 20 75 70 64 61 74 65 20 5b 73 74 72 69 6e 67  d update [string
02d0: 20 72 61 6e 67 65 20 24 73 74 72 69 6e 67 20 32   range $string 2
02e0: 31 20 65 6e 64 5d 3b 72 65 74 75 72 6e 20 5b 24  1 end];return [$
02f0: 63 6d 64 20 66 69 6e 61 6c 69 7a 65 5d 7d 0a 0a  cmd finalize]}..
0300: 73 65 74 20 74 65 73 74 5f 64 61 74 61 20 22 45  set test_data "E
0310: 78 61 6d 70 6c 65 20 73 74 72 69 6e 67 20 66 6f  xample string fo
0320: 72 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74  r message digest
0330: 20 74 65 73 74 73 2e 5c 6e 22 0a 73 65 74 20 74   tests.\n".set t
0340: 65 73 74 5f 66 69 6c 65 20 22 6d 64 5f 64 61 74  est_file "md_dat
0350: 61 2e 64 61 74 22 0a 73 65 74 20 74 65 73 74 5f  a.dat".set test_
0360: 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79  key "Example key
0370: 22 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 6d 61 6b  ".::tcltest::mak
0380: 65 46 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61  eFile $test_data
0390: 20 24 74 65 73 74 5f 66 69 6c 65 0a 0a 23 20 54   $test_file..# T
03a0: 65 73 74 20 64 69 67 65 73 74 20 63 6f 6d 6d 61  est digest comma
03b0: 6e 64 73 0a 0a 0a 74 65 73 74 20 44 69 67 65 73  nds...test Diges
03c0: 74 5f 43 6d 64 73 2d 31 2e 31 20 7b 6d 64 34 20  t_Cmds-1.1 {md4 
03d0: 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  cmd} -body {..::
03e0: 74 6c 73 3a 3a 6d 64 34 20 24 74 65 73 74 5f 64  tls::md4 $test_d
03f0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
0400: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61  t {793399f792eca
0410: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30  2752c6af3234ba70
0420: 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  858}..test Diges
0430: 74 5f 43 6d 64 73 2d 31 2e 32 20 7b 6d 64 35 20  t_Cmds-1.2 {md5 
0440: 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  cmd} -body {..::
0450: 74 6c 73 3a 3a 6d 64 35 20 24 74 65 73 74 5f 64  tls::md5 $test_d
0460: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
0470: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
0480: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
0490: 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  a09}..test Diges
04a0: 74 5f 43 6d 64 73 2d 31 2e 33 20 7b 73 68 61 31  t_Cmds-1.3 {sha1
04b0: 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   cmd} -body {..:
04c0: 3a 74 6c 73 3a 3a 73 68 61 31 20 24 74 65 73 74  :tls::sha1 $test
04d0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
04e0: 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36  ult {4fe03b7f256
04f0: 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30  8551dfafb98ca600
0500: 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a  4e65c4b71aa7d}..
0510: 74 65 73 74 20 44 69 67 65 73 74 5f 43 6d 64 73  test Digest_Cmds
0520: 2d 31 2e 34 20 7b 73 68 61 32 35 36 20 63 6d 64  -1.4 {sha256 cmd
0530: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
0540: 3a 3a 73 68 61 32 35 36 20 24 74 65 73 74 5f 64  ::sha256 $test_d
0550: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
0560: 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30  t {9d3578fc13820
0570: 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65  5cf0ee4b4cef35fe
0580: 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34  101bb4ecac7b1614
0590: 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35  c18e6fa48b5c7f95
05a0: 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  e19}..test Diges
05b0: 74 5f 43 6d 64 73 2d 31 2e 35 20 7b 73 68 61 35  t_Cmds-1.5 {sha5
05c0: 31 32 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a  12 cmd} -body {.
05d0: 09 3a 3a 74 6c 73 3a 3a 73 68 61 35 31 32 20 24  .::tls::sha512 $
05e0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
05f0: 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35  -result {d178e75
0600: 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32  9dc59127071588d2
0610: 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65  fad173c06238d87e
0620: 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61  800a6403c0a30daa
0630: 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39  4faaf05d0e7ce049
0640: 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65  16afaa6a58a30cbe
0650: 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66  b597dacb01c62f9f
0660: 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36  b9d89bab9da630c6
0670: 39 39 65 34 38 31 36 66 31 7d 0a 0a 23 20 54 65  99e4816f1}..# Te
0680: 73 74 20 64 69 67 65 73 74 20 63 6f 6d 6d 61 6e  st digest comman
0690: 64 20 66 6f 72 20 63 68 61 6e 6e 65 6c 0a 0a 0a  d for channel...
06a0: 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61 6e  test Digest_Chan
06b0: 2d 32 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79  -2.1 {md4} -body
06c0: 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a   {..read_chan ::
06d0: 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 34 20  tls::digest md4 
06e0: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
06f0: 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39   -result {793399
0700: 66 37 39 32 65 63 61 32 37 35 32 63 36 61 66 33  f792eca2752c6af3
0710: 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73  234ba70858}..tes
0720: 74 20 44 69 67 65 73 74 5f 43 68 61 6e 2d 32 2e  t Digest_Chan-2.
0730: 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a  2 {md5} -body {.
0740: 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  .read_chan ::tls
0750: 3a 3a 64 69 67 65 73 74 20 6d 64 35 20 24 74 65  ::digest md5 $te
0760: 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72  st_file.    } -r
0770: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
0780: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
0790: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44  b94ea09}..test D
07a0: 69 67 65 73 74 5f 43 68 61 6e 2d 32 2e 33 20 7b  igest_Chan-2.3 {
07b0: 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 72  sha1} -body {..r
07c0: 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ead_chan ::tls::
07d0: 64 69 67 65 73 74 20 73 68 61 31 20 24 74 65 73  digest sha1 $tes
07e0: 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65  t_file.    } -re
07f0: 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35  sult {4fe03b7f25
0800: 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30  68551dfafb98ca60
0810: 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a  04e65c4b71aa7d}.
0820: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61  .test Digest_Cha
0830: 6e 2d 32 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  n-2.4 {sha256} -
0840: 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61  body {..read_cha
0850: 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20  n ::tls::digest 
0860: 73 68 61 32 35 36 20 24 74 65 73 74 5f 66 69 6c  sha256 $test_fil
0870: 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  e.    } -result 
0880: 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63  {9d3578fc138205c
0890: 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30  f0ee4b4cef35fe10
08a0: 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31  1bb4ecac7b1614c1
08b0: 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31  8e6fa48b5c7f95e1
08c0: 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f  9}..test Digest_
08d0: 43 68 61 6e 2d 32 2e 35 20 7b 73 68 61 35 31 32  Chan-2.5 {sha512
08e0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f  } -body {..read_
08f0: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 65  chan ::tls::dige
0900: 73 74 20 73 68 61 35 31 32 20 24 74 65 73 74 5f  st sha512 $test_
0910: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
0920: 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39  lt {d178e759dc59
0930: 31 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37  127071588d2fad17
0940: 33 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36  3c06238d87e800a6
0950: 34 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66  403c0a30daa4faaf
0960: 30 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61  05d0e7ce04916afa
0970: 61 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64  a6a58a30cbeb597d
0980: 61 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39  acb01c62f9fb9d89
0990: 62 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38  bab9da630c699e48
09a0: 31 36 66 31 7d 0a 0a 74 65 73 74 20 44 69 67 65  16f1}..test Dige
09b0: 73 74 5f 43 68 61 6e 2d 32 2e 36 20 7b 6d 64 35  st_Chan-2.6 {md5
09c0: 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62   bin} -body {..b
09d0: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
09e0: 20 5b 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c   [read_chan ::tl
09f0: 73 3a 3a 64 69 67 65 73 74 20 6d 64 35 20 24 74  s::digest md5 $t
0a00: 65 73 74 5f 66 69 6c 65 20 2d 62 69 6e 5d 0a 20  est_file -bin]. 
0a10: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
0a20: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
0a30: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
0a40: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61  .test Digest_Cha
0a50: 6e 2d 32 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20  n-2.7 {md5 hex} 
0a60: 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68  -body {..read_ch
0a70: 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74  an ::tls::digest
0a80: 20 6d 64 35 20 24 74 65 73 74 5f 66 69 6c 65 20   md5 $test_file 
0a90: 2d 68 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 75  -hex.    } -resu
0aa0: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32  lt {962bf0803b42
0ab0: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34  32ec23bd8427bb94
0ac0: 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 64 69  ea09}..# Test di
0ad0: 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f 72  gest command for
0ae0: 20 6f 62 6a 65 63 74 20 63 6f 6d 6d 61 6e 64 0a   object command.
0af0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f  ..test Digest_Co
0b00: 6d 6d 61 6e 64 2d 33 2e 31 20 7b 6d 64 34 7d 20  mmand-3.1 {md4} 
0b10: 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c  -body {..accumul
0b20: 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a  ate $test_data :
0b30: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 34  :tls::digest md4
0b40: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
0b50: 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35  793399f792eca275
0b60: 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38  2c6af3234ba70858
0b70: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43  }..test Digest_C
0b80: 6f 6d 6d 61 6e 64 2d 33 2e 32 20 7b 6d 64 35 7d  ommand-3.2 {md5}
0b90: 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75   -body {..accumu
0ba0: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
0bb0: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64  ::tls::digest md
0bc0: 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  5.    } -result 
0bd0: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
0be0: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
0bf0: 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f  9}..test Digest_
0c00: 43 6f 6d 6d 61 6e 64 2d 33 2e 33 20 7b 73 68 61  Command-3.3 {sha
0c10: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75  1} -body {..accu
0c20: 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74  mulate $test_dat
0c30: 61 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20  a ::tls::digest 
0c40: 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75  sha1.    } -resu
0c50: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
0c60: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
0c70: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
0c80: 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61  est Digest_Comma
0c90: 6e 64 2d 33 2e 34 20 7b 73 68 61 32 35 36 7d 20  nd-3.4 {sha256} 
0ca0: 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c  -body {..accumul
0cb0: 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a  ate $test_data :
0cc0: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 73 68 61  :tls::digest sha
0cd0: 32 35 36 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  256.    } -resul
0ce0: 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30  t {9d3578fc13820
0cf0: 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65  5cf0ee4b4cef35fe
0d00: 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34  101bb4ecac7b1614
0d10: 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35  c18e6fa48b5c7f95
0d20: 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  e19}..test Diges
0d30: 74 5f 43 6f 6d 6d 61 6e 64 2d 33 2e 35 20 7b 73  t_Command-3.5 {s
0d40: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
0d50: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
0d60: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 64 69 67  _data ::tls::dig
0d70: 65 73 74 20 73 68 61 35 31 32 0a 20 20 20 20 7d  est sha512.    }
0d80: 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37   -result {d178e7
0d90: 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64  59dc59127071588d
0da0: 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37  2fad173c06238d87
0db0: 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61  e800a6403c0a30da
0dc0: 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34  a4faaf05d0e7ce04
0dd0: 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62  916afaa6a58a30cb
0de0: 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39  eb597dacb01c62f9
0df0: 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63  fb9d89bab9da630c
0e00: 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73  699e4816f1}..tes
0e10: 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64  t Digest_Command
0e20: 2d 33 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d  -3.6 {md5 bin} -
0e30: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
0e40: 6e 63 6f 64 65 20 68 65 78 20 5b 61 63 63 75 6d  ncode hex [accum
0e50: 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61  ulate $test_data
0e60: 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d   ::tls::digest m
0e70: 64 35 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20 2d  d5 -bin].    } -
0e80: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
0e90: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
0ea0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
0eb0: 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64 2d 33  Digest_Command-3
0ec0: 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f  .7 {md5 hex} -bo
0ed0: 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65  dy {..accumulate
0ee0: 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c   $test_data ::tl
0ef0: 73 3a 3a 64 69 67 65 73 74 20 6d 64 35 20 2d 68  s::digest md5 -h
0f00: 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ex.    } -result
0f10: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32   {962bf0803b4232
0f20: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61  ec23bd8427bb94ea
0f30: 30 39 7d 0a 0a 23 20 54 65 73 74 20 64 69 67 65  09}..# Test dige
0f40: 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 64  st command for d
0f50: 61 74 61 0a 0a 0a 74 65 73 74 20 44 69 67 65 73  ata...test Diges
0f60: 74 5f 44 61 74 61 2d 34 2e 31 20 7b 6d 64 34 7d  t_Data-4.1 {md4}
0f70: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
0f80: 3a 64 69 67 65 73 74 20 6d 64 34 20 24 74 65 73  :digest md4 $tes
0f90: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
0fa0: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32  sult {793399f792
0fb0: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62  eca2752c6af3234b
0fc0: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69  a70858}..test Di
0fd0: 67 65 73 74 5f 44 61 74 61 2d 34 2e 32 20 7b 6d  gest_Data-4.2 {m
0fe0: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  d5} -body {..::t
0ff0: 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 35 20 24  ls::digest md5 $
1000: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1010: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
1020: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
1030: 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74  7bb94ea09}..test
1040: 20 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 33   Digest_Data-4.3
1050: 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a   {sha1} -body {.
1060: 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 73  .::tls::digest s
1070: 68 61 31 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ha1 $test_data. 
1080: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66     } -result {4f
1090: 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66 61  e03b7f2568551dfa
10a0: 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34 62  fb98ca6004e65c4b
10b0: 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 44 69  71aa7d}..test Di
10c0: 67 65 73 74 5f 44 61 74 61 2d 34 2e 34 20 7b 73  gest_Data-4.4 {s
10d0: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
10e0: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 73 68  ::tls::digest sh
10f0: 61 32 35 36 20 24 74 65 73 74 5f 64 61 74 61 0a  a256 $test_data.
1100: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
1110: 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30  d3578fc138205cf0
1120: 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62  ee4b4cef35fe101b
1130: 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65  b4ecac7b1614c18e
1140: 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d  6fa48b5c7f95e19}
1150: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61  ..test Digest_Da
1160: 74 61 2d 34 2e 35 20 7b 73 68 61 35 31 32 7d 20  ta-4.5 {sha512} 
1170: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
1180: 64 69 67 65 73 74 20 73 68 61 35 31 32 20 24 74  digest sha512 $t
1190: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
11a0: 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39  result {d178e759
11b0: 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32 66  dc59127071588d2f
11c0: 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65 38  ad173c06238d87e8
11d0: 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61 34  00a6403c0a30daa4
11e0: 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39 31  faaf05d0e7ce0491
11f0: 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65 62  6afaa6a58a30cbeb
1200: 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66 62  597dacb01c62f9fb
1210: 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36 39  9d89bab9da630c69
1220: 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20  9e4816f1}..test 
1230: 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 36 20  Digest_Data-4.6 
1240: 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20  {md5 bin} -body 
1250: 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65  {..binary encode
1260: 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 64 69 67   hex [::tls::dig
1270: 65 73 74 20 6d 64 35 20 2d 62 69 6e 20 24 74 65  est md5 -bin $te
1280: 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d  st_data].    } -
1290: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
12a0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
12b0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
12c0: 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 37 20  Digest_Data-4.7 
12d0: 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20  {md5 hex} -body 
12e0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74  {..::tls::digest
12f0: 20 6d 64 35 20 2d 68 65 78 20 24 74 65 73 74 5f   md5 -hex $test_
1300: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
1310: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32  lt {962bf0803b42
1320: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34  32ec23bd8427bb94
1330: 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65  ea09}..test Dige
1340: 73 74 5f 44 61 74 61 2d 34 2e 38 20 7b 6d 64 35  st_Data-4.8 {md5
1350: 20 77 69 74 68 20 61 72 67 7d 20 2d 62 6f 64 79   with arg} -body
1360: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73   {..::tls::diges
1370: 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73  t md5 -data $tes
1380: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
1390: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62  sult {962bf0803b
13a0: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62  4232ec23bd8427bb
13b0: 39 34 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20  94ea09}..# Test 
13c0: 64 69 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66  digest command f
13d0: 6f 72 20 66 69 6c 65 0a 0a 0a 74 65 73 74 20 44  or file...test D
13e0: 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e 31 20 7b  igest_File-5.1 {
13f0: 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  md4} -body {..::
1400: 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 34 20  tls::digest md4 
1410: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
1420: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1430: 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35  793399f792eca275
1440: 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38  2c6af3234ba70858
1450: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 46  }..test Digest_F
1460: 69 6c 65 2d 35 2e 32 20 7b 6d 64 35 7d 20 2d 62  ile-5.2 {md5} -b
1470: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69  ody {..::tls::di
1480: 67 65 73 74 20 6d 64 35 20 2d 66 69 6c 65 20 24  gest md5 -file $
1490: 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20  test_file.    } 
14a0: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
14b0: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
14c0: 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74  7bb94ea09}..test
14d0: 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e 33   Digest_File-5.3
14e0: 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a   {sha1} -body {.
14f0: 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 73  .::tls::digest s
1500: 68 61 31 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  ha1 -file $test_
1510: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
1520: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
1530: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
1540: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
1550: 65 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d  est Digest_File-
1560: 35 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f  5.4 {sha256} -bo
1570: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67  dy {..::tls::dig
1580: 65 73 74 20 73 68 61 32 35 36 20 2d 66 69 6c 65  est sha256 -file
1590: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
15a0: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37  } -result {9d357
15b0: 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62  8fc138205cf0ee4b
15c0: 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63  4cef35fe101bb4ec
15d0: 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34  ac7b1614c18e6fa4
15e0: 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65  8b5c7f95e19}..te
15f0: 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 35  st Digest_File-5
1600: 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64  .5 {sha512} -bod
1610: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65  y {..::tls::dige
1620: 73 74 20 73 68 61 35 31 32 20 2d 66 69 6c 65 20  st sha512 -file 
1630: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
1640: 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37   -result {d178e7
1650: 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64  59dc59127071588d
1660: 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37  2fad173c06238d87
1670: 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61  e800a6403c0a30da
1680: 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34  a4faaf05d0e7ce04
1690: 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62  916afaa6a58a30cb
16a0: 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39  eb597dacb01c62f9
16b0: 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63  fb9d89bab9da630c
16c0: 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73  699e4816f1}..tes
16d0: 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e  t Digest_File-5.
16e0: 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64  6 {md5 bin} -bod
16f0: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
1700: 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 64  de hex [::tls::d
1710: 69 67 65 73 74 20 6d 64 35 20 2d 62 69 6e 20 2d  igest md5 -bin -
1720: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 5d  file $test_file]
1730: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1740: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1750: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1760: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 46  }..test Digest_F
1770: 69 6c 65 2d 35 2e 37 20 7b 6d 64 35 20 68 65 78  ile-5.7 {md5 hex
1780: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1790: 3a 3a 64 69 67 65 73 74 20 6d 64 35 20 2d 68 65  ::digest md5 -he
17a0: 78 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69  x -file $test_fi
17b0: 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  le.    } -result
17c0: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32   {962bf0803b4232
17d0: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61  ec23bd8427bb94ea
17e0: 30 39 7d 0a 0a 23 20 54 65 73 74 20 44 69 67 65  09}..# Test Dige
17f0: 73 74 20 48 4d 41 43 0a 0a 0a 74 65 73 74 20 44  st HMAC...test D
1800: 69 67 65 73 74 5f 48 4d 41 43 2d 36 2e 31 20 7b  igest_HMAC-6.1 {
1810: 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  data} -body {..:
1820: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 35  :tls::digest md5
1830: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
1840: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
1850: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1860: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
1870: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
1880: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 48  }..test Digest_H
1890: 4d 41 43 2d 36 2e 32 20 7b 66 69 6c 65 7d 20 2d  MAC-6.2 {file} -
18a0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64  body {..::tls::d
18b0: 69 67 65 73 74 20 6d 64 35 20 2d 6b 65 79 20 24  igest md5 -key $
18c0: 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24  test_key -file $
18d0: 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20  test_file.    } 
18e0: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
18f0: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
1900: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
1910: 20 44 69 67 65 73 74 5f 48 4d 41 43 2d 36 2e 33   Digest_HMAC-6.3
1920: 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79   {channel} -body
1930: 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a   {..read_chan ::
1940: 74 6c 73 3a 3a 64 69 67 65 73 74 20 6d 64 35 20  tls::digest md5 
1950: 24 74 65 73 74 5f 66 69 6c 65 20 2d 6b 65 79 20  $test_file -key 
1960: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
1970: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
1980: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
1990: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
19a0: 20 44 69 67 65 73 74 5f 48 4d 41 43 2d 36 2e 34   Digest_HMAC-6.4
19b0: 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64   {data bin} -bod
19c0: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
19d0: 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 64  de hex [::tls::d
19e0: 69 67 65 73 74 20 6d 64 35 20 2d 62 69 6e 20 2d  igest md5 -bin -
19f0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64  key $test_key -d
1a00: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a  ata $test_data].
1a10: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
1a20: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
1a30: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
1a40: 0a 0a 23 20 54 65 73 74 20 48 4d 41 43 20 63 6f  ..# Test HMAC co
1a50: 6d 6d 61 6e 64 0a 0a 0a 74 65 73 74 20 48 4d 41  mmand...test HMA
1a60: 43 2d 37 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f  C-7.1 {data} -bo
1a70: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
1a80: 63 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74  c md5 -key $test
1a90: 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74  _key -data $test
1aa0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
1ab0: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
1ac0: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
1ad0: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41  9d93d}..test HMA
1ae0: 43 2d 37 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f  C-7.2 {file} -bo
1af0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
1b00: 63 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74  c md5 -key $test
1b10: 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74  _key -file $test
1b20: 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73  _file.    } -res
1b30: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
1b40: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
1b50: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41  9d93d}..test HMA
1b60: 43 2d 37 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20  C-7.3 {channel} 
1b70: 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68  -body {..read_ch
1b80: 61 6e 20 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 6d  an ::tls::hmac m
1b90: 64 35 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 6b  d5 $test_file -k
1ba0: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20  ey $test_key.   
1bb0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33   } -result {f983
1bc0: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66  27ef3e20ab6d388f
1bd0: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74  676c6a79d93d}..t
1be0: 65 73 74 20 48 4d 41 43 2d 37 2e 34 20 7b 63 6f  est HMAC-7.4 {co
1bf0: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09  mmand} -body {..
1c00: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
1c10: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 68 6d 61  _data ::tls::hma
1c20: 63 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74  c md5 -key $test
1c30: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75  _key.    } -resu
1c40: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30  lt {f98327ef3e20
1c50: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39  ab6d388f676c6a79
1c60: 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43  d93d}..test HMAC
1c70: 2d 37 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20  -7.5 {data bin} 
1c80: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20  -body {..binary 
1c90: 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c  encode hex [::tl
1ca0: 73 3a 3a 68 6d 61 63 20 6d 64 35 20 2d 62 69 6e  s::hmac md5 -bin
1cb0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
1cc0: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
1cd0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
1ce0: 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36  {f98327ef3e20ab6
1cf0: 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33  d388f676c6a79d93
1d00: 64 7d 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20  d}..# Test CMAC 
1d10: 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74  command.set test
1d20: 5f 63 69 70 68 65 72 20 22 61 65 73 2d 31 32 38  _cipher "aes-128
1d30: 2d 63 62 63 22 0a 73 65 74 20 74 65 73 74 5f 6b  -cbc".set test_k
1d40: 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79 20  ey "Example key 
1d50: 31 32 33 34 22 0a 0a 0a 74 65 73 74 20 43 4d 41  1234"...test CMA
1d60: 43 2d 38 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f  C-8.1 {data} -bo
1d70: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
1d80: 63 20 73 68 61 32 35 36 20 2d 63 69 70 68 65 72  c sha256 -cipher
1d90: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b   $test_cipher -k
1da0: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
1db0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
1dc0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66    } -result {baf
1dd0: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62  5c20f9973e2d606b
1de0: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a  14c7efdfe52fa}..
1df0: 74 65 73 74 20 43 4d 41 43 2d 38 2e 32 20 7b 66  test CMAC-8.2 {f
1e00: 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ile} -body {..::
1e10: 74 6c 73 3a 3a 63 6d 61 63 20 73 68 61 32 35 36  tls::cmac sha256
1e20: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
1e30: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
1e40: 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74  _key -file $test
1e50: 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73  _file.    } -res
1e60: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
1e70: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
1e80: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41  e52fa}..test CMA
1e90: 43 2d 38 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20  C-8.3 {channel} 
1ea0: 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68  -body {..read_ch
1eb0: 61 6e 20 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 73  an ::tls::cmac s
1ec0: 68 61 32 35 36 20 24 74 65 73 74 5f 66 69 6c 65  ha256 $test_file
1ed0: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
1ee0: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
1ef0: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75  _key.    } -resu
1f00: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
1f10: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
1f20: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43  52fa}..test CMAC
1f30: 2d 38 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d  -8.4 {command} -
1f40: 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61  body {..accumula
1f50: 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a  te $test_data ::
1f60: 74 6c 73 3a 3a 63 6d 61 63 20 73 68 61 32 35 36  tls::cmac sha256
1f70: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
1f80: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
1f90: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75  _key.    } -resu
1fa0: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
1fb0: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
1fc0: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43  52fa}..test CMAC
1fd0: 2d 38 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20  -8.5 {data bin} 
1fe0: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20  -body {..binary 
1ff0: 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c  encode hex [::tl
2000: 73 3a 3a 63 6d 61 63 20 73 68 61 32 35 36 20 2d  s::cmac sha256 -
2010: 62 69 6e 20 2d 63 69 70 68 65 72 20 24 74 65 73  bin -cipher $tes
2020: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
2030: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74  est_key -data $t
2040: 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20  est_data].    } 
2050: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2060: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2070: 65 66 64 66 65 35 32 66 61 7d 0a 0a 23 20 54 65  efdfe52fa}..# Te
2080: 73 74 20 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 0a  st MAC command..
2090: 0a 74 65 73 74 20 4d 41 43 2d 39 2e 31 20 7b 48  .test MAC-9.1 {H
20a0: 4d 41 43 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  MAC} -constraint
20b0: 73 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64  s {new_api} -bod
20c0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20  y {..::tls::mac 
20d0: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
20e0: 6d 61 63 20 68 6d 61 63 20 2d 6b 65 79 20 24 74  mac hmac -key $t
20f0: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74  est_key -data $t
2100: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
2110: 72 65 73 75 6c 74 20 7b 34 39 38 65 66 35 65 66  result {498ef5ef
2120: 37 31 34 32 34 66 38 31 64 61 37 34 39 39 62 32  71424f81da7499b2
2130: 65 65 61 65 31 64 30 61 33 34 38 64 64 34 30 62  eeae1d0a348dd40b
2140: 38 34 31 65 61 32 37 62 64 64 65 34 39 34 66 36  841ea27bdde494f6
2150: 62 63 39 30 34 36 66 66 7d 0a 0a 74 65 73 74 20  bc9046ff}..test 
2160: 4d 41 43 2d 39 2e 32 20 7b 43 4d 41 43 7d 20 2d  MAC-9.2 {CMAC} -
2170: 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6e 65 77  constraints {new
2180: 5f 61 70 69 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  _api} -body {..:
2190: 3a 74 6c 73 3a 3a 6d 61 63 20 2d 63 69 70 68 65  :tls::mac -ciphe
21a0: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
21b0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6d  digest sha256 -m
21c0: 61 63 20 63 6d 61 63 20 2d 6b 65 79 20 24 74 65  ac cmac -key $te
21d0: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
21e0: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
21f0: 65 73 75 6c 74 20 7b 34 39 38 65 66 35 65 66 37  esult {498ef5ef7
2200: 31 34 32 34 66 38 31 64 61 37 34 39 39 62 32 65  1424f81da7499b2e
2210: 65 61 65 31 64 30 61 33 34 38 64 64 34 30 62 38  eae1d0a348dd40b8
2220: 34 31 65 61 32 37 62 64 64 65 34 39 34 66 36 62  41ea27bdde494f6b
2230: 63 39 30 34 36 66 66 7d 0a 0a 23 20 44 69 67 65  c9046ff}..# Dige
2240: 73 74 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a  st Error Cases..
2250: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 45 72 72  .test Digest_Err
2260: 6f 72 73 2d 31 30 2e 31 20 7b 54 6f 6f 20 66 65  ors-10.1 {Too fe
2270: 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a  w args} -body {.
2280: 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 0a 20  .::tls::digest. 
2290: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72     } -result {wr
22a0: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
22b0: 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 64 69  ld be "::tls::di
22c0: 67 65 73 74 20 64 69 67 65 73 74 20 3f 2d 62 69  gest digest ?-bi
22d0: 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72  n|-hex? ?-cipher
22e0: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79   name? ?-key key
22f0: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d  ? ?-mac name? [-
2300: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d  channel chan | -
2310: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20  command cmdName 
2320: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65  | -file filename
2330: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d   | ?-data? data]
2340: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
2350: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  {1}..test Digest
2360: 5f 45 72 72 6f 72 73 2d 31 30 2e 32 20 7b 54 6f  _Errors-10.2 {To
2370: 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20 2d 62 6f  o many args} -bo
2380: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67  dy {..::tls::dig
2390: 65 73 74 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d  est too many com
23a0: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74  mand line args t
23b0: 6f 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20  o pass the test 
23c0: 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72  without an error
23d0: 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20   or failing.    
23e0: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
23f0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
2400: 62 65 20 22 3a 3a 74 6c 73 3a 3a 64 69 67 65 73  be "::tls::diges
2410: 74 20 64 69 67 65 73 74 20 3f 2d 62 69 6e 7c 2d  t digest ?-bin|-
2420: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
2430: 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f  me? ?-key key? ?
2440: 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61  -mac name? [-cha
2450: 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d  nnel chan | -com
2460: 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d  mand cmdName | -
2470: 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20  file filename | 
2480: 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20  ?-data? data]"} 
2490: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
24a0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 45 72  ..test Digest_Er
24b0: 72 6f 72 73 2d 31 30 2e 33 20 7b 49 6e 76 61 6c  rors-10.3 {Inval
24c0: 69 64 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79  id digest} -body
24d0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73   {..::tls::diges
24e0: 74 20 62 6f 67 75 73 20 64 61 74 61 0a 20 20 20  t bogus data.   
24f0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61   } -result {Inva
2500: 6c 69 64 20 64 69 67 65 73 74 20 22 62 6f 67 75  lid digest "bogu
2510: 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  s"} -returnCodes
2520: 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73   {1}..test Diges
2530: 74 5f 45 72 72 6f 72 73 2d 31 30 2e 34 20 7b 49  t_Errors-10.4 {I
2540: 6e 76 61 6c 69 64 20 6f 70 74 69 6f 6e 7d 20 2d  nvalid option} -
2550: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64  body {..::tls::d
2560: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 62 6f  igest sha256 -bo
2570: 67 75 73 20 76 61 6c 75 65 0a 20 20 20 20 7d 20  gus value.    } 
2580: 2d 72 65 73 75 6c 74 20 7b 62 61 64 20 6f 70 74  -result {bad opt
2590: 69 6f 6e 20 22 2d 62 6f 67 75 73 22 3a 20 6d 75  ion "-bogus": mu
25a0: 73 74 20 62 65 20 2d 62 69 6e 2c 20 2d 63 68 61  st be -bin, -cha
25b0: 6e 6e 65 6c 2c 20 2d 63 69 70 68 65 72 2c 20 2d  nnel, -cipher, -
25c0: 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20  command, -data, 
25d0: 2d 66 69 6c 65 2c 20 2d 66 69 6c 65 6e 61 6d 65  -file, -filename
25e0: 2c 20 2d 68 65 78 2c 20 2d 6b 65 79 2c 20 6f 72  , -hex, -key, or
25f0: 20 2d 6d 61 63 7d 20 2d 72 65 74 75 72 6e 43 6f   -mac} -returnCo
2600: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69  des {1}..test Di
2610: 67 65 73 74 5f 45 72 72 6f 72 73 2d 31 30 2e 35  gest_Errors-10.5
2620: 20 7b 49 6e 76 61 6c 69 64 20 66 69 6c 65 7d 20   {Invalid file} 
2630: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2640: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 66  digest sha256 -f
2650: 69 6c 65 20 62 6f 67 75 73 0a 20 20 20 20 7d 20  ile bogus.    } 
2660: 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c 64 6e 27  -result {couldn'
2670: 74 20 6f 70 65 6e 20 22 62 6f 67 75 73 22 3a 20  t open "bogus": 
2680: 6e 6f 20 73 75 63 68 20 66 69 6c 65 20 6f 72 20  no such file or 
2690: 64 69 72 65 63 74 6f 72 79 7d 20 2d 72 65 74 75  directory} -retu
26a0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
26b0: 74 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d  t Digest_Errors-
26c0: 31 30 2e 36 20 7b 49 6e 76 61 6c 69 64 20 63 68  10.6 {Invalid ch
26d0: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09  annel} -body {..
26e0: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 73 68  ::tls::digest sh
26f0: 61 32 35 36 20 2d 63 68 61 6e 6e 65 6c 20 62 6f  a256 -channel bo
2700: 67 75 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  gus.    } -resul
2710: 74 20 7b 63 61 6e 20 6e 6f 74 20 66 69 6e 64 20  t {can not find 
2720: 63 68 61 6e 6e 65 6c 20 6e 61 6d 65 64 20 22 62  channel named "b
2730: 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f  ogus"} -returnCo
2740: 64 65 73 20 7b 31 7d 0a 0a 23 20 52 46 43 20 34  des {1}..# RFC 4
2750: 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65  231 HMAC Example
2760: 73 20 54 65 73 74 20 43 61 73 65 20 23 31 0a 73  s Test Case #1.s
2770: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
2780: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
2790: 67 20 72 65 70 65 61 74 20 22 30 62 22 20 32 30  g repeat "0b" 20
27a0: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 48 69 20  ]].set data "Hi 
27b0: 54 68 65 72 65 22 0a 0a 0a 74 65 73 74 20 52 46  There"...test RF
27c0: 43 34 32 33 31 5f 54 43 31 2d 31 31 2e 31 20 7b  C4231_TC1-11.1 {
27d0: 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a  sha224} -body {.
27e0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68 61  .::tls::hmac sha
27f0: 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  224 -key $key -d
2800: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
2810: 2d 72 65 73 75 6c 74 20 7b 38 39 36 66 62 31 31  -result {896fb11
2820: 32 38 61 62 62 64 66 31 39 36 38 33 32 31 30 37  28abbdf196832107
2830: 63 64 34 39 64 66 33 33 66 34 37 62 34 62 31 31  cd49df33f47b4b11
2840: 36 39 39 31 32 62 61 34 66 35 33 36 38 34 62 32  69912ba4f53684b2
2850: 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  2}..test RFC4231
2860: 5f 54 43 31 2d 31 31 2e 32 20 7b 73 68 61 32 35  _TC1-11.2 {sha25
2870: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  6} -body {..::tl
2880: 73 3a 3a 68 6d 61 63 20 73 68 61 32 35 36 20 2d  s::hmac sha256 -
2890: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
28a0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
28b0: 6c 74 20 7b 62 30 33 34 34 63 36 31 64 38 64 62  lt {b0344c61d8db
28c0: 33 38 35 33 35 63 61 38 61 66 63 65 61 66 30 62  38535ca8afceaf0b
28d0: 66 31 32 62 38 38 31 64 63 32 30 30 63 39 38 33  f12b881dc200c983
28e0: 33 64 61 37 32 36 65 39 33 37 36 63 32 65 33 32  3da726e9376c2e32
28f0: 63 66 66 37 7d 0a 0a 74 65 73 74 20 52 46 43 34  cff7}..test RFC4
2900: 32 33 31 5f 54 43 31 2d 31 31 2e 33 20 7b 73 68  231_TC1-11.3 {sh
2910: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a384} -body {..:
2920: 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68 61 33 38  :tls::hmac sha38
2930: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
2940: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
2950: 65 73 75 6c 74 20 7b 61 66 64 30 33 39 34 34 64  esult {afd03944d
2960: 38 34 38 39 35 36 32 36 62 30 38 32 35 66 34 61  84895626b0825f4a
2970: 62 34 36 39 30 37 66 31 35 66 39 64 61 64 62 65  b46907f15f9dadbe
2980: 34 31 30 31 65 63 36 38 32 61 61 30 33 34 63 37  4101ec682aa034c7
2990: 63 65 62 63 35 39 63 66 61 65 61 39 65 61 39 30  cebc59cfaea9ea90
29a0: 37 36 65 64 65 37 66 34 61 66 31 35 32 65 38 62  76ede7f4af152e8b
29b0: 32 66 61 39 63 62 36 7d 0a 0a 74 65 73 74 20 52  2fa9cb6}..test R
29c0: 46 43 34 32 33 31 5f 54 43 31 2d 31 31 2e 34 20  FC4231_TC1-11.4 
29d0: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
29e0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68  ..::tls::hmac sh
29f0: 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a512 -key $key -
2a00: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
2a10: 20 2d 72 65 73 75 6c 74 20 7b 38 37 61 61 37 63   -result {87aa7c
2a20: 64 65 61 35 65 66 36 31 39 64 34 66 66 30 62 34  dea5ef619d4ff0b4
2a30: 32 34 31 61 31 64 36 63 62 30 32 33 37 39 66 34  241a1d6cb02379f4
2a40: 65 32 63 65 34 65 63 32 37 38 37 61 64 30 62 33  e2ce4ec2787ad0b3
2a50: 30 35 34 35 65 31 37 63 64 65 64 61 61 38 33 33  0545e17cdedaa833
2a60: 62 37 64 36 62 38 61 37 30 32 30 33 38 62 32 37  b7d6b8a702038b27
2a70: 34 65 61 65 61 33 66 34 65 34 62 65 39 64 39 31  4eaea3f4e4be9d91
2a80: 34 65 65 62 36 31 66 31 37 30 32 65 36 39 36 63  4eeb61f1702e696c
2a90: 32 30 33 61 31 32 36 38 35 34 7d 0a 0a 23 20 52  203a126854}..# R
2aa0: 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61  FC 4231 HMAC Exa
2ab0: 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20  mples Test Case 
2ac0: 23 32 20 2d 20 54 65 73 74 20 77 69 74 68 20 61  #2 - Test with a
2ad0: 20 6b 65 79 20 73 68 6f 72 74 65 72 20 74 68 61   key shorter tha
2ae0: 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20  n the length of 
2af0: 74 68 65 20 48 4d 41 43 20 6f 75 74 70 75 74 2e  the HMAC output.
2b00: 0a 73 65 74 20 6b 65 79 20 22 4a 65 66 65 22 0a  .set key "Jefe".
2b10: 73 65 74 20 64 61 74 61 20 22 77 68 61 74 20 64  set data "what d
2b20: 6f 20 79 61 20 77 61 6e 74 20 66 6f 72 20 6e 6f  o ya want for no
2b30: 74 68 69 6e 67 3f 22 0a 0a 0a 74 65 73 74 20 52  thing?"...test R
2b40: 46 43 34 32 33 31 5f 54 43 32 2d 31 32 2e 31 20  FC4231_TC2-12.1 
2b50: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b  {sha224} -body {
2b60: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68  ..::tls::hmac sh
2b70: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
2b80: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
2b90: 20 2d 72 65 73 75 6c 74 20 7b 61 33 30 65 30 31   -result {a30e01
2ba0: 30 39 38 62 63 36 64 62 62 66 34 35 36 39 30 66  098bc6dbbf45690f
2bb0: 33 61 37 65 39 65 36 64 30 66 38 62 62 65 61 32  3a7e9e6d0f8bbea2
2bc0: 61 33 39 65 36 31 34 38 30 30 38 66 64 30 35 65  a39e6148008fd05e
2bd0: 34 34 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  44}..test RFC423
2be0: 31 5f 54 43 32 2d 31 32 2e 32 20 7b 73 68 61 32  1_TC2-12.2 {sha2
2bf0: 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  56} -body {..::t
2c00: 6c 73 3a 3a 68 6d 61 63 20 73 68 61 32 35 36 20  ls::hmac sha256 
2c10: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
2c20: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
2c30: 75 6c 74 20 7b 35 62 64 63 63 31 34 36 62 66 36  ult {5bdcc146bf6
2c40: 30 37 35 34 65 36 61 30 34 32 34 32 36 30 38 39  0754e6a042426089
2c50: 35 37 35 63 37 35 61 30 30 33 66 30 38 39 64 32  575c75a003f089d2
2c60: 37 33 39 38 33 39 64 65 63 35 38 62 39 36 34 65  739839dec58b964e
2c70: 63 33 38 34 33 7d 0a 0a 74 65 73 74 20 52 46 43  c3843}..test RFC
2c80: 34 32 33 31 5f 54 43 32 2d 31 32 2e 33 20 7b 73  4231_TC2-12.3 {s
2c90: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
2ca0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68 61 33  ::tls::hmac sha3
2cb0: 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  84 -key $key -da
2cc0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
2cd0: 72 65 73 75 6c 74 20 7b 61 66 34 35 64 32 65 33  result {af45d2e3
2ce0: 37 36 34 38 34 30 33 31 36 31 37 66 37 38 64 32  76484031617f78d2
2cf0: 62 35 38 61 36 62 31 62 39 63 37 65 66 34 36 34  b58a6b1b9c7ef464
2d00: 66 35 61 30 31 62 34 37 65 34 32 65 63 33 37 33  f5a01b47e42ec373
2d10: 36 33 32 32 34 34 35 65 38 65 32 32 34 30 63 61  6322445e8e2240ca
2d20: 35 65 36 39 65 32 63 37 38 62 33 32 33 39 65 63  5e69e2c78b3239ec
2d30: 66 61 62 32 31 36 34 39 7d 0a 0a 74 65 73 74 20  fab21649}..test 
2d40: 52 46 43 34 32 33 31 5f 54 43 32 2d 31 32 2e 34  RFC4231_TC2-12.4
2d50: 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20   {sha512} -body 
2d60: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73  {..::tls::hmac s
2d70: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20  ha512 -key $key 
2d80: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
2d90: 7d 20 2d 72 65 73 75 6c 74 20 7b 31 36 34 62 37  } -result {164b7
2da0: 61 37 62 66 63 66 38 31 39 65 32 65 33 39 35 66  a7bfcf819e2e395f
2db0: 62 65 37 33 62 35 36 65 30 61 33 38 37 62 64 36  be73b56e0a387bd6
2dc0: 34 32 32 32 65 38 33 31 66 64 36 31 30 32 37 30  4222e831fd610270
2dd0: 63 64 37 65 61 32 35 30 35 35 34 39 37 35 38 62  cd7ea2505549758b
2de0: 66 37 35 63 30 35 61 39 39 34 61 36 64 30 33 34  f75c05a994a6d034
2df0: 66 36 35 66 38 66 30 65 36 66 64 63 61 65 61 62  f65f8f0e6fdcaeab
2e00: 31 61 33 34 64 34 61 36 62 34 62 36 33 36 65 30  1a34d4a6b4b636e0
2e10: 37 30 61 33 38 62 63 65 37 33 37 7d 0a 0a 23 20  70a38bce737}..# 
2e20: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
2e30: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
2e40: 20 23 33 20 2d 20 54 65 73 74 20 77 69 74 68 20   #3 - Test with 
2e50: 61 20 63 6f 6d 62 69 6e 65 64 20 6c 65 6e 67 74  a combined lengt
2e60: 68 20 6f 66 20 6b 65 79 20 61 6e 64 20 64 61 74  h of key and dat
2e70: 61 20 74 68 61 74 20 69 73 20 6c 61 72 67 65 72  a that is larger
2e80: 20 74 68 61 6e 20 36 34 20 62 79 74 65 73 20 28   than 64 bytes (
2e90: 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20  = block-size of 
2ea0: 53 48 41 2d 32 32 34 20 61 6e 64 20 53 48 41 2d  SHA-224 and SHA-
2eb0: 32 35 36 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62  256)..set key [b
2ec0: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
2ed0: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
2ee0: 22 61 61 22 20 32 30 5d 5d 0a 73 65 74 20 64 61  "aa" 20]].set da
2ef0: 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ta [binary decod
2f00: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
2f10: 70 65 61 74 20 22 64 64 22 20 35 30 5d 5d 0a 0a  peat "dd" 50]]..
2f20: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43  .test RFC4231_TC
2f30: 33 2d 31 33 2e 31 20 7b 73 68 61 32 32 34 7d 20  3-13.1 {sha224} 
2f40: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2f50: 68 6d 61 63 20 73 68 61 32 32 34 20 2d 6b 65 79  hmac sha224 -key
2f60: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
2f70: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
2f80: 7b 37 66 62 33 63 62 33 35 38 38 63 36 63 31 66  {7fb3cb3588c6c1f
2f90: 36 66 66 61 39 36 39 34 64 37 64 36 61 64 32 36  6ffa9694d7d6ad26
2fa0: 34 39 33 36 35 62 30 63 31 66 36 35 64 36 39 64  49365b0c1f65d69d
2fb0: 31 65 63 38 33 33 33 65 61 7d 0a 0a 74 65 73 74  1ec8333ea}..test
2fc0: 20 52 46 43 34 32 33 31 5f 54 43 33 2d 31 33 2e   RFC4231_TC3-13.
2fd0: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
2fe0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
2ff0: 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79  sha256 -key $key
3000: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
3010: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 37 33 65   } -result {773e
3020: 61 39 31 65 33 36 38 30 30 65 34 36 38 35 34 64  a91e36800e46854d
3030: 62 38 65 62 64 30 39 31 38 31 61 37 32 39 35 39  b8ebd09181a72959
3040: 30 39 38 62 33 65 66 38 63 31 32 32 64 39 36 33  098b3ef8c122d963
3050: 35 35 31 34 63 65 64 35 36 35 66 65 7d 0a 0a 74  5514ced565fe}..t
3060: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 33 2d  est RFC4231_TC3-
3070: 31 33 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  13.3 {sha384} -b
3080: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
3090: 61 63 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24  ac sha384 -key $
30a0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
30b0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
30c0: 38 30 36 32 36 30 38 64 33 65 36 61 64 38 61 30  8062608d3e6ad8a0
30d0: 61 61 32 61 63 65 30 31 34 63 38 61 38 36 66 30  aa2ace014c8a86f0
30e0: 61 61 36 33 35 64 39 34 37 61 63 39 66 65 62 65  aa635d947ac9febe
30f0: 38 33 65 66 34 65 35 35 39 36 36 31 34 34 62 32  83ef4e55966144b2
3100: 61 35 61 62 33 39 64 63 31 33 38 31 34 62 39 34  a5ab39dc13814b94
3110: 65 33 61 62 36 65 31 30 31 61 33 34 66 32 37 7d  e3ab6e101a34f27}
3120: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54  ..test RFC4231_T
3130: 43 33 2d 31 33 2e 34 20 7b 73 68 61 35 31 32 7d  C3-13.4 {sha512}
3140: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3150: 3a 68 6d 61 63 20 73 68 61 35 31 32 20 2d 6b 65  :hmac sha512 -ke
3160: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
3170: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
3180: 20 7b 66 61 37 33 62 30 30 38 39 64 35 36 61 32   {fa73b0089d56a2
3190: 38 34 65 66 62 30 66 30 37 35 36 63 38 39 30 62  84efb0f0756c890b
31a0: 65 39 62 31 62 35 64 62 64 64 38 65 65 38 31 61  e9b1b5dbdd8ee81a
31b0: 33 36 35 35 66 38 33 65 33 33 62 32 32 37 39 64  3655f83e33b2279d
31c0: 33 39 62 66 33 65 38 34 38 32 37 39 61 37 32 32  39bf3e848279a722
31d0: 63 38 30 36 62 34 38 35 61 34 37 65 36 37 63 38  c806b485a47e67c8
31e0: 30 37 62 39 34 36 61 33 33 37 62 65 65 38 39 34  07b946a337bee894
31f0: 32 36 37 34 32 37 38 38 35 39 65 31 33 32 39 32  2674278859e13292
3200: 66 62 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20  fb}..# RFC 4231 
3210: 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65  HMAC Examples Te
3220: 73 74 20 43 61 73 65 20 23 34 20 2d 20 54 65 73  st Case #4 - Tes
3230: 74 20 77 69 74 68 20 61 20 63 6f 6d 62 69 6e 65  t with a combine
3240: 64 20 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20  d length of key 
3250: 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 69 73  and data that is
3260: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 36 34 20   larger than 64 
3270: 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73  bytes (= block-s
3280: 69 7a 65 20 6f 66 20 53 48 41 2d 32 32 34 20 61  ize of SHA-224 a
3290: 6e 64 20 53 48 41 2d 32 35 36 29 2e 0a 73 65 74  nd SHA-256)..set
32a0: 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63   key [binary dec
32b0: 6f 64 65 20 68 65 78 20 22 30 31 30 32 30 33 30  ode hex "0102030
32c0: 34 30 35 30 36 30 37 30 38 30 39 30 61 30 62 30  405060708090a0b0
32d0: 63 30 64 30 65 30 66 31 30 31 31 31 32 31 33 31  c0d0e0f101112131
32e0: 34 31 35 31 36 31 37 31 38 31 39 22 5d 0a 73 65  41516171819"].se
32f0: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
3300: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
3310: 67 20 72 65 70 65 61 74 20 22 63 64 22 20 35 30  g repeat "cd" 50
3320: 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33  ]]...test RFC423
3330: 31 5f 54 43 34 2d 31 34 2e 31 20 7b 73 68 61 32  1_TC4-14.1 {sha2
3340: 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  24} -body {..::t
3350: 6c 73 3a 3a 68 6d 61 63 20 73 68 61 32 32 34 20  ls::hmac sha224 
3360: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
3370: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
3380: 75 6c 74 20 7b 36 63 31 31 35 30 36 38 37 34 30  ult {6c115068740
3390: 31 33 63 61 63 36 61 32 61 62 63 31 62 62 33 38  13cac6a2abc1bb38
33a0: 32 36 32 37 63 65 63 36 61 39 30 64 38 36 65 66  2627cec6a90d86ef
33b0: 63 30 31 32 64 65 37 61 66 65 63 35 61 7d 0a 0a  c012de7afec5a}..
33c0: 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 34  test RFC4231_TC4
33d0: 2d 31 34 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d  -14.2 {sha256} -
33e0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
33f0: 6d 61 63 20 73 68 61 32 35 36 20 2d 6b 65 79 20  mac sha256 -key 
3400: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
3410: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3420: 38 32 35 35 38 61 33 38 39 61 34 34 33 63 30 65  82558a389a443c0e
3430: 61 34 63 63 38 31 39 38 39 39 66 32 30 38 33 61  a4cc819899f2083a
3440: 38 35 66 30 66 61 61 33 65 35 37 38 66 38 30 37  85f0faa3e578f807
3450: 37 61 32 65 33 66 66 34 36 37 32 39 36 36 35 62  7a2e3ff46729665b
3460: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
3470: 54 43 34 2d 31 34 2e 33 20 7b 73 68 61 33 38 34  TC4-14.3 {sha384
3480: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3490: 3a 3a 68 6d 61 63 20 73 68 61 33 38 34 20 2d 6b  ::hmac sha384 -k
34a0: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
34b0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
34c0: 74 20 7b 33 65 38 61 36 39 62 37 37 38 33 63 32  t {3e8a69b7783c2
34d0: 35 38 35 31 39 33 33 61 62 36 32 39 30 61 66 36  5851933ab6290af6
34e0: 63 61 37 37 61 39 39 38 31 34 38 30 38 35 30 30  ca77a99814808500
34f0: 30 39 63 63 35 35 37 37 63 36 65 31 66 35 37 33  09cc5577c6e1f573
3500: 62 34 65 36 38 30 31 64 64 32 33 63 34 61 37 64  b4e6801dd23c4a7d
3510: 36 37 39 63 63 66 38 61 33 38 36 63 36 37 34 63  679ccf8a386c674c
3520: 66 66 62 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  ffb}..test RFC42
3530: 33 31 5f 54 43 34 2d 31 34 2e 34 20 7b 73 68 61  31_TC4-14.4 {sha
3540: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  512} -body {..::
3550: 74 6c 73 3a 3a 68 6d 61 63 20 73 68 61 35 31 32  tls::hmac sha512
3560: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
3570: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
3580: 73 75 6c 74 20 7b 62 30 62 61 34 36 35 36 33 37  sult {b0ba465637
3590: 34 35 38 63 36 39 39 30 65 35 61 38 63 35 66 36  458c6990e5a8c5f6
35a0: 31 64 34 61 66 37 65 35 37 36 64 39 37 66 66 39  1d4af7e576d97ff9
35b0: 34 62 38 37 32 64 65 37 36 66 38 30 35 30 33 36  4b872de76f805036
35c0: 31 65 65 33 64 62 61 39 31 63 61 35 63 31 31 61  1ee3dba91ca5c11a
35d0: 61 32 35 65 62 34 64 36 37 39 32 37 35 63 63 35  a25eb4d679275cc5
35e0: 37 38 38 30 36 33 61 35 66 31 39 37 34 31 31 32  788063a5f1974112
35f0: 30 63 34 66 32 64 65 32 61 64 65 62 65 62 31 30  0c4f2de2adebeb10
3600: 61 32 39 38 64 64 7d 0a 0a 23 20 52 46 43 20 34  a298dd}..# RFC 4
3610: 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65  231 HMAC Example
3620: 73 20 54 65 73 74 20 43 61 73 65 20 23 35 20 2d  s Test Case #5 -
3630: 20 54 65 73 74 20 77 69 74 68 20 61 20 74 72 75   Test with a tru
3640: 6e 63 61 74 69 6f 6e 20 6f 66 20 6f 75 74 70 75  ncation of outpu
3650: 74 20 74 6f 20 31 32 38 20 62 69 74 73 2e 0a 73  t to 128 bits..s
3660: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
3670: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
3680: 67 20 72 65 70 65 61 74 20 22 30 63 22 20 32 30  g repeat "0c" 20
3690: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 65 73  ]].set data "Tes
36a0: 74 20 57 69 74 68 20 54 72 75 6e 63 61 74 69 6f  t With Truncatio
36b0: 6e 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33  n"...test RFC423
36c0: 31 5f 54 43 35 2d 31 35 2e 31 20 7b 73 68 61 32  1_TC5-15.1 {sha2
36d0: 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72  24} -body {..str
36e0: 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73  ing range [::tls
36f0: 3a 3a 68 6d 61 63 20 73 68 61 32 32 34 20 2d 6b  ::hmac sha224 -k
3700: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
3710: 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20  ata] 0 31.    } 
3720: 2d 72 65 73 75 6c 74 20 7b 30 65 32 61 65 61 36  -result {0e2aea6
3730: 38 61 39 30 63 38 64 33 37 63 39 38 38 62 63 64  8a90c8d37c988bcd
3740: 62 39 66 63 61 36 66 61 38 7d 0a 0a 74 65 73 74  b9fca6fa8}..test
3750: 20 52 46 43 34 32 33 31 5f 54 43 35 2d 31 35 2e   RFC4231_TC5-15.
3760: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
3770: 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65   {..string range
3780: 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68   [::tls::hmac sh
3790: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
37a0: 64 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31  data $data] 0 31
37b0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
37c0: 61 33 62 36 31 36 37 34 37 33 31 30 30 65 65 30  a3b6167473100ee0
37d0: 36 65 30 63 37 39 36 63 32 39 35 35 35 35 32 62  6e0c796c2955552b
37e0: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
37f0: 54 43 35 2d 31 35 2e 33 20 7b 73 68 61 33 38 34  TC5-15.3 {sha384
3800: 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e  } -body {..strin
3810: 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a  g range [::tls::
3820: 68 6d 61 63 20 73 68 61 33 38 34 20 2d 6b 65 79  hmac sha384 -key
3830: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
3840: 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72  a] 0 31.    } -r
3850: 65 73 75 6c 74 20 7b 33 61 62 66 33 34 63 33 35  esult {3abf34c35
3860: 30 33 62 32 61 32 33 61 34 36 65 66 63 36 31 39  03b2a23a46efc619
3870: 62 61 65 66 38 39 37 7d 0a 0a 74 65 73 74 20 52  baef897}..test R
3880: 46 43 34 32 33 31 5f 54 43 35 2d 31 35 2e 34 20  FC4231_TC5-15.4 
3890: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
38a0: 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b  ..string range [
38b0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68 61 35  ::tls::hmac sha5
38c0: 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  12 -key $key -da
38d0: 74 61 20 24 64 61 74 61 5d 20 30 20 33 31 0a 20  ta $data] 0 31. 
38e0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 31     } -result {41
38f0: 35 66 61 64 36 32 37 31 35 38 30 61 35 33 31 64  5fad6271580a531d
3900: 34 31 37 39 62 63 38 39 31 64 38 37 61 36 7d 0a  4179bc891d87a6}.
3910: 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 43  .# RFC 4231 HMAC
3920: 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43   Examples Test C
3930: 61 73 65 20 23 36 20 2d 20 54 65 73 74 20 77 69  ase #6 - Test wi
3940: 74 68 20 61 20 6b 65 79 20 6c 61 72 67 65 72 20  th a key larger 
3950: 74 68 61 6e 20 31 32 38 20 62 79 74 65 73 20 28  than 128 bytes (
3960: 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20  = block-size of 
3970: 53 48 41 2d 33 38 34 20 61 6e 64 20 53 48 41 2d  SHA-384 and SHA-
3980: 35 31 32 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62  512)..set key [b
3990: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
39a0: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
39b0: 22 61 61 22 20 31 33 31 5d 5d 0a 73 65 74 20 64  "aa" 131]].set d
39c0: 61 74 61 20 22 54 65 73 74 20 55 73 69 6e 67 20  ata "Test Using 
39d0: 4c 61 72 67 65 72 20 54 68 61 6e 20 42 6c 6f 63  Larger Than Bloc
39e0: 6b 2d 53 69 7a 65 20 4b 65 79 20 2d 20 48 61 73  k-Size Key - Has
39f0: 68 20 4b 65 79 20 46 69 72 73 74 22 0a 0a 0a 74  h Key First"...t
3a00: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 36 2d  est RFC4231_TC6-
3a10: 31 36 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62  16.1 {sha224} -b
3a20: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
3a30: 61 63 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  ac sha224 -key $
3a40: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
3a50: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
3a60: 35 65 39 61 30 64 62 39 36 32 30 39 35 61 64 61  5e9a0db962095ada
3a70: 65 62 65 39 62 32 64 36 66 30 64 62 63 65 32 64  ebe9b2d6f0dbce2d
3a80: 34 39 39 66 31 31 32 66 32 64 32 62 37 32 37 33  499f112f2d2b7273
3a90: 66 61 36 38 37 30 65 7d 0a 0a 74 65 73 74 20 52  fa6870e}..test R
3aa0: 46 43 34 32 33 31 5f 54 43 36 2d 31 36 2e 32 20  FC4231_TC6-16.2 
3ab0: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b  {sha256} -body {
3ac0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 73 68  ..::tls::hmac sh
3ad0: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
3ae0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
3af0: 20 2d 72 65 73 75 6c 74 20 7b 36 30 65 34 33 31   -result {60e431
3b00: 35 39 31 65 65 30 62 36 37 66 30 64 38 61 32 36  591ee0b67f0d8a26
3b10: 61 61 63 62 66 35 62 37 37 66 38 65 30 62 63 36  aacbf5b77f8e0bc6
3b20: 32 31 33 37 32 38 63 35 31 34 30 35 34 36 30 34  213728c514054604
3b30: 30 66 30 65 65 33 37 66 35 34 7d 0a 0a 74 65 73  0f0ee37f54}..tes
3b40: 74 20 52 46 43 34 32 33 31 5f 54 43 36 2d 31 36  t RFC4231_TC6-16
3b50: 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64  .3 {sha384} -bod
3b60: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
3b70: 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65   sha384 -key $ke
3b80: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
3b90: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 65 63    } -result {4ec
3ba0: 65 30 38 34 34 38 35 38 31 33 65 39 30 38 38 64  e084485813e9088d
3bb0: 32 63 36 33 61 30 34 31 62 63 35 62 34 34 66 39  2c63a041bc5b44f9
3bc0: 65 66 31 30 31 32 61 32 62 35 38 38 66 33 63 64  ef1012a2b588f3cd
3bd0: 31 31 66 30 35 30 33 33 61 63 34 63 36 30 63 32  11f05033ac4c60c2
3be0: 65 66 36 61 62 34 30 33 30 66 65 38 32 39 36 32  ef6ab4030fe82962
3bf0: 34 38 64 66 31 36 33 66 34 34 39 35 32 7d 0a 0a  48df163f44952}..
3c00: 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 36  test RFC4231_TC6
3c10: 2d 31 36 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d  -16.4 {sha512} -
3c20: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
3c30: 6d 61 63 20 73 68 61 35 31 32 20 2d 6b 65 79 20  mac sha512 -key 
3c40: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
3c50: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3c60: 38 30 62 32 34 32 36 33 63 37 63 31 61 33 65 62  80b24263c7c1a3eb
3c70: 62 37 31 34 39 33 63 31 64 64 37 62 65 38 62 34  b71493c1dd7be8b4
3c80: 39 62 34 36 64 31 66 34 31 62 34 61 65 65 63 31  9b46d1f41b4aeec1
3c90: 31 32 31 62 30 31 33 37 38 33 66 38 66 33 35 32  121b013783f8f352
3ca0: 36 62 35 36 64 30 33 37 65 30 35 66 32 35 39 38  6b56d037e05f2598
3cb0: 62 64 30 66 64 32 32 31 35 64 36 61 31 65 35 32  bd0fd2215d6a1e52
3cc0: 39 35 65 36 34 66 37 33 66 36 33 66 30 61 65 63  95e64f73f63f0aec
3cd0: 38 62 39 31 35 61 39 38 35 64 37 38 36 35 39 38  8b915a985d786598
3ce0: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d  }..# RFC 4231 HM
3cf0: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74  AC Examples Test
3d00: 20 43 61 73 65 20 23 37 20 2d 20 54 65 73 74 20   Case #7 - Test 
3d10: 77 69 74 68 20 61 20 6b 65 79 20 61 6e 64 20 64  with a key and d
3d20: 61 74 61 20 74 68 61 74 20 69 73 20 6c 61 72 67  ata that is larg
3d30: 65 72 20 74 68 61 6e 20 31 32 38 20 62 79 74 65  er than 128 byte
3d40: 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20  s (= block-size 
3d50: 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64 20 53  of SHA-384 and S
3d60: 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b 65 79  HA-512)..set key
3d70: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
3d80: 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65  hex [string repe
3d90: 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a 73 65  at "aa" 131]].se
3da0: 74 20 64 61 74 61 20 22 54 68 69 73 20 69 73 20  t data "This is 
3db0: 61 20 74 65 73 74 20 75 73 69 6e 67 20 61 20 6c  a test using a l
3dc0: 61 72 67 65 72 20 74 68 61 6e 20 62 6c 6f 63 6b  arger than block
3dd0: 2d 73 69 7a 65 20 6b 65 79 20 61 6e 64 20 61 20  -size key and a 
3de0: 6c 61 72 67 65 72 20 74 68 61 6e 20 62 6c 6f 63  larger than bloc
3df0: 6b 2d 73 69 7a 65 20 64 61 74 61 2e 20 54 68 65  k-size data. The
3e00: 20 6b 65 79 20 6e 65 65 64 73 20 74 6f 20 62 65   key needs to be
3e10: 20 68 61 73 68 65 64 20 62 65 66 6f 72 65 20 62   hashed before b
3e20: 65 69 6e 67 20 75 73 65 64 20 62 79 20 74 68 65  eing used by the
3e30: 20 48 4d 41 43 20 61 6c 67 6f 72 69 74 68 6d 2e   HMAC algorithm.
3e40: 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  "...test RFC4231
3e50: 5f 54 43 37 2d 31 37 2e 31 20 7b 73 68 61 32 32  _TC7-17.1 {sha22
3e60: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
3e70: 73 3a 3a 68 6d 61 63 20 73 68 61 32 32 34 20 2d  s::hmac sha224 -
3e80: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
3e90: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3ea0: 6c 74 20 7b 33 61 38 35 34 31 36 36 61 63 35 64  lt {3a854166ac5d
3eb0: 39 66 30 32 33 66 35 34 64 35 31 37 64 30 62 33  9f023f54d517d0b3
3ec0: 39 64 62 64 39 34 36 37 37 30 64 62 39 63 32 62  9dbd946770db9c2b
3ed0: 39 35 63 39 66 36 66 35 36 35 64 31 7d 0a 0a 74  95c9f6f565d1}..t
3ee0: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 37 2d  est RFC4231_TC7-
3ef0: 31 37 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  17.2 {sha256} -b
3f00: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
3f10: 61 63 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  ac sha256 -key $
3f20: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
3f30: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
3f40: 62 30 39 66 66 61 37 31 62 39 34 32 66 63 62 32  b09ffa71b942fcb2
3f50: 37 36 33 35 66 62 63 64 35 62 30 65 39 34 34 62  7635fbcd5b0e944b
3f60: 66 64 63 36 33 36 34 34 66 30 37 31 33 39 33 38  fdc63644f0713938
3f70: 61 37 66 35 31 35 33 35 63 33 61 33 35 65 32 7d  a7f51535c3a35e2}
3f80: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54  ..test RFC4231_T
3f90: 43 37 2d 31 37 2e 33 20 7b 73 68 61 33 38 34 7d  C7-17.3 {sha384}
3fa0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3fb0: 3a 68 6d 61 63 20 73 68 61 33 38 34 20 2d 6b 65  :hmac sha384 -ke
3fc0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
3fd0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
3fe0: 20 7b 36 36 31 37 31 37 38 65 39 34 31 66 30 32   {6617178e941f02
3ff0: 30 64 33 35 31 65 32 66 32 35 34 65 38 66 64 33  0d351e2f254e8fd3
4000: 32 63 36 30 32 34 32 30 66 65 62 30 62 38 66 62  2c602420feb0b8fb
4010: 39 61 64 63 63 65 62 62 38 32 34 36 31 65 39 39  9adccebb82461e99
4020: 63 35 61 36 37 38 63 63 33 31 65 37 39 39 31 37  c5a678cc31e79917
4030: 36 64 33 38 36 30 65 36 31 31 30 63 34 36 35 32  6d3860e6110c4652
4040: 33 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  3e}..test RFC423
4050: 31 5f 54 43 37 2d 31 37 2e 34 20 7b 73 68 61 35  1_TC7-17.4 {sha5
4060: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  12} -body {..::t
4070: 6c 73 3a 3a 68 6d 61 63 20 73 68 61 35 31 32 20  ls::hmac sha512 
4080: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
4090: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
40a0: 75 6c 74 20 7b 65 33 37 62 36 61 37 37 35 64 63  ult {e37b6a775dc
40b0: 38 37 64 62 61 61 34 64 66 61 39 66 39 36 65 35  87dbaa4dfa9f96e5
40c0: 65 33 66 66 64 64 65 62 64 37 31 66 38 38 36 37  e3ffddebd71f8867
40d0: 32 38 39 38 36 35 64 66 35 61 33 32 64 32 30 63  289865df5a32d20c
40e0: 64 63 39 34 34 62 36 30 32 32 63 61 63 33 63 34  dc944b6022cac3c4
40f0: 39 38 32 62 31 30 64 35 65 65 62 35 35 63 33 65  982b10d5eeb55c3e
4100: 34 64 65 31 35 31 33 34 36 37 36 66 62 36 64 65  4de15134676fb6de
4110: 30 34 34 36 30 36 35 63 39 37 34 34 30 66 61 38  0446065c97440fa8
4120: 63 36 61 35 38 7d 0a 0a 23 20 43 6c 65 61 6e 75  c6a58}..# Cleanu
4130: 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 72 65 6d  p.::tcltest::rem
4140: 6f 76 65 46 69 6c 65 20 24 74 65 73 74 5f 66 69  oveFile $test_fi
4150: 6c 65 0a 0a 23 20 43 6c 65 61 6e 75 70 0a 3a 3a  le..# Cleanup.::
4160: 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e 75 70  tcltest::cleanup
4170: 54 65 73 74 73 0a 72 65 74 75 72 6e 0a           Tests.return.