Hex Artifact Content

Artifact 149e19cee3d7ae3ab70f08755ebcf1dbbc659055e78c2554480ccabcc22a55de:


0000: 23 20 41 75 74 6f 20 67 65 6e 65 72 61 74 65 64  # Auto generated
0010: 20 74 65 73 74 20 63 61 73 65 73 20 66 6f 72 20   test cases for 
0020: 64 69 67 65 73 74 2e 63 73 76 0a 0a 23 20 4c 6f  digest.csv..# Lo
0030: 61 64 20 54 63 6c 20 54 65 73 74 20 70 61 63 6b  ad Tcl Test pack
0040: 61 67 65 0a 69 66 20 7b 5b 6c 73 65 61 72 63 68  age.if {[lsearch
0050: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c   [namespace chil
0060: 64 72 65 6e 5d 20 3a 3a 74 63 6c 74 65 73 74 5d  dren] ::tcltest]
0070: 20 3d 3d 20 2d 31 7d 20 7b 0a 09 70 61 63 6b 61   == -1} {..packa
0080: 67 65 20 72 65 71 75 69 72 65 20 74 63 6c 74 65  ge require tclte
0090: 73 74 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d  st..namespace im
00a0: 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a  port ::tcltest::
00b0: 2a 0a 7d 0a 0a 73 65 74 20 61 75 74 6f 5f 70 61  *.}..set auto_pa
00c0: 74 68 20 5b 63 6f 6e 63 61 74 20 5b 6c 69 73 74  th [concat [list
00d0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b   [file dirname [
00e0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e  file dirname [in
00f0: 66 6f 20 73 63 72 69 70 74 5d 5d 5d 5d 20 24 61  fo script]]]] $a
0100: 75 74 6f 5f 70 61 74 68 5d 0a 0a 70 61 63 6b 61  uto_path]..packa
0110: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 0a  ge require tls..
0120: 23 20 43 6f 6e 73 74 72 61 69 6e 74 73 0a 73 6f  # Constraints.so
0130: 75 72 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a  urce common.tcl.
0140: 0a 23 20 48 65 6c 70 65 72 20 66 75 6e 63 74 69  .# Helper functi
0150: 6f 6e 73 20 2d 20 53 65 65 20 63 6f 6d 6d 6f 6e  ons - See common
0160: 2e 74 63 6c 0a 70 72 6f 63 20 64 69 67 65 73 74  .tcl.proc digest
0170: 5f 72 65 61 64 5f 63 68 61 6e 20 7b 63 6d 64 20  _read_chan {cmd 
0180: 66 69 6c 65 6e 61 6d 65 20 61 72 67 73 7d 20 7b  filename args} {
0190: 0a 09 73 65 74 20 63 68 20 5b 6f 70 65 6e 20 24  ..set ch [open $
01a0: 66 69 6c 65 6e 61 6d 65 20 72 62 5d 0a 09 73 65  filename rb]..se
01b0: 74 20 62 73 69 7a 65 20 5b 66 63 6f 6e 66 69 67  t bsize [fconfig
01c0: 75 72 65 20 24 63 68 20 2d 62 75 66 66 65 72 73  ure $ch -buffers
01d0: 69 7a 65 5d 0a 09 73 65 74 20 6e 65 77 20 5b 24  ize]..set new [$
01e0: 63 6d 64 20 7b 2a 7d 24 61 72 67 73 20 2d 63 68  cmd {*}$args -ch
01f0: 61 6e 20 24 63 68 5d 0a 09 77 68 69 6c 65 20 7b  an $ch]..while {
0200: 21 5b 65 6f 66 20 24 6e 65 77 5d 7d 20 7b 73 65  ![eof $new]} {se
0210: 74 20 6d 64 20 5b 72 65 61 64 20 24 6e 65 77 20  t md [read $new 
0220: 24 62 73 69 7a 65 5d 7d 0a 09 63 6c 6f 73 65 20  $bsize]}..close 
0230: 24 6e 65 77 0a 09 72 65 74 75 72 6e 20 24 6d 64  $new..return $md
0240: 7d 0a 70 72 6f 63 20 64 69 67 65 73 74 5f 77 72  }.proc digest_wr
0250: 69 74 65 5f 63 68 61 6e 20 7b 63 6d 64 20 66 69  ite_chan {cmd fi
0260: 6c 65 6e 61 6d 65 20 64 61 74 61 20 61 72 67 73  lename data args
0270: 7d 20 7b 0a 09 73 65 74 20 63 68 20 5b 6f 70 65  } {..set ch [ope
0280: 6e 20 24 66 69 6c 65 6e 61 6d 65 20 77 62 5d 0a  n $filename wb].
0290: 09 73 65 74 20 6e 65 77 20 5b 24 63 6d 64 20 7b  .set new [$cmd {
02a0: 2a 7d 24 61 72 67 73 20 2d 63 68 61 6e 20 24 63  *}$args -chan $c
02b0: 68 5d 0a 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c  h]..puts -nonewl
02c0: 69 6e 65 20 24 6e 65 77 20 24 64 61 74 61 0a 09  ine $new $data..
02d0: 66 6c 75 73 68 20 24 6e 65 77 0a 09 63 6c 6f 73  flush $new..clos
02e0: 65 20 24 6e 65 77 0a 09 73 65 74 20 63 68 20 5b  e $new..set ch [
02f0: 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d 65 20 72  open $filename r
0300: 62 5d 0a 09 73 65 74 20 6d 64 20 5b 72 65 61 64  b]..set md [read
0310: 20 24 63 68 5d 0a 09 63 6c 6f 73 65 20 24 63 68   $ch]..close $ch
0320: 0a 09 72 65 74 75 72 6e 20 24 6d 64 7d 0a 70 72  ..return $md}.pr
0330: 6f 63 20 64 69 67 65 73 74 5f 61 63 63 75 6d 75  oc digest_accumu
0340: 6c 61 74 65 20 7b 73 74 72 69 6e 67 20 61 72 67  late {string arg
0350: 73 7d 20 7b 0a 09 73 65 74 20 63 6d 64 20 5b 7b  s} {..set cmd [{
0360: 2a 7d 24 61 72 67 73 20 2d 63 6f 6d 6d 61 6e 64  *}$args -command
0370: 20 64 63 6d 64 5d 0a 09 20 24 63 6d 64 20 75 70   dcmd].. $cmd up
0380: 64 61 74 65 20 5b 73 74 72 69 6e 67 20 72 61 6e  date [string ran
0390: 67 65 20 24 73 74 72 69 6e 67 20 30 20 32 30 5d  ge $string 0 20]
03a0: 0a 09 24 63 6d 64 20 75 70 64 61 74 65 20 5b 73  ..$cmd update [s
03b0: 74 72 69 6e 67 20 72 61 6e 67 65 20 24 73 74 72  tring range $str
03c0: 69 6e 67 20 32 31 20 65 6e 64 5d 0a 09 72 65 74  ing 21 end]..ret
03d0: 75 72 6e 20 5b 24 63 6d 64 20 66 69 6e 61 6c 69  urn [$cmd finali
03e0: 7a 65 5d 7d 0a 0a 73 65 74 20 74 65 73 74 5f 64  ze]}..set test_d
03f0: 61 74 61 20 22 45 78 61 6d 70 6c 65 20 73 74 72  ata "Example str
0400: 69 6e 67 20 66 6f 72 20 6d 65 73 73 61 67 65 20  ing for message 
0410: 64 69 67 65 73 74 20 74 65 73 74 73 2e 5c 6e 22  digest tests.\n"
0420: 0a 73 65 74 20 74 65 73 74 5f 66 69 6c 65 20 22  .set test_file "
0430: 6d 64 5f 64 61 74 61 2e 64 61 74 22 0a 73 65 74  md_data.dat".set
0440: 20 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 22   test_alt_file "
0450: 6d 64 5f 61 6c 74 5f 64 61 74 61 2e 64 61 74 22  md_alt_data.dat"
0460: 0a 73 65 74 20 74 65 73 74 5f 6b 65 79 20 22 45  .set test_key "E
0470: 78 61 6d 70 6c 65 20 6b 65 79 22 0a 3a 3a 74 63  xample key".::tc
0480: 6c 74 65 73 74 3a 3a 6d 61 6b 65 46 69 6c 65 20  ltest::makeFile 
0490: 24 74 65 73 74 5f 64 61 74 61 20 24 74 65 73 74  $test_data $test
04a0: 5f 66 69 6c 65 0a 0a 23 20 54 65 73 74 20 64 69  _file..# Test di
04b0: 67 65 73 74 20 73 68 6f 72 74 2d 63 75 74 20 63  gest short-cut c
04c0: 6f 6d 6d 61 6e 64 73 0a 0a 0a 74 65 73 74 20 44  ommands...test D
04d0: 69 67 65 73 74 5f 43 6d 64 73 2d 31 2e 31 20 7b  igest_Cmds-1.1 {
04e0: 6d 64 34 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b  md4 cmd} -body {
04f0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 34 20 24 74 65  ..::tls::md4 $te
0500: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
0510: 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39  esult {793399f79
0520: 32 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34  2eca2752c6af3234
0530: 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44  ba70858}..test D
0540: 69 67 65 73 74 5f 43 6d 64 73 2d 31 2e 32 20 7b  igest_Cmds-1.2 {
0550: 6d 64 35 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b  md5 cmd} -body {
0560: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 35 20 24 74 65  ..::tls::md5 $te
0570: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
0580: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
0590: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
05a0: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44  b94ea09}..test D
05b0: 69 67 65 73 74 5f 43 6d 64 73 2d 31 2e 33 20 7b  igest_Cmds-1.3 {
05c0: 73 68 61 31 20 63 6d 64 7d 20 2d 62 6f 64 79 20  sha1 cmd} -body 
05d0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 31 20 24  {..::tls::sha1 $
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 34 66 65 30 33 62 37  -result {4fe03b7
0600: 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63  f2568551dfafb98c
0610: 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37  a6004e65c4b71aa7
0620: 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f  d}..test Digest_
0630: 43 6d 64 73 2d 31 2e 34 20 7b 73 68 61 32 35 36  Cmds-1.4 {sha256
0640: 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   cmd} -body {..:
0650: 3a 74 6c 73 3a 3a 73 68 61 32 35 36 20 24 74 65  :tls::sha256 $te
0660: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
0670: 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31  esult {9d3578fc1
0680: 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66  38205cf0ee4b4cef
0690: 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62  35fe101bb4ecac7b
06a0: 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63  1614c18e6fa48b5c
06b0: 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 44  7f95e19}..test D
06c0: 69 67 65 73 74 5f 43 6d 64 73 2d 31 2e 35 20 7b  igest_Cmds-1.5 {
06d0: 73 68 61 35 31 32 20 63 6d 64 7d 20 2d 62 6f 64  sha512 cmd} -bod
06e0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 35  y {..::tls::sha5
06f0: 31 32 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  12 $test_data.  
0700: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37    } -result {d17
0710: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35  8e759dc591270715
0720: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38  88d2fad173c06238
0730: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33  d87e800a6403c0a3
0740: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63  0daa4faaf05d0e7c
0750: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33  e04916afaa6a58a3
0760: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36  0cbeb597dacb01c6
0770: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36  2f9fb9d89bab9da6
0780: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a  30c699e4816f1}..
0790: 23 20 54 65 73 74 20 64 69 67 65 73 74 20 63 6f  # Test digest co
07a0: 6d 6d 61 6e 64 20 66 6f 72 20 72 65 61 64 20 63  mmand for read c
07b0: 68 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 44 69  hannel...test Di
07c0: 67 65 73 74 5f 43 68 61 6e 5f 52 65 61 64 2d 32  gest_Chan_Read-2
07d0: 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b  .1 {md4} -body {
07e0: 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68  ..digest_read_ch
07f0: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65  an ::tls::md $te
0800: 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20  st_file -digest 
0810: 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  md4.    } -resul
0820: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61  t {793399f792eca
0830: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30  2752c6af3234ba70
0840: 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  858}..test Diges
0850: 74 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 32 20  t_Chan_Read-2.2 
0860: 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  {md5} -body {..d
0870: 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20  igest_read_chan 
0880: 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f  ::tls::md $test_
0890: 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 35  file -digest md5
08a0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
08b0: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
08c0: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
08d0: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43  }..test Digest_C
08e0: 68 61 6e 5f 52 65 61 64 2d 32 2e 33 20 7b 73 68  han_Read-2.3 {sh
08f0: 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  a1} -body {..dig
0900: 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a  est_read_chan ::
0910: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69  tls::md $test_fi
0920: 6c 65 20 2d 64 69 67 65 73 74 20 73 68 61 31 0a  le -digest sha1.
0930: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34      } -result {4
0940: 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66  fe03b7f2568551df
0950: 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34  afb98ca6004e65c4
0960: 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 44  b71aa7d}..test D
0970: 69 67 65 73 74 5f 43 68 61 6e 5f 52 65 61 64 2d  igest_Chan_Read-
0980: 32 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f  2.4 {sha256} -bo
0990: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61  dy {..digest_rea
09a0: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  d_chan ::tls::md
09b0: 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67   $test_file -dig
09c0: 65 73 74 20 73 68 61 32 35 36 0a 20 20 20 20 7d  est sha256.    }
09d0: 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38   -result {9d3578
09e0: 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34  fc138205cf0ee4b4
09f0: 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61  cef35fe101bb4eca
0a00: 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38  c7b1614c18e6fa48
0a10: 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73  b5c7f95e19}..tes
0a20: 74 20 44 69 67 65 73 74 5f 43 68 61 6e 5f 52 65  t Digest_Chan_Re
0a30: 61 64 2d 32 2e 35 20 7b 73 68 61 35 31 32 7d 20  ad-2.5 {sha512} 
0a40: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
0a50: 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  read_chan ::tls:
0a60: 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d  :md $test_file -
0a70: 64 69 67 65 73 74 20 73 68 61 35 31 32 0a 20 20  digest sha512.  
0a80: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37    } -result {d17
0a90: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35  8e759dc591270715
0aa0: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38  88d2fad173c06238
0ab0: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33  d87e800a6403c0a3
0ac0: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63  0daa4faaf05d0e7c
0ad0: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33  e04916afaa6a58a3
0ae0: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36  0cbeb597dacb01c6
0af0: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36  2f9fb9d89bab9da6
0b00: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a  30c699e4816f1}..
0b10: 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61 6e  test Digest_Chan
0b20: 5f 52 65 61 64 2d 32 2e 36 20 7b 6d 64 35 20 62  _Read-2.6 {md5 b
0b30: 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e  in} -body {..bin
0b40: 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b  ary encode hex [
0b50: 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e  digest_read_chan
0b60: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
0b70: 5f 66 69 6c 65 20 2d 62 69 6e 20 2d 64 69 67 65  _file -bin -dige
0b80: 73 74 20 6d 64 35 5d 0a 20 20 20 20 7d 20 2d 72  st md5].    } -r
0b90: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
0ba0: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
0bb0: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44  b94ea09}..test D
0bc0: 69 67 65 73 74 5f 43 68 61 6e 5f 52 65 61 64 2d  igest_Chan_Read-
0bd0: 32 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62  2.7 {md5 hex} -b
0be0: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
0bf0: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
0c00: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 68 65  d $test_file -he
0c10: 78 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20  x -digest md5.  
0c20: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32    } -result {962
0c30: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62  bf0803b4232ec23b
0c40: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a  d8427bb94ea09}..
0c50: 23 20 54 65 73 74 20 64 69 67 65 73 74 20 63 6f  # Test digest co
0c60: 6d 6d 61 6e 64 20 66 6f 72 20 77 72 69 74 65 20  mmand for write 
0c70: 63 68 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 44  channel...test D
0c80: 69 67 65 73 74 5f 43 68 61 6e 5f 57 72 69 74 65  igest_Chan_Write
0c90: 2d 33 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79  -3.1 {md4} -body
0ca0: 20 7b 0a 09 64 69 67 65 73 74 5f 77 72 69 74 65   {..digest_write
0cb0: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
0cc0: 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24  $test_alt_file $
0cd0: 74 65 73 74 5f 64 61 74 61 20 2d 64 69 67 65 73  test_data -diges
0ce0: 74 20 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73  t md4.    } -res
0cf0: 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65  ult {793399f792e
0d00: 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61  ca2752c6af3234ba
0d10: 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67  70858}..test Dig
0d20: 65 73 74 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33  est_Chan_Write-3
0d30: 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b  .2 {md5} -body {
0d40: 0a 09 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63  ..digest_write_c
0d50: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
0d60: 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65  est_alt_file $te
0d70: 73 74 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20  st_data -digest 
0d80: 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  md5.    } -resul
0d90: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
0da0: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
0db0: 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  a09}..test Diges
0dc0: 74 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 33  t_Chan_Write-3.3
0dd0: 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a   {sha1} -body {.
0de0: 09 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68  .digest_write_ch
0df0: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65  an ::tls::md $te
0e00: 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73  st_alt_file $tes
0e10: 74 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20 73  t_data -digest s
0e20: 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ha1.    } -resul
0e30: 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35  t {4fe03b7f25685
0e40: 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65  51dfafb98ca6004e
0e50: 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65  65c4b71aa7d}..te
0e60: 73 74 20 44 69 67 65 73 74 5f 43 68 61 6e 5f 57  st Digest_Chan_W
0e70: 72 69 74 65 2d 33 2e 34 20 7b 73 68 61 32 35 36  rite-3.4 {sha256
0e80: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
0e90: 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74  t_write_chan ::t
0ea0: 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74  ls::md $test_alt
0eb0: 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61  _file $test_data
0ec0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 0a   -digest sha256.
0ed0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
0ee0: 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30  d3578fc138205cf0
0ef0: 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62  ee4b4cef35fe101b
0f00: 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65  b4ecac7b1614c18e
0f10: 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d  6fa48b5c7f95e19}
0f20: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 68  ..test Digest_Ch
0f30: 61 6e 5f 57 72 69 74 65 2d 33 2e 35 20 7b 73 68  an_Write-3.5 {sh
0f40: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  a512} -body {..d
0f50: 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e  igest_write_chan
0f60: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
0f70: 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f  _alt_file $test_
0f80: 64 61 74 61 20 2d 64 69 67 65 73 74 20 73 68 61  data -digest sha
0f90: 35 31 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  512.    } -resul
0fa0: 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31  t {d178e759dc591
0fb0: 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33  27071588d2fad173
0fc0: 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34  c06238d87e800a64
0fd0: 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30  03c0a30daa4faaf0
0fe0: 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61  5d0e7ce04916afaa
0ff0: 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61  6a58a30cbeb597da
1000: 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62  cb01c62f9fb9d89b
1010: 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31  ab9da630c699e481
1020: 36 66 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  6f1}..test Diges
1030: 74 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 36  t_Chan_Write-3.6
1040: 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79   {md5 bin} -body
1050: 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64   {..binary encod
1060: 65 20 68 65 78 20 5b 64 69 67 65 73 74 5f 77 72  e hex [digest_wr
1070: 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ite_chan ::tls::
1080: 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c  md $test_alt_fil
1090: 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 62 69  e $test_data -bi
10a0: 6e 20 2d 64 69 67 65 73 74 20 6d 64 35 5d 0a 20  n -digest md5]. 
10b0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
10c0: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
10d0: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
10e0: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61  .test Digest_Cha
10f0: 6e 5f 57 72 69 74 65 2d 33 2e 37 20 7b 6d 64 35  n_Write-3.7 {md5
1100: 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 64   hex} -body {..d
1110: 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e  igest_write_chan
1120: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
1130: 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f  _alt_file $test_
1140: 64 61 74 61 20 2d 68 65 78 20 2d 64 69 67 65 73  data -hex -diges
1150: 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73  t md5.    } -res
1160: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
1170: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
1180: 34 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 64  4ea09}..# Test d
1190: 69 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f  igest command fo
11a0: 72 20 6f 62 6a 65 63 74 20 63 6f 6d 6d 61 6e 64  r object command
11b0: 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43  ...test Digest_C
11c0: 6f 6d 6d 61 6e 64 2d 34 2e 31 20 7b 6d 64 34 7d  ommand-4.1 {md4}
11d0: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
11e0: 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73  _accumulate $tes
11f0: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64  t_data ::tls::md
1200: 20 2d 64 69 67 65 73 74 20 6d 64 34 0a 20 20 20   -digest md4.   
1210: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33   } -result {7933
1220: 39 39 66 37 39 32 65 63 61 32 37 35 32 63 36 61  99f792eca2752c6a
1230: 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74  f3234ba70858}..t
1240: 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61  est Digest_Comma
1250: 6e 64 2d 34 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f  nd-4.2 {md5} -bo
1260: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63  dy {..digest_acc
1270: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61  umulate $test_da
1280: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  ta ::tls::md -di
1290: 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d  gest md5.    } -
12a0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
12b0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
12c0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
12d0: 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64 2d 34  Digest_Command-4
12e0: 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20  .3 {sha1} -body 
12f0: 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75  {..digest_accumu
1300: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
1310: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1320: 74 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 65  t sha1.    } -re
1330: 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35  sult {4fe03b7f25
1340: 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30  68551dfafb98ca60
1350: 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a  04e65c4b71aa7d}.
1360: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d  .test Digest_Com
1370: 6d 61 6e 64 2d 34 2e 34 20 7b 73 68 61 32 35 36  mand-4.4 {sha256
1380: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
1390: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
13a0: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
13b0: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
13c0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
13d0: 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66  9d3578fc138205cf
13e0: 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31  0ee4b4cef35fe101
13f0: 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38  bb4ecac7b1614c18
1400: 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39  e6fa48b5c7f95e19
1410: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43  }..test Digest_C
1420: 6f 6d 6d 61 6e 64 2d 34 2e 35 20 7b 73 68 61 35  ommand-4.5 {sha5
1430: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  12} -body {..dig
1440: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
1450: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
1460: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 35  :md -digest sha5
1470: 31 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  12.    } -result
1480: 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31 32   {d178e759dc5912
1490: 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33 63  7071588d2fad173c
14a0: 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34 30  06238d87e800a640
14b0: 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30 35  3c0a30daa4faaf05
14c0: 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61 36  d0e7ce04916afaa6
14d0: 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61 63  a58a30cbeb597dac
14e0: 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62 61  b01c62f9fb9d89ba
14f0: 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31 36  b9da630c699e4816
1500: 66 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  f1}..test Digest
1510: 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 36 20 7b 6d 64  _Command-4.6 {md
1520: 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09  5 bin} -body {..
1530: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
1540: 78 20 5b 64 69 67 65 73 74 5f 61 63 63 75 6d 75  x [digest_accumu
1550: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
1560: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1570: 74 20 6d 64 35 20 2d 62 69 6e 5d 0a 20 20 20 20  t md5 -bin].    
1580: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
1590: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
15a0: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65  427bb94ea09}..te
15b0: 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e  st Digest_Comman
15c0: 64 2d 34 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20  d-4.7 {md5 hex} 
15d0: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
15e0: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
15f0: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _data ::tls::md 
1600: 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 68 65 78  -digest md5 -hex
1610: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1620: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1630: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1640: 7d 0a 0a 23 20 54 65 73 74 20 64 69 67 65 73 74  }..# Test digest
1650: 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 64 61 74   command for dat
1660: 61 20 73 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73  a shortcut...tes
1670: 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d 35 2e  t Digest_Data-5.
1680: 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a  1 {md4} -body {.
1690: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 6d 64 34 20 24  .::tls::md md4 $
16a0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
16b0: 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66  -result {793399f
16c0: 37 39 32 65 63 61 32 37 35 32 63 36 61 66 33 32  792eca2752c6af32
16d0: 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74  34ba70858}..test
16e0: 20 44 69 67 65 73 74 5f 44 61 74 61 2d 35 2e 32   Digest_Data-5.2
16f0: 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09   {md5} -body {..
1700: 3a 3a 74 6c 73 3a 3a 6d 64 20 6d 64 35 20 24 74  ::tls::md md5 $t
1710: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
1720: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
1730: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
1740: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
1750: 44 69 67 65 73 74 5f 44 61 74 61 2d 35 2e 33 20  Digest_Data-5.3 
1760: 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09  {sha1} -body {..
1770: 3a 3a 74 6c 73 3a 3a 6d 64 20 73 68 61 31 20 24  ::tls::md sha1 $
1780: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1790: 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37  -result {4fe03b7
17a0: 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63  f2568551dfafb98c
17b0: 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37  a6004e65c4b71aa7
17c0: 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f  d}..test Digest_
17d0: 44 61 74 61 2d 35 2e 34 20 7b 73 68 61 32 35 36  Data-5.4 {sha256
17e0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
17f0: 3a 3a 6d 64 20 73 68 61 32 35 36 20 24 74 65 73  ::md sha256 $tes
1800: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
1810: 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33  sult {9d3578fc13
1820: 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33  8205cf0ee4b4cef3
1830: 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31  5fe101bb4ecac7b1
1840: 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37  614c18e6fa48b5c7
1850: 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 44 69  f95e19}..test Di
1860: 67 65 73 74 5f 44 61 74 61 2d 35 2e 35 20 7b 73  gest_Data-5.5 {s
1870: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
1880: 3a 3a 74 6c 73 3a 3a 6d 64 20 73 68 61 35 31 32  ::tls::md sha512
1890: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
18a0: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65  } -result {d178e
18b0: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38  759dc59127071588
18c0: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38  d2fad173c06238d8
18d0: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64  7e800a6403c0a30d
18e0: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30  aa4faaf05d0e7ce0
18f0: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63  4916afaa6a58a30c
1900: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66  beb597dacb01c62f
1910: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30  9fb9d89bab9da630
1920: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 23 20  c699e4816f1}..# 
1930: 54 65 73 74 20 64 69 67 65 73 74 20 63 6f 6d 6d  Test digest comm
1940: 61 6e 64 20 66 6f 72 20 64 61 74 61 0a 0a 74 65  and for data..te
1950: 73 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d 35  st Digest_Data-5
1960: 2e 36 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b  .6 {md4} -body {
1970: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
1980: 65 73 74 20 6d 64 34 20 2d 64 61 74 61 20 24 74  est md4 -data $t
1990: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
19a0: 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37  result {793399f7
19b0: 39 32 65 63 61 32 37 35 32 63 36 61 66 33 32 33  92eca2752c6af323
19c0: 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20  4ba70858}..test 
19d0: 44 69 67 65 73 74 5f 44 61 74 61 2d 35 2e 37 20  Digest_Data-5.7 
19e0: 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  {md5} -body {..:
19f0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
1a00: 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73 74   md5 -data $test
1a10: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
1a20: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
1a30: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
1a40: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67  4ea09}..test Dig
1a50: 65 73 74 5f 44 61 74 61 2d 35 2e 38 20 7b 73 68  est_Data-5.8 {sh
1a60: 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  a1} -body {..::t
1a70: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
1a80: 68 61 31 20 2d 64 61 74 61 20 24 74 65 73 74 5f  ha1 -data $test_
1a90: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
1aa0: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
1ab0: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
1ac0: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
1ad0: 65 73 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d  est Digest_Data-
1ae0: 35 2e 39 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f  5.9 {sha256} -bo
1af0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
1b00: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
1b10: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
1b20: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
1b30: 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30  d3578fc138205cf0
1b40: 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62  ee4b4cef35fe101b
1b50: 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65  b4ecac7b1614c18e
1b60: 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d  6fa48b5c7f95e19}
1b70: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61  ..test Digest_Da
1b80: 74 61 2d 35 2e 31 30 20 7b 73 68 61 35 31 32 7d  ta-5.10 {sha512}
1b90: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
1ba0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 35  :md -digest sha5
1bb0: 31 32 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  12 -data $test_d
1bc0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
1bd0: 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31  t {d178e759dc591
1be0: 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33  27071588d2fad173
1bf0: 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34  c06238d87e800a64
1c00: 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30  03c0a30daa4faaf0
1c10: 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61  5d0e7ce04916afaa
1c20: 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61  6a58a30cbeb597da
1c30: 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62  cb01c62f9fb9d89b
1c40: 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31  ab9da630c699e481
1c50: 36 66 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  6f1}..test Diges
1c60: 74 5f 44 61 74 61 2d 35 2e 31 31 20 7b 6d 64 35  t_Data-5.11 {md5
1c70: 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62   bin} -body {..b
1c80: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
1c90: 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67   [::tls::md -dig
1ca0: 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74  est md5 -data $t
1cb0: 65 73 74 5f 64 61 74 61 20 2d 62 69 6e 5d 0a 20  est_data -bin]. 
1cc0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
1cd0: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
1ce0: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
1cf0: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61 74  .test Digest_Dat
1d00: 61 2d 35 2e 31 32 20 7b 6d 64 35 20 68 65 78 7d  a-5.12 {md5 hex}
1d10: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
1d20: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
1d30: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
1d40: 20 2d 68 65 78 0a 20 20 20 20 7d 20 2d 72 65 73   -hex.    } -res
1d50: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
1d60: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
1d70: 34 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 64  4ea09}..# Test d
1d80: 69 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f  igest command fo
1d90: 72 20 66 69 6c 65 0a 0a 0a 74 65 73 74 20 44 69  r file...test Di
1da0: 67 65 73 74 5f 46 69 6c 65 2d 36 2e 31 20 7b 6d  gest_File-6.1 {m
1db0: 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  d4} -body {..::t
1dc0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
1dd0: 64 34 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  d4 -file $test_f
1de0: 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ile.    } -resul
1df0: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61  t {793399f792eca
1e00: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30  2752c6af3234ba70
1e10: 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73  858}..test Diges
1e20: 74 5f 46 69 6c 65 2d 36 2e 32 20 7b 6d 64 35 7d  t_File-6.2 {md5}
1e30: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
1e40: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
1e50: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
1e60: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1e70: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1e80: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1e90: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 46  }..test Digest_F
1ea0: 69 6c 65 2d 36 2e 33 20 7b 73 68 61 31 7d 20 2d  ile-6.3 {sha1} -
1eb0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1ec0: 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d  d -digest sha1 -
1ed0: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a  file $test_file.
1ee0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34      } -result {4
1ef0: 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66  fe03b7f2568551df
1f00: 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34  afb98ca6004e65c4
1f10: 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 44  b71aa7d}..test D
1f20: 69 67 65 73 74 5f 46 69 6c 65 2d 36 2e 34 20 7b  igest_File-6.4 {
1f30: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a  sha256} -body {.
1f40: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
1f50: 73 74 20 73 68 61 32 35 36 20 2d 66 69 6c 65 20  st sha256 -file 
1f60: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
1f70: 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38   -result {9d3578
1f80: 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34  fc138205cf0ee4b4
1f90: 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61  cef35fe101bb4eca
1fa0: 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38  c7b1614c18e6fa48
1fb0: 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73  b5c7f95e19}..tes
1fc0: 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 36 2e  t Digest_File-6.
1fd0: 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  5 {sha512} -body
1fe0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
1ff0: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 66 69  igest sha512 -fi
2000: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20  le $test_file.  
2010: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37    } -result {d17
2020: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35  8e759dc591270715
2030: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38  88d2fad173c06238
2040: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33  d87e800a6403c0a3
2050: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63  0daa4faaf05d0e7c
2060: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33  e04916afaa6a58a3
2070: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36  0cbeb597dacb01c6
2080: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36  2f9fb9d89bab9da6
2090: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a  30c699e4816f1}..
20a0: 74 65 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65  test Digest_File
20b0: 2d 36 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d  -6.6 {md5 bin} -
20c0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
20d0: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73  ncode hex [::tls
20e0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35  ::md -digest md5
20f0: 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c   -file $test_fil
2100: 65 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20 2d 72  e -bin].    } -r
2110: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
2120: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
2130: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44  b94ea09}..test D
2140: 69 67 65 73 74 5f 46 69 6c 65 2d 36 2e 37 20 7b  igest_File-6.7 {
2150: 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b  md5 hex} -body {
2160: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
2170: 65 73 74 20 6d 64 35 20 2d 66 69 6c 65 20 24 74  est md5 -file $t
2180: 65 73 74 5f 66 69 6c 65 20 2d 68 65 78 0a 20 20  est_file -hex.  
2190: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32    } -result {962
21a0: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62  bf0803b4232ec23b
21b0: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a  d8427bb94ea09}..
21c0: 23 20 54 65 73 74 20 48 4d 41 43 20 63 6f 6d 6d  # Test HMAC comm
21d0: 61 6e 64 0a 0a 0a 74 65 73 74 20 48 4d 41 43 2d  and...test HMAC-
21e0: 37 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79  7.1 {data} -body
21f0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
2200: 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 6b 65 79  -digest md5 -key
2210: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61   $test_key -data
2220: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
2230: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
2240: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
2250: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65  76c6a79d93d}..te
2260: 73 74 20 48 4d 41 43 2d 37 2e 32 20 7b 66 69 6c  st HMAC-7.2 {fil
2270: 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  e} -body {..::tl
2280: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
2290: 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  md5 -key $test_k
22a0: 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  ey -file $test_f
22b0: 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ile.    } -resul
22c0: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
22d0: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
22e0: 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d  93d}..test HMAC-
22f0: 37 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62  7.3 {channel} -b
2300: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
2310: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 68  ad_chan ::tls::h
2320: 6d 61 63 20 24 74 65 73 74 5f 66 69 6c 65 20 2d  mac $test_file -
2330: 64 69 67 65 73 74 20 6d 64 35 20 2d 6b 65 79 20  digest md5 -key 
2340: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
2350: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
2360: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
2370: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
2380: 20 48 4d 41 43 2d 37 2e 34 20 7b 63 6f 6d 6d 61   HMAC-7.4 {comma
2390: 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  nd} -body {..dig
23a0: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
23b0: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
23c0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 6d 64  :hmac -digest md
23d0: 35 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  5 -key $test_key
23e0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
23f0: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
2400: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
2410: 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d 37 2e 35  }..test HMAC-7.5
2420: 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64   {data bin} -bod
2430: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
2440: 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 68  de hex [::tls::h
2450: 6d 61 63 20 2d 64 69 67 65 73 74 20 6d 64 35 20  mac -digest md5 
2460: 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f  -bin -key $test_
2470: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
2480: 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73  data].    } -res
2490: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
24a0: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
24b0: 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 44  9d93d}..# Test D
24c0: 69 67 65 73 74 20 48 4d 41 43 0a 0a 0a 74 65 73  igest HMAC...tes
24d0: 74 20 44 69 67 65 73 74 5f 48 4d 41 43 2d 38 2e  t Digest_HMAC-8.
24e0: 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b  1 {data} -body {
24f0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
2500: 65 73 74 20 6d 64 35 20 2d 6b 65 79 20 24 74 65  est md5 -key $te
2510: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
2520: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
2530: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
2540: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
2550: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 44  a79d93d}..test D
2560: 69 67 65 73 74 5f 48 4d 41 43 2d 38 2e 32 20 7b  igest_HMAC-8.2 {
2570: 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  file} -body {..:
2580: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
2590: 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f   md5 -key $test_
25a0: 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  key -file $test_
25b0: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
25c0: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30  lt {f98327ef3e20
25d0: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39  ab6d388f676c6a79
25e0: 64 39 33 64 7d 0a 0a 74 65 73 74 20 44 69 67 65  d93d}..test Dige
25f0: 73 74 5f 48 4d 41 43 2d 38 2e 33 20 7b 63 68 61  st_HMAC-8.3 {cha
2600: 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  nnel} -body {..d
2610: 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20  igest_read_chan 
2620: 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f  ::tls::md $test_
2630: 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 35  file -digest md5
2640: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a   -key $test_key.
2650: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
2660: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
2670: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
2680: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 48 4d  ..test Digest_HM
2690: 41 43 2d 38 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d  AC-8.4 {command}
26a0: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
26b0: 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73  _accumulate $tes
26c0: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64  t_data ::tls::md
26d0: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 6b 65   -digest md5 -ke
26e0: 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20  y $test_key.    
26f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
2700: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
2710: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65  76c6a79d93d}..te
2720: 73 74 20 44 69 67 65 73 74 5f 48 4d 41 43 2d 38  st Digest_HMAC-8
2730: 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62  .5 {data bin} -b
2740: 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e  ody {..binary en
2750: 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a  code hex [::tls:
2760: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
2770: 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f  -bin -key $test_
2780: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
2790: 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73  data].    } -res
27a0: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
27b0: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
27c0: 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 43  9d93d}..# Test C
27d0: 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20  MAC command.set 
27e0: 74 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 73  test_cipher "aes
27f0: 2d 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 65  -128-cbc".set te
2800: 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20  st_key "Example 
2810: 6b 65 79 20 31 32 33 34 22 0a 0a 0a 74 65 73 74  key 1234"...test
2820: 20 43 4d 41 43 2d 39 2e 31 20 7b 64 61 74 61 7d   CMAC-9.1 {data}
2830: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2840: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74  :cmac -cipher $t
2850: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2860: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
2870: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
2880: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2890: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
28a0: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
28b0: 74 20 43 4d 41 43 2d 39 2e 32 20 7b 66 69 6c 65  t CMAC-9.2 {file
28c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
28d0: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24  ::cmac -cipher $
28e0: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
28f0: 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65   $test_key -file
2900: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
2910: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2920: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2930: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2940: 73 74 20 43 4d 41 43 2d 39 2e 33 20 7b 63 68 61  st CMAC-9.3 {cha
2950: 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64  nnel} -body {..d
2960: 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20  igest_read_chan 
2970: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73  ::tls::cmac $tes
2980: 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20 24  t_file -cipher $
2990: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
29a0: 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d   $test_key.    }
29b0: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
29c0: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
29d0: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
29e0: 74 20 43 4d 41 43 2d 39 2e 34 20 7b 63 6f 6d 6d  t CMAC-9.4 {comm
29f0: 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  and} -body {..di
2a00: 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20  gest_accumulate 
2a10: 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73  $test_data ::tls
2a20: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24  ::cmac -cipher $
2a30: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2a40: 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d   $test_key.    }
2a50: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2a60: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
2a70: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
2a80: 74 20 43 4d 41 43 2d 39 2e 35 20 7b 64 61 74 61  t CMAC-9.5 {data
2a90: 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62   bin} -body {..b
2aa0: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
2ab0: 20 5b 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 62   [::tls::cmac -b
2ac0: 69 6e 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  in -cipher $test
2ad0: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2ae0: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
2af0: 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d  st_data].    } -
2b00: 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66  result {baf5c20f
2b10: 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65  9973e2d606b14c7e
2b20: 66 64 66 65 35 32 66 61 7d 0a 0a 23 20 54 65 73  fdfe52fa}..# Tes
2b30: 74 20 44 69 67 65 73 74 20 43 4d 41 43 0a 0a 0a  t Digest CMAC...
2b40: 74 65 73 74 20 44 69 67 65 73 74 5f 43 4d 41 43  test Digest_CMAC
2b50: 2d 31 30 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f  -10.1 {data} -bo
2b60: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
2b70: 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69  -cipher $test_ci
2b80: 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f  pher -key $test_
2b90: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
2ba0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
2bb0: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
2bc0: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
2bd0: 35 32 66 61 7d 0a 0a 74 65 73 74 20 44 69 67 65  52fa}..test Dige
2be0: 73 74 5f 43 4d 41 43 2d 31 30 2e 32 20 7b 66 69  st_CMAC-10.2 {fi
2bf0: 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  le} -body {..::t
2c00: 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24  ls::md -cipher $
2c10: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2c20: 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65   $test_key -file
2c30: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
2c40: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2c50: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2c60: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2c70: 73 74 20 44 69 67 65 73 74 5f 43 4d 41 43 2d 31  st Digest_CMAC-1
2c80: 30 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62  0.3 {channel} -b
2c90: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
2ca0: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
2cb0: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 63 69  d $test_file -ci
2cc0: 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65  pher $test_ciphe
2cd0: 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  r -key $test_key
2ce0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
2cf0: 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36  baf5c20f9973e2d6
2d00: 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61  06b14c7efdfe52fa
2d10: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43  }..test Digest_C
2d20: 4d 41 43 2d 31 30 2e 34 20 7b 63 6f 6d 6d 61 6e  MAC-10.4 {comman
2d30: 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65  d} -body {..dige
2d40: 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74  st_accumulate $t
2d50: 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a  est_data ::tls::
2d60: 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  md -cipher $test
2d70: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2d80: 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65  st_key.    } -re
2d90: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2da0: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2db0: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 44 69  fe52fa}..test Di
2dc0: 67 65 73 74 5f 43 4d 41 43 2d 31 30 2e 35 20 7b  gest_CMAC-10.5 {
2dd0: 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20  data bin} -body 
2de0: 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65  {..binary encode
2df0: 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20   hex [::tls::md 
2e00: 2d 62 69 6e 20 2d 63 69 70 68 65 72 20 24 74 65  -bin -cipher $te
2e10: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2e20: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
2e30: 74 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d  test_data].    }
2e40: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2e50: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
2e60: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 23 20 54  7efdfe52fa}..# T
2e70: 65 73 74 20 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a  est MAC command.
2e80: 0a 0a 74 65 73 74 20 4d 41 43 2d 31 31 2e 31 20  ..test MAC-11.1 
2e90: 7b 48 4d 41 43 7d 20 2d 63 6f 6e 73 74 72 61 69  {HMAC} -constrai
2ea0: 6e 74 73 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62  nts {new_api} -b
2eb0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61  ody {..::tls::ma
2ec0: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  c -digest sha256
2ed0: 20 2d 6d 61 63 20 68 6d 61 63 20 2d 6b 65 79 20   -mac hmac -key 
2ee0: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
2ef0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
2f00: 20 2d 72 65 73 75 6c 74 20 7b 34 39 38 65 66 35   -result {498ef5
2f10: 65 66 37 31 34 32 34 66 38 31 64 61 37 34 39 39  ef71424f81da7499
2f20: 62 32 65 65 61 65 31 64 30 61 33 34 38 64 64 34  b2eeae1d0a348dd4
2f30: 30 62 38 34 31 65 61 32 37 62 64 64 65 34 39 34  0b841ea27bdde494
2f40: 66 36 62 63 39 30 34 36 66 66 7d 0a 0a 74 65 73  f6bc9046ff}..tes
2f50: 74 20 4d 41 43 2d 31 31 2e 32 20 7b 43 4d 41 43  t MAC-11.2 {CMAC
2f60: 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b  } -constraints {
2f70: 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64 79 20 7b  new_api} -body {
2f80: 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 63 69  ..::tls::mac -ci
2f90: 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65  pher $test_ciphe
2fa0: 72 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  r -digest sha256
2fb0: 20 2d 6d 61 63 20 63 6d 61 63 20 2d 6b 65 79 20   -mac cmac -key 
2fc0: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
2fd0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
2fe0: 20 2d 72 65 73 75 6c 74 20 7b 34 39 38 65 66 35   -result {498ef5
2ff0: 65 66 37 31 34 32 34 66 38 31 64 61 37 34 39 39  ef71424f81da7499
3000: 62 32 65 65 61 65 31 64 30 61 33 34 38 64 64 34  b2eeae1d0a348dd4
3010: 30 62 38 34 31 65 61 32 37 62 64 64 65 34 39 34  0b841ea27bdde494
3020: 66 36 62 63 39 30 34 36 66 66 7d 0a 0a 23 20 44  f6bc9046ff}..# D
3030: 69 67 65 73 74 20 45 72 72 6f 72 20 43 61 73 65  igest Error Case
3040: 73 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f  s...test Digest_
3050: 45 72 72 6f 72 73 2d 31 32 2e 31 20 7b 54 6f 6f  Errors-12.1 {Too
3060: 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79   few args} -body
3070: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 0a 20 20   {..::tls::md.  
3080: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f    } -result {wro
3090: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
30a0: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20  d be "::tls::md 
30b0: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69  ?-bin|-hex? ?-ci
30c0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67  pher name? ?-dig
30d0: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20  est name? ?-key 
30e0: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f  key? ?-mac name?
30f0: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20   [-channel chan 
3100: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
3110: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e  me | -file filen
3120: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61  ame | ?-data? da
3130: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  ta]"} -returnCod
3140: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67  es {1}..test Dig
3150: 65 73 74 5f 45 72 72 6f 72 73 2d 31 32 2e 32 20  est_Errors-12.2 
3160: 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20  {Too many args} 
3170: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
3180: 6d 64 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d  md too many comm
3190: 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74 6f  and line args to
31a0: 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20 77   pass the test w
31b0: 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72 20  ithout an error 
31c0: 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d  or failing.    }
31d0: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
31e0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
31f0: 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20 3f 2d 62  e "::tls::md ?-b
3200: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65  in|-hex? ?-ciphe
3210: 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74  r name? ?-digest
3220: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79   name? ?-key key
3230: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d  ? ?-mac name? [-
3240: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d  channel chan | -
3250: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20  command cmdName 
3260: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65  | -file filename
3270: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d   | ?-data? data]
3280: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
3290: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  {1}..test Digest
32a0: 5f 45 72 72 6f 72 73 2d 31 32 2e 33 20 7b 49 6e  _Errors-12.3 {In
32b0: 76 61 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62  valid digest} -b
32c0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
32d0: 20 62 6f 67 75 73 20 64 61 74 61 0a 20 20 20 20   bogus data.    
32e0: 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c  } -result {Inval
32f0: 69 64 20 64 69 67 65 73 74 20 22 62 6f 67 75 73  id digest "bogus
3300: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
3310: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  {1}..test Digest
3320: 5f 45 72 72 6f 72 73 2d 31 32 2e 34 20 7b 49 6e  _Errors-12.4 {In
3330: 76 61 6c 69 64 20 64 69 67 65 73 74 20 41 72 67  valid digest Arg
3340: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3350: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 62 6f 67  ::md -digest bog
3360: 75 73 20 2d 64 61 74 61 20 64 61 74 61 0a 20 20  us -data data.  
3370: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76    } -result {Inv
3380: 61 6c 69 64 20 64 69 67 65 73 74 20 22 62 6f 67  alid digest "bog
3390: 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  us"} -returnCode
33a0: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65  s {1}..test Dige
33b0: 73 74 5f 45 72 72 6f 72 73 2d 31 32 2e 35 20 7b  st_Errors-12.5 {
33c0: 4e 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79  No digest} -body
33d0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 68   {..::tls::md -h
33e0: 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a 20  ex -data value. 
33f0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f     } -result {No
3400: 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69 65   digest specifie
3410: 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  d} -returnCodes 
3420: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  {1}..test Digest
3430: 5f 45 72 72 6f 72 73 2d 31 32 2e 36 20 7b 49 6e  _Errors-12.6 {In
3440: 76 61 6c 69 64 20 6f 70 74 69 6f 6e 7d 20 2d 62  valid option} -b
3450: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
3460: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
3470: 2d 62 6f 67 75 73 20 76 61 6c 75 65 0a 20 20 20  -bogus value.   
3480: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 64 20   } -result {bad 
3490: 6f 70 74 69 6f 6e 20 22 2d 62 6f 67 75 73 22 3a  option "-bogus":
34a0: 20 6d 75 73 74 20 62 65 20 2d 62 69 6e 2c 20 2d   must be -bin, -
34b0: 63 68 61 6e 6e 65 6c 2c 20 2d 63 69 70 68 65 72  channel, -cipher
34c0: 2c 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74  , -command, -dat
34d0: 61 2c 20 2d 64 69 67 65 73 74 2c 20 2d 66 69 6c  a, -digest, -fil
34e0: 65 2c 20 2d 66 69 6c 65 6e 61 6d 65 2c 20 2d 68  e, -filename, -h
34f0: 65 78 2c 20 2d 6b 65 79 2c 20 6f 72 20 2d 6d 61  ex, -key, or -ma
3500: 63 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  c} -returnCodes 
3510: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74  {1}..test Digest
3520: 5f 45 72 72 6f 72 73 2d 31 32 2e 37 20 7b 49 6e  _Errors-12.7 {In
3530: 76 61 6c 69 64 20 66 69 6c 65 7d 20 2d 62 6f 64  valid file} -bod
3540: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
3550: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 66  digest sha256 -f
3560: 69 6c 65 20 62 6f 67 75 73 0a 20 20 20 20 7d 20  ile bogus.    } 
3570: 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c 64 6e 27  -result {couldn'
3580: 74 20 6f 70 65 6e 20 22 62 6f 67 75 73 22 3a 20  t open "bogus": 
3590: 6e 6f 20 73 75 63 68 20 66 69 6c 65 20 6f 72 20  no such file or 
35a0: 64 69 72 65 63 74 6f 72 79 7d 20 2d 72 65 74 75  directory} -retu
35b0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
35c0: 74 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d  t Digest_Errors-
35d0: 31 32 2e 38 20 7b 49 6e 76 61 6c 69 64 20 63 68  12.8 {Invalid ch
35e0: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09  annel} -body {..
35f0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
3600: 74 20 73 68 61 32 35 36 20 2d 63 68 61 6e 6e 65  t sha256 -channe
3610: 6c 20 62 6f 67 75 73 0a 20 20 20 20 7d 20 2d 72  l bogus.    } -r
3620: 65 73 75 6c 74 20 7b 63 61 6e 20 6e 6f 74 20 66  esult {can not f
3630: 69 6e 64 20 63 68 61 6e 6e 65 6c 20 6e 61 6d 65  ind channel name
3640: 64 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75  d "bogus"} -retu
3650: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 43  rnCodes {1}..# C
3660: 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a  MAC Error Cases.
3670: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f  ..test CMAC_Erro
3680: 72 73 2d 31 33 2e 31 20 7b 54 6f 6f 20 66 65 77  rs-13.1 {Too few
3690: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09   args} -body {..
36a0: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 0a 20 20 20 20  ::tls::cmac.    
36b0: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
36c0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
36d0: 62 65 20 22 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20  be "::tls::cmac 
36e0: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69  ?-bin|-hex? ?-ci
36f0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67  pher name? ?-dig
3700: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20  est name? ?-key 
3710: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f  key? ?-mac name?
3720: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20   [-channel chan 
3730: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
3740: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e  me | -file filen
3750: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61  ame | ?-data? da
3760: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  ta]"} -returnCod
3770: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41  es {1}..test CMA
3780: 43 5f 45 72 72 6f 72 73 2d 31 33 2e 32 20 7b 4e  C_Errors-13.2 {N
3790: 6f 20 63 69 70 68 65 72 7d 20 2d 62 6f 64 79 20  o cipher} -body 
37a0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
37b0: 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a  hex -data value.
37c0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e      } -result {N
37d0: 6f 20 63 69 70 68 65 72 20 73 70 65 63 69 66 69  o cipher specifi
37e0: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
37f0: 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f   {1}..test CMAC_
3800: 45 72 72 6f 72 73 2d 31 33 2e 33 20 7b 4e 6f 20  Errors-13.3 {No 
3810: 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  key} -body {..::
3820: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
3830: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
3840: 64 61 74 61 20 76 61 6c 75 65 0a 20 20 20 20 7d  data value.    }
3850: 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79   -result {No key
3860: 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74   specified} -ret
3870: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
3880: 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31  st CMAC_Errors-1
3890: 33 2e 34 20 7b 49 6e 76 61 6c 69 64 20 63 69 70  3.4 {Invalid cip
38a0: 68 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  her} -body {..::
38b0: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
38c0: 72 20 62 6f 67 75 73 20 2d 64 61 74 61 20 76 61  r bogus -data va
38d0: 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  lue.    } -resul
38e0: 74 20 7b 49 6e 76 61 6c 69 64 20 63 69 70 68 65  t {Invalid ciphe
38f0: 72 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75  r "bogus"} -retu
3900: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 48  rnCodes {1}..# H
3910: 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a  MAC Error Cases.
3920: 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f  ..test HMAC_Erro
3930: 72 73 2d 31 34 2e 31 20 7b 54 6f 6f 20 66 65 77  rs-14.1 {Too few
3940: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09   args} -body {..
3950: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 0a 20 20 20 20  ::tls::hmac.    
3960: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
3970: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
3980: 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20  be "::tls::hmac 
3990: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69  ?-bin|-hex? ?-ci
39a0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67  pher name? ?-dig
39b0: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20  est name? ?-key 
39c0: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f  key? ?-mac name?
39d0: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20   [-channel chan 
39e0: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
39f0: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e  me | -file filen
3a00: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61  ame | ?-data? da
3a10: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  ta]"} -returnCod
3a20: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41  es {1}..test HMA
3a30: 43 5f 45 72 72 6f 72 73 2d 31 34 2e 32 20 7b 4e  C_Errors-14.2 {N
3a40: 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20  o digest} -body 
3a50: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
3a60: 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a  hex -data value.
3a70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e      } -result {N
3a80: 6f 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69  o digest specifi
3a90: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
3aa0: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f   {1}..test HMAC_
3ab0: 45 72 72 6f 72 73 2d 31 34 2e 33 20 7b 4e 6f 20  Errors-14.3 {No 
3ac0: 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  key} -body {..::
3ad0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
3ae0: 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 76  t sha256 -data v
3af0: 61 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  alue.    } -resu
3b00: 6c 74 20 7b 4e 6f 20 6b 65 79 20 73 70 65 63 69  lt {No key speci
3b10: 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64  fied} -returnCod
3b20: 65 73 20 7b 31 7d 0a 0a 23 20 4d 41 43 20 45 72  es {1}..# MAC Er
3b30: 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74  ror Cases...test
3b40: 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 35 2e 31   MAC_Errors-15.1
3b50: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20   {Too few args} 
3b60: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6e 65  -constraints {ne
3b70: 77 5f 61 70 69 7d 20 2d 62 6f 64 79 20 7b 0a 09  w_api} -body {..
3b80: 3a 3a 74 6c 73 3a 3a 6d 6d 61 63 0a 20 20 20 20  ::tls::mmac.    
3b90: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
3ba0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
3bb0: 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f  be "::tls::mac ?
3bc0: 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70  -bin|-hex? ?-cip
3bd0: 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65  her name? ?-dige
3be0: 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b  st name? ?-key k
3bf0: 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20  ey? ?-mac name? 
3c00: 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c  [-channel chan |
3c10: 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d   -command cmdNam
3c20: 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61  e | -file filena
3c30: 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74  me | ?-data? dat
3c40: 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  a]"} -returnCode
3c50: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f  s {1}..test MAC_
3c60: 45 72 72 6f 72 73 2d 31 35 2e 32 20 7b 4e 6f 20  Errors-15.2 {No 
3c70: 6b 65 79 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  key} -constraint
3c80: 73 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64  s {new_api} -bod
3c90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20  y {..::tls::mac 
3ca0: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
3cb0: 64 61 74 61 20 76 61 6c 75 65 0a 20 20 20 20 7d  data value.    }
3cc0: 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79   -result {No key
3cd0: 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74   specified} -ret
3ce0: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20  urnCodes {1}..# 
3cf0: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
3d00: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
3d10: 20 23 31 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e   #1.set key [bin
3d20: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
3d30: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30  string repeat "0
3d40: 62 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61  b" 20]].set data
3d50: 20 22 48 69 20 54 68 65 72 65 22 0a 0a 0a 74 65   "Hi There"...te
3d60: 73 74 20 52 46 43 34 32 33 31 5f 54 43 31 2d 31  st RFC4231_TC1-1
3d70: 36 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f  6.1 {sha224} -bo
3d80: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
3d90: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34  c -digest sha224
3da0: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
3db0: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
3dc0: 73 75 6c 74 20 7b 38 39 36 66 62 31 31 32 38 61  sult {896fb1128a
3dd0: 62 62 64 66 31 39 36 38 33 32 31 30 37 63 64 34  bbdf196832107cd4
3de0: 39 64 66 33 33 66 34 37 62 34 62 31 31 36 39 39  9df33f47b4b11699
3df0: 31 32 62 61 34 66 35 33 36 38 34 62 32 32 7d 0a  12ba4f53684b22}.
3e00: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43  .test RFC4231_TC
3e10: 31 2d 31 36 2e 32 20 7b 73 68 61 32 35 36 7d 20  1-16.2 {sha256} 
3e20: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
3e30: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
3e40: 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  256 -key $key -d
3e50: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
3e60: 2d 72 65 73 75 6c 74 20 7b 62 30 33 34 34 63 36  -result {b0344c6
3e70: 31 64 38 64 62 33 38 35 33 35 63 61 38 61 66 63  1d8db38535ca8afc
3e80: 65 61 66 30 62 66 31 32 62 38 38 31 64 63 32 30  eaf0bf12b881dc20
3e90: 30 63 39 38 33 33 64 61 37 32 36 65 39 33 37 36  0c9833da726e9376
3ea0: 63 32 65 33 32 63 66 66 37 7d 0a 0a 74 65 73 74  c2e32cff7}..test
3eb0: 20 52 46 43 34 32 33 31 5f 54 43 31 2d 31 36 2e   RFC4231_TC1-16.
3ec0: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79  3 {sha384} -body
3ed0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
3ee0: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d  -digest sha384 -
3ef0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
3f00: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3f10: 6c 74 20 7b 61 66 64 30 33 39 34 34 64 38 34 38  lt {afd03944d848
3f20: 39 35 36 32 36 62 30 38 32 35 66 34 61 62 34 36  95626b0825f4ab46
3f30: 39 30 37 66 31 35 66 39 64 61 64 62 65 34 31 30  907f15f9dadbe410
3f40: 31 65 63 36 38 32 61 61 30 33 34 63 37 63 65 62  1ec682aa034c7ceb
3f50: 63 35 39 63 66 61 65 61 39 65 61 39 30 37 36 65  c59cfaea9ea9076e
3f60: 64 65 37 66 34 61 66 31 35 32 65 38 62 32 66 61  de7f4af152e8b2fa
3f70: 39 63 62 36 7d 0a 0a 74 65 73 74 20 52 46 43 34  9cb6}..test RFC4
3f80: 32 33 31 5f 54 43 31 2d 31 36 2e 34 20 7b 73 68  231_TC1-16.4 {sh
3f90: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a512} -body {..:
3fa0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
3fb0: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24  st sha512 -key $
3fc0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
3fd0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
3fe0: 37 61 61 37 63 64 65 61 35 65 66 36 31 39 64 34  7aa7cdea5ef619d4
3ff0: 66 66 30 62 34 32 34 31 61 31 64 36 63 62 30 32  ff0b4241a1d6cb02
4000: 33 37 39 66 34 65 32 63 65 34 65 63 32 37 38 37  379f4e2ce4ec2787
4010: 61 64 30 62 33 30 35 34 35 65 31 37 63 64 65 64  ad0b30545e17cded
4020: 61 61 38 33 33 62 37 64 36 62 38 61 37 30 32 30  aa833b7d6b8a7020
4030: 33 38 62 32 37 34 65 61 65 61 33 66 34 65 34 62  38b274eaea3f4e4b
4040: 65 39 64 39 31 34 65 65 62 36 31 66 31 37 30 32  e9d914eeb61f1702
4050: 65 36 39 36 63 32 30 33 61 31 32 36 38 35 34 7d  e696c203a126854}
4060: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
4070: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
4080: 43 61 73 65 20 23 32 20 2d 20 54 65 73 74 20 77  Case #2 - Test w
4090: 69 74 68 20 61 20 6b 65 79 20 73 68 6f 72 74 65  ith a key shorte
40a0: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 6e 67 74  r than the lengt
40b0: 68 20 6f 66 20 74 68 65 20 48 4d 41 43 20 6f 75  h of the HMAC ou
40c0: 74 70 75 74 2e 0a 73 65 74 20 6b 65 79 20 22 4a  tput..set key "J
40d0: 65 66 65 22 0a 73 65 74 20 64 61 74 61 20 22 77  efe".set data "w
40e0: 68 61 74 20 64 6f 20 79 61 20 77 61 6e 74 20 66  hat do ya want f
40f0: 6f 72 20 6e 6f 74 68 69 6e 67 3f 22 0a 0a 0a 74  or nothing?"...t
4100: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 32 2d  est RFC4231_TC2-
4110: 31 37 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62  17.1 {sha224} -b
4120: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
4130: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32  ac -digest sha22
4140: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
4150: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
4160: 65 73 75 6c 74 20 7b 61 33 30 65 30 31 30 39 38  esult {a30e01098
4170: 62 63 36 64 62 62 66 34 35 36 39 30 66 33 61 37  bc6dbbf45690f3a7
4180: 65 39 65 36 64 30 66 38 62 62 65 61 32 61 33 39  e9e6d0f8bbea2a39
4190: 65 36 31 34 38 30 30 38 66 64 30 35 65 34 34 7d  e6148008fd05e44}
41a0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54  ..test RFC4231_T
41b0: 43 32 2d 31 37 2e 32 20 7b 73 68 61 32 35 36 7d  C2-17.2 {sha256}
41c0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
41d0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
41e0: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
41f0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
4200: 20 2d 72 65 73 75 6c 74 20 7b 35 62 64 63 63 31   -result {5bdcc1
4210: 34 36 62 66 36 30 37 35 34 65 36 61 30 34 32 34  46bf60754e6a0424
4220: 32 36 30 38 39 35 37 35 63 37 35 61 30 30 33 66  26089575c75a003f
4230: 30 38 39 64 32 37 33 39 38 33 39 64 65 63 35 38  089d2739839dec58
4240: 62 39 36 34 65 63 33 38 34 33 7d 0a 0a 74 65 73  b964ec3843}..tes
4250: 74 20 52 46 43 34 32 33 31 5f 54 43 32 2d 31 37  t RFC4231_TC2-17
4260: 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64  .3 {sha384} -bod
4270: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
4280: 20 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20   -digest sha384 
4290: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
42a0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
42b0: 75 6c 74 20 7b 61 66 34 35 64 32 65 33 37 36 34  ult {af45d2e3764
42c0: 38 34 30 33 31 36 31 37 66 37 38 64 32 62 35 38  84031617f78d2b58
42d0: 61 36 62 31 62 39 63 37 65 66 34 36 34 66 35 61  a6b1b9c7ef464f5a
42e0: 30 31 62 34 37 65 34 32 65 63 33 37 33 36 33 32  01b47e42ec373632
42f0: 32 34 34 35 65 38 65 32 32 34 30 63 61 35 65 36  2445e8e2240ca5e6
4300: 39 65 32 63 37 38 62 33 32 33 39 65 63 66 61 62  9e2c78b3239ecfab
4310: 32 31 36 34 39 7d 0a 0a 74 65 73 74 20 52 46 43  21649}..test RFC
4320: 34 32 33 31 5f 54 43 32 2d 31 37 2e 34 20 7b 73  4231_TC2-17.4 {s
4330: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
4340: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
4350: 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20  est sha512 -key 
4360: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
4370: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4380: 31 36 34 62 37 61 37 62 66 63 66 38 31 39 65 32  164b7a7bfcf819e2
4390: 65 33 39 35 66 62 65 37 33 62 35 36 65 30 61 33  e395fbe73b56e0a3
43a0: 38 37 62 64 36 34 32 32 32 65 38 33 31 66 64 36  87bd64222e831fd6
43b0: 31 30 32 37 30 63 64 37 65 61 32 35 30 35 35 34  10270cd7ea250554
43c0: 39 37 35 38 62 66 37 35 63 30 35 61 39 39 34 61  9758bf75c05a994a
43d0: 36 64 30 33 34 66 36 35 66 38 66 30 65 36 66 64  6d034f65f8f0e6fd
43e0: 63 61 65 61 62 31 61 33 34 64 34 61 36 62 34 62  caeab1a34d4a6b4b
43f0: 36 33 36 65 30 37 30 61 33 38 62 63 65 37 33 37  636e070a38bce737
4400: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d  }..# RFC 4231 HM
4410: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74  AC Examples Test
4420: 20 43 61 73 65 20 23 33 20 2d 20 54 65 73 74 20   Case #3 - Test 
4430: 77 69 74 68 20 61 20 63 6f 6d 62 69 6e 65 64 20  with a combined 
4440: 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20 61 6e  length of key an
4450: 64 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6c  d data that is l
4460: 61 72 67 65 72 20 74 68 61 6e 20 36 34 20 62 79  arger than 64 by
4470: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a  tes (= block-siz
4480: 65 20 6f 66 20 53 48 41 2d 32 32 34 20 61 6e 64  e of SHA-224 and
4490: 20 53 48 41 2d 32 35 36 29 2e 0a 73 65 74 20 6b   SHA-256)..set k
44a0: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
44b0: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
44c0: 70 65 61 74 20 22 61 61 22 20 32 30 5d 5d 0a 73  peat "aa" 20]].s
44d0: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
44e0: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69  decode hex [stri
44f0: 6e 67 20 72 65 70 65 61 74 20 22 64 64 22 20 35  ng repeat "dd" 5
4500: 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34 32  0]]...test RFC42
4510: 33 31 5f 54 43 33 2d 31 38 2e 31 20 7b 73 68 61  31_TC3-18.1 {sha
4520: 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  224} -body {..::
4530: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
4540: 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b  t sha224 -key $k
4550: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
4560: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 66     } -result {7f
4570: 62 33 63 62 33 35 38 38 63 36 63 31 66 36 66 66  b3cb3588c6c1f6ff
4580: 61 39 36 39 34 64 37 64 36 61 64 32 36 34 39 33  a9694d7d6ad26493
4590: 36 35 62 30 63 31 66 36 35 64 36 39 64 31 65 63  65b0c1f65d69d1ec
45a0: 38 33 33 33 65 61 7d 0a 0a 74 65 73 74 20 52 46  8333ea}..test RF
45b0: 43 34 32 33 31 5f 54 43 33 2d 31 38 2e 32 20 7b  C4231_TC3-18.2 {
45c0: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a  sha256} -body {.
45d0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
45e0: 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79  gest sha256 -key
45f0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
4600: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
4610: 7b 37 37 33 65 61 39 31 65 33 36 38 30 30 65 34  {773ea91e36800e4
4620: 36 38 35 34 64 62 38 65 62 64 30 39 31 38 31 61  6854db8ebd09181a
4630: 37 32 39 35 39 30 39 38 62 33 65 66 38 63 31 32  72959098b3ef8c12
4640: 32 64 39 36 33 35 35 31 34 63 65 64 35 36 35 66  2d9635514ced565f
4650: 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  e}..test RFC4231
4660: 5f 54 43 33 2d 31 38 2e 33 20 7b 73 68 61 33 38  _TC3-18.3 {sha38
4670: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
4680: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
4690: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79  sha384 -key $key
46a0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
46b0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 38 30 36   } -result {8806
46c0: 32 36 30 38 64 33 65 36 61 64 38 61 30 61 61 32  2608d3e6ad8a0aa2
46d0: 61 63 65 30 31 34 63 38 61 38 36 66 30 61 61 36  ace014c8a86f0aa6
46e0: 33 35 64 39 34 37 61 63 39 66 65 62 65 38 33 65  35d947ac9febe83e
46f0: 66 34 65 35 35 39 36 36 31 34 34 62 32 61 35 61  f4e55966144b2a5a
4700: 62 33 39 64 63 31 33 38 31 34 62 39 34 65 33 61  b39dc13814b94e3a
4710: 62 36 65 31 30 31 61 33 34 66 32 37 7d 0a 0a 74  b6e101a34f27}..t
4720: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 33 2d  est RFC4231_TC3-
4730: 31 38 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  18.4 {sha512} -b
4740: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
4750: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
4760: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
4770: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
4780: 65 73 75 6c 74 20 7b 66 61 37 33 62 30 30 38 39  esult {fa73b0089
4790: 64 35 36 61 32 38 34 65 66 62 30 66 30 37 35 36  d56a284efb0f0756
47a0: 63 38 39 30 62 65 39 62 31 62 35 64 62 64 64 38  c890be9b1b5dbdd8
47b0: 65 65 38 31 61 33 36 35 35 66 38 33 65 33 33 62  ee81a3655f83e33b
47c0: 32 32 37 39 64 33 39 62 66 33 65 38 34 38 32 37  2279d39bf3e84827
47d0: 39 61 37 32 32 63 38 30 36 62 34 38 35 61 34 37  9a722c806b485a47
47e0: 65 36 37 63 38 30 37 62 39 34 36 61 33 33 37 62  e67c807b946a337b
47f0: 65 65 38 39 34 32 36 37 34 32 37 38 38 35 39 65  ee8942674278859e
4800: 31 33 32 39 32 66 62 7d 0a 0a 23 20 52 46 43 20  13292fb}..# RFC 
4810: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
4820: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 34 20  es Test Case #4 
4830: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 63 6f  - Test with a co
4840: 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66  mbined length of
4850: 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68   key and data th
4860: 61 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61  at is larger tha
4870: 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20 62 6c  n 64 bytes (= bl
4880: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d  ock-size of SHA-
4890: 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35 36 29  224 and SHA-256)
48a0: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72  ..set key [binar
48b0: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 30 31  y decode hex "01
48c0: 30 32 30 33 30 34 30 35 30 36 30 37 30 38 30 39  0203040506070809
48d0: 30 61 30 62 30 63 30 64 30 65 30 66 31 30 31 31  0a0b0c0d0e0f1011
48e0: 31 32 31 33 31 34 31 35 31 36 31 37 31 38 31 39  1213141516171819
48f0: 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  "].set data [bin
4900: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
4910: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 63  string repeat "c
4920: 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52  d" 50]]...test R
4930: 46 43 34 32 33 31 5f 54 43 34 2d 31 39 2e 31 20  FC4231_TC4-19.1 
4940: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b  {sha224} -body {
4950: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
4960: 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65  igest sha224 -ke
4970: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
4980: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
4990: 20 7b 36 63 31 31 35 30 36 38 37 34 30 31 33 63   {6c11506874013c
49a0: 61 63 36 61 32 61 62 63 31 62 62 33 38 32 36 32  ac6a2abc1bb38262
49b0: 37 63 65 63 36 61 39 30 64 38 36 65 66 63 30 31  7cec6a90d86efc01
49c0: 32 64 65 37 61 66 65 63 35 61 7d 0a 0a 74 65 73  2de7afec5a}..tes
49d0: 74 20 52 46 43 34 32 33 31 5f 54 43 34 2d 31 39  t RFC4231_TC4-19
49e0: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64  .2 {sha256} -bod
49f0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
4a00: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
4a10: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
4a20: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
4a30: 75 6c 74 20 7b 38 32 35 35 38 61 33 38 39 61 34  ult {82558a389a4
4a40: 34 33 63 30 65 61 34 63 63 38 31 39 38 39 39 66  43c0ea4cc819899f
4a50: 32 30 38 33 61 38 35 66 30 66 61 61 33 65 35 37  2083a85f0faa3e57
4a60: 38 66 38 30 37 37 61 32 65 33 66 66 34 36 37 32  8f8077a2e3ff4672
4a70: 39 36 36 35 62 7d 0a 0a 74 65 73 74 20 52 46 43  9665b}..test RFC
4a80: 34 32 33 31 5f 54 43 34 2d 31 39 2e 33 20 7b 73  4231_TC4-19.3 {s
4a90: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
4aa0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
4ab0: 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20  est sha384 -key 
4ac0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
4ad0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4ae0: 33 65 38 61 36 39 62 37 37 38 33 63 32 35 38 35  3e8a69b7783c2585
4af0: 31 39 33 33 61 62 36 32 39 30 61 66 36 63 61 37  1933ab6290af6ca7
4b00: 37 61 39 39 38 31 34 38 30 38 35 30 30 30 39 63  7a9981480850009c
4b10: 63 35 35 37 37 63 36 65 31 66 35 37 33 62 34 65  c5577c6e1f573b4e
4b20: 36 38 30 31 64 64 32 33 63 34 61 37 64 36 37 39  6801dd23c4a7d679
4b30: 63 63 66 38 61 33 38 36 63 36 37 34 63 66 66 62  ccf8a386c674cffb
4b40: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
4b50: 54 43 34 2d 31 39 2e 34 20 7b 73 68 61 35 31 32  TC4-19.4 {sha512
4b60: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
4b70: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
4b80: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20  ha512 -key $key 
4b90: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
4ba0: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 30 62 61 34  } -result {b0ba4
4bb0: 36 35 36 33 37 34 35 38 63 36 39 39 30 65 35 61  65637458c6990e5a
4bc0: 38 63 35 66 36 31 64 34 61 66 37 65 35 37 36 64  8c5f61d4af7e576d
4bd0: 39 37 66 66 39 34 62 38 37 32 64 65 37 36 66 38  97ff94b872de76f8
4be0: 30 35 30 33 36 31 65 65 33 64 62 61 39 31 63 61  050361ee3dba91ca
4bf0: 35 63 31 31 61 61 32 35 65 62 34 64 36 37 39 32  5c11aa25eb4d6792
4c00: 37 35 63 63 35 37 38 38 30 36 33 61 35 66 31 39  75cc5788063a5f19
4c10: 37 34 31 31 32 30 63 34 66 32 64 65 32 61 64 65  741120c4f2de2ade
4c20: 62 65 62 31 30 61 32 39 38 64 64 7d 0a 0a 23 20  beb10a298dd}..# 
4c30: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
4c40: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
4c50: 20 23 35 20 2d 20 54 65 73 74 20 77 69 74 68 20   #5 - Test with 
4c60: 61 20 74 72 75 6e 63 61 74 69 6f 6e 20 6f 66 20  a truncation of 
4c70: 6f 75 74 70 75 74 20 74 6f 20 31 32 38 20 62 69  output to 128 bi
4c80: 74 73 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e  ts..set key [bin
4c90: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
4ca0: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30  string repeat "0
4cb0: 63 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61  c" 20]].set data
4cc0: 20 22 54 65 73 74 20 57 69 74 68 20 54 72 75 6e   "Test With Trun
4cd0: 63 61 74 69 6f 6e 22 0a 0a 0a 74 65 73 74 20 52  cation"...test R
4ce0: 46 43 34 32 33 31 5f 54 43 35 2d 32 30 2e 31 20  FC4231_TC5-20.1 
4cf0: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b  {sha224} -body {
4d00: 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b  ..string range [
4d10: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
4d20: 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20  est sha224 -key 
4d30: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
4d40: 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65  ] 0 31.    } -re
4d50: 73 75 6c 74 20 7b 30 65 32 61 65 61 36 38 61 39  sult {0e2aea68a9
4d60: 30 63 38 64 33 37 63 39 38 38 62 63 64 62 39 66  0c8d37c988bcdb9f
4d70: 63 61 36 66 61 38 7d 0a 0a 74 65 73 74 20 52 46  ca6fa8}..test RF
4d80: 43 34 32 33 31 5f 54 43 35 2d 32 30 2e 32 20 7b  C4231_TC5-20.2 {
4d90: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a  sha256} -body {.
4da0: 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a  .string range [:
4db0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
4dc0: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  st sha256 -key $
4dd0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d  key -data $data]
4de0: 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73   0 31.    } -res
4df0: 75 6c 74 20 7b 61 33 62 36 31 36 37 34 37 33 31  ult {a3b61674731
4e00: 30 30 65 65 30 36 65 30 63 37 39 36 63 32 39 35  00ee06e0c796c295
4e10: 35 35 35 32 62 7d 0a 0a 74 65 73 74 20 52 46 43  5552b}..test RFC
4e20: 34 32 33 31 5f 54 43 35 2d 32 30 2e 33 20 7b 73  4231_TC5-20.3 {s
4e30: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
4e40: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a  string range [::
4e50: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
4e60: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b  t sha384 -key $k
4e70: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20  ey -data $data] 
4e80: 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75  0 31.    } -resu
4e90: 6c 74 20 7b 33 61 62 66 33 34 63 33 35 30 33 62  lt {3abf34c3503b
4ea0: 32 61 32 33 61 34 36 65 66 63 36 31 39 62 61 65  2a23a46efc619bae
4eb0: 66 38 39 37 7d 0a 0a 74 65 73 74 20 52 46 43 34  f897}..test RFC4
4ec0: 32 33 31 5f 54 43 35 2d 32 30 2e 34 20 7b 73 68  231_TC5-20.4 {sh
4ed0: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 73  a512} -body {..s
4ee0: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74  tring range [::t
4ef0: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
4f00: 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65   sha512 -key $ke
4f10: 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30  y -data $data] 0
4f20: 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   31.    } -resul
4f30: 74 20 7b 34 31 35 66 61 64 36 32 37 31 35 38 30  t {415fad6271580
4f40: 61 35 33 31 64 34 31 37 39 62 63 38 39 31 64 38  a531d4179bc891d8
4f50: 37 61 36 7d 0a 0a 23 20 52 46 43 20 34 32 33 31  7a6}..# RFC 4231
4f60: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54   HMAC Examples T
4f70: 65 73 74 20 43 61 73 65 20 23 36 20 2d 20 54 65  est Case #6 - Te
4f80: 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 6c 61  st with a key la
4f90: 72 67 65 72 20 74 68 61 6e 20 31 32 38 20 62 79  rger than 128 by
4fa0: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a  tes (= block-siz
4fb0: 65 20 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64  e of SHA-384 and
4fc0: 20 53 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b   SHA-512)..set k
4fd0: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
4fe0: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
4ff0: 70 65 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a  peat "aa" 131]].
5000: 73 65 74 20 64 61 74 61 20 22 54 65 73 74 20 55  set data "Test U
5010: 73 69 6e 67 20 4c 61 72 67 65 72 20 54 68 61 6e  sing Larger Than
5020: 20 42 6c 6f 63 6b 2d 53 69 7a 65 20 4b 65 79 20   Block-Size Key 
5030: 2d 20 48 61 73 68 20 4b 65 79 20 46 69 72 73 74  - Hash Key First
5040: 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  "...test RFC4231
5050: 5f 54 43 36 2d 32 31 2e 31 20 7b 73 68 61 32 32  _TC6-21.1 {sha22
5060: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
5070: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
5080: 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79  sha224 -key $key
5090: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
50a0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 35 65 39   } -result {95e9
50b0: 61 30 64 62 39 36 32 30 39 35 61 64 61 65 62 65  a0db962095adaebe
50c0: 39 62 32 64 36 66 30 64 62 63 65 32 64 34 39 39  9b2d6f0dbce2d499
50d0: 66 31 31 32 66 32 64 32 62 37 32 37 33 66 61 36  f112f2d2b7273fa6
50e0: 38 37 30 65 7d 0a 0a 74 65 73 74 20 52 46 43 34  870e}..test RFC4
50f0: 32 33 31 5f 54 43 36 2d 32 31 2e 32 20 7b 73 68  231_TC6-21.2 {sh
5100: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a256} -body {..:
5110: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5120: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  st sha256 -key $
5130: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5140: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36      } -result {6
5150: 30 65 34 33 31 35 39 31 65 65 30 62 36 37 66 30  0e431591ee0b67f0
5160: 64 38 61 32 36 61 61 63 62 66 35 62 37 37 66 38  d8a26aacbf5b77f8
5170: 65 30 62 63 36 32 31 33 37 32 38 63 35 31 34 30  e0bc6213728c5140
5180: 35 34 36 30 34 30 66 30 65 65 33 37 66 35 34 7d  546040f0ee37f54}
5190: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54  ..test RFC4231_T
51a0: 43 36 2d 32 31 2e 33 20 7b 73 68 61 33 38 34 7d  C6-21.3 {sha384}
51b0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
51c0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
51d0: 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a384 -key $key -
51e0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
51f0: 20 2d 72 65 73 75 6c 74 20 7b 34 65 63 65 30 38   -result {4ece08
5200: 34 34 38 35 38 31 33 65 39 30 38 38 64 32 63 36  4485813e9088d2c6
5210: 33 61 30 34 31 62 63 35 62 34 34 66 39 65 66 31  3a041bc5b44f9ef1
5220: 30 31 32 61 32 62 35 38 38 66 33 63 64 31 31 66  012a2b588f3cd11f
5230: 30 35 30 33 33 61 63 34 63 36 30 63 32 65 66 36  05033ac4c60c2ef6
5240: 61 62 34 30 33 30 66 65 38 32 39 36 32 34 38 64  ab4030fe8296248d
5250: 66 31 36 33 66 34 34 39 35 32 7d 0a 0a 74 65 73  f163f44952}..tes
5260: 74 20 52 46 43 34 32 33 31 5f 54 43 36 2d 32 31  t RFC4231_TC6-21
5270: 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64  .4 {sha512} -bod
5280: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
5290: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20   -digest sha512 
52a0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
52b0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
52c0: 75 6c 74 20 7b 38 30 62 32 34 32 36 33 63 37 63  ult {80b24263c7c
52d0: 31 61 33 65 62 62 37 31 34 39 33 63 31 64 64 37  1a3ebb71493c1dd7
52e0: 62 65 38 62 34 39 62 34 36 64 31 66 34 31 62 34  be8b49b46d1f41b4
52f0: 61 65 65 63 31 31 32 31 62 30 31 33 37 38 33 66  aeec1121b013783f
5300: 38 66 33 35 32 36 62 35 36 64 30 33 37 65 30 35  8f3526b56d037e05
5310: 66 32 35 39 38 62 64 30 66 64 32 32 31 35 64 36  f2598bd0fd2215d6
5320: 61 31 65 35 32 39 35 65 36 34 66 37 33 66 36 33  a1e5295e64f73f63
5330: 66 30 61 65 63 38 62 39 31 35 61 39 38 35 64 37  f0aec8b915a985d7
5340: 38 36 35 39 38 7d 0a 0a 23 20 52 46 43 20 34 32  86598}..# RFC 42
5350: 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73  31 HMAC Examples
5360: 20 54 65 73 74 20 43 61 73 65 20 23 37 20 2d 20   Test Case #7 - 
5370: 54 65 73 74 20 77 69 74 68 20 61 20 6b 65 79 20  Test with a key 
5380: 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 69 73  and data that is
5390: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31 32 38   larger than 128
53a0: 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d   bytes (= block-
53b0: 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38 34 20  size of SHA-384 
53c0: 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a 73 65  and SHA-512)..se
53d0: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65  t key [binary de
53e0: 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67  code hex [string
53f0: 20 72 65 70 65 61 74 20 22 61 61 22 20 31 33 31   repeat "aa" 131
5400: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 68 69  ]].set data "Thi
5410: 73 20 69 73 20 61 20 74 65 73 74 20 75 73 69 6e  s is a test usin
5420: 67 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e 20  g a larger than 
5430: 62 6c 6f 63 6b 2d 73 69 7a 65 20 6b 65 79 20 61  block-size key a
5440: 6e 64 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e  nd a larger than
5450: 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 64 61 74 61   block-size data
5460: 2e 20 54 68 65 20 6b 65 79 20 6e 65 65 64 73 20  . The key needs 
5470: 74 6f 20 62 65 20 68 61 73 68 65 64 20 62 65 66  to be hashed bef
5480: 6f 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 62  ore being used b
5490: 79 20 74 68 65 20 48 4d 41 43 20 61 6c 67 6f 72  y the HMAC algor
54a0: 69 74 68 6d 2e 22 0a 0a 0a 74 65 73 74 20 52 46  ithm."...test RF
54b0: 43 34 32 33 31 5f 54 43 37 2d 32 32 2e 31 20 7b  C4231_TC7-22.1 {
54c0: 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a  sha224} -body {.
54d0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
54e0: 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79  gest sha224 -key
54f0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
5500: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
5510: 7b 33 61 38 35 34 31 36 36 61 63 35 64 39 66 30  {3a854166ac5d9f0
5520: 32 33 66 35 34 64 35 31 37 64 30 62 33 39 64 62  23f54d517d0b39db
5530: 64 39 34 36 37 37 30 64 62 39 63 32 62 39 35 63  d946770db9c2b95c
5540: 39 66 36 66 35 36 35 64 31 7d 0a 0a 74 65 73 74  9f6f565d1}..test
5550: 20 52 46 43 34 32 33 31 5f 54 43 37 2d 32 32 2e   RFC4231_TC7-22.
5560: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
5570: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5580: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5590: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
55a0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
55b0: 6c 74 20 7b 39 62 30 39 66 66 61 37 31 62 39 34  lt {9b09ffa71b94
55c0: 32 66 63 62 32 37 36 33 35 66 62 63 64 35 62 30  2fcb27635fbcd5b0
55d0: 65 39 34 34 62 66 64 63 36 33 36 34 34 66 30 37  e944bfdc63644f07
55e0: 31 33 39 33 38 61 37 66 35 31 35 33 35 63 33 61  13938a7f51535c3a
55f0: 33 35 65 32 7d 0a 0a 74 65 73 74 20 52 46 43 34  35e2}..test RFC4
5600: 32 33 31 5f 54 43 37 2d 32 32 2e 33 20 7b 73 68  231_TC7-22.3 {sh
5610: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a384} -body {..:
5620: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5630: 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24  st sha384 -key $
5640: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5650: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36      } -result {6
5660: 36 31 37 31 37 38 65 39 34 31 66 30 32 30 64 33  617178e941f020d3
5670: 35 31 65 32 66 32 35 34 65 38 66 64 33 32 63 36  51e2f254e8fd32c6
5680: 30 32 34 32 30 66 65 62 30 62 38 66 62 39 61 64  02420feb0b8fb9ad
5690: 63 63 65 62 62 38 32 34 36 31 65 39 39 63 35 61  ccebb82461e99c5a
56a0: 36 37 38 63 63 33 31 65 37 39 39 31 37 36 64 33  678cc31e799176d3
56b0: 38 36 30 65 36 31 31 30 63 34 36 35 32 33 65 7d  860e6110c46523e}
56c0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54  ..test RFC4231_T
56d0: 43 37 2d 32 32 2e 34 20 7b 73 68 61 35 31 32 7d  C7-22.4 {sha512}
56e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
56f0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
5700: 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a512 -key $key -
5710: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
5720: 20 2d 72 65 73 75 6c 74 20 7b 65 33 37 62 36 61   -result {e37b6a
5730: 37 37 35 64 63 38 37 64 62 61 61 34 64 66 61 39  775dc87dbaa4dfa9
5740: 66 39 36 65 35 65 33 66 66 64 64 65 62 64 37 31  f96e5e3ffddebd71
5750: 66 38 38 36 37 32 38 39 38 36 35 64 66 35 61 33  f8867289865df5a3
5760: 32 64 32 30 63 64 63 39 34 34 62 36 30 32 32 63  2d20cdc944b6022c
5770: 61 63 33 63 34 39 38 32 62 31 30 64 35 65 65 62  ac3c4982b10d5eeb
5780: 35 35 63 33 65 34 64 65 31 35 31 33 34 36 37 36  55c3e4de15134676
5790: 66 62 36 64 65 30 34 34 36 30 36 35 63 39 37 34  fb6de0446065c974
57a0: 34 30 66 61 38 63 36 61 35 38 7d 0a 0a 23 20 4e  40fa8c6a58}..# N
57b0: 49 53 54 20 38 30 30 2d 33 38 62 20 52 65 63 6f  IST 800-38b Reco
57c0: 6d 6d 65 6e 64 61 74 69 6f 6e 20 66 6f 72 20 42  mmendation for B
57d0: 6c 6f 63 6b 20 43 69 70 68 65 72 20 4d 6f 64 65  lock Cipher Mode
57e0: 73 20 6f 66 20 4f 70 65 72 61 74 69 6f 6e 3a 20  s of Operation: 
57f0: 54 68 65 20 43 4d 41 43 20 4d 6f 64 65 20 66 6f  The CMAC Mode fo
5800: 72 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e  r Authentication
5810: 0a 23 20 41 45 53 2d 31 32 38 0a 73 65 74 20 6b  .# AES-128.set k
5820: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
5830: 65 20 68 65 78 20 22 32 62 37 65 31 35 31 36 32  e hex "2b7e15162
5840: 38 61 65 64 32 61 36 61 62 66 37 31 35 38 38 30  8aed2a6abf715880
5850: 39 63 66 34 66 33 63 22 5d 0a 73 65 74 20 64 61  9cf4f3c"].set da
5860: 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ta [binary decod
5870: 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32  e hex "6bc1bee22
5880: 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37  e409f96e93d7e117
5890: 33 39 33 31 37 32 61 22 5d 0a 0a 0a 74 65 73 74  393172a"]...test
58a0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
58b0: 31 32 38 2d 32 33 2e 31 20 7b 6c 65 6e 3d 31 32  128-23.1 {len=12
58c0: 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  8} -body {..::tl
58d0: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
58e0: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79  aes-128-cbc -key
58f0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
5900: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
5910: 7b 30 37 30 61 31 36 62 34 36 62 34 64 34 31 34  {070a16b46b4d414
5920: 34 66 37 39 62 64 64 39 64 64 30 34 61 32 38 37  4f79bdd9dd04a287
5930: 63 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  c}.set data [bin
5940: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
5950: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36  6bc1bee22e409f96
5960: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61  e93d7e117393172a
5970: 61 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63  ae2d8a571e03ac9c
5980: 39 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31  9eb76fac45af8e51
5990: 33 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31  30c81c46a35ce411
59a0: 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  "]..test NIST800
59b0: 2d 33 38 62 2d 41 45 53 31 32 38 2d 32 33 2e 32  -38b-AES128-23.2
59c0: 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79   {len=320} -body
59d0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
59e0: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d  -cipher aes-128-
59f0: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
5a00: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
5a10: 2d 72 65 73 75 6c 74 20 7b 64 66 61 36 36 37 34  -result {dfa6674
5a20: 37 64 65 39 61 65 36 33 30 33 30 63 61 33 32 36  7de9ae63030ca326
5a30: 31 31 34 39 37 63 38 32 37 7d 0a 73 65 74 20 64  11497c827}.set d
5a40: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
5a50: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32  de hex "6bc1bee2
5a60: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31  2e409f96e93d7e11
5a70: 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37  7393172aae2d8a57
5a80: 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63  1e03ac9c9eb76fac
5a90: 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36  45af8e5130c81c46
5aa0: 61 33 35 63 65 34 31 31 65 35 66 62 63 31 31 39  a35ce411e5fbc119
5ab0: 31 61 30 61 35 32 65 66 66 36 39 66 32 34 34 35  1a0a52eff69f2445
5ac0: 64 66 34 66 39 62 31 37 61 64 32 62 34 31 37 62  df4f9b17ad2b417b
5ad0: 65 36 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74  e66c3710"]..test
5ae0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
5af0: 31 32 38 2d 32 33 2e 33 20 7b 6c 65 6e 3d 35 31  128-23.3 {len=51
5b00: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  2} -body {..::tl
5b10: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
5b20: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79  aes-128-cbc -key
5b30: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
5b40: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
5b50: 7b 35 31 66 30 62 65 62 66 37 65 33 62 39 64 39  {51f0bebf7e3b9d9
5b60: 32 66 63 34 39 37 34 31 37 37 39 33 36 33 63 66  2fc49741779363cf
5b70: 65 7d 0a 0a 23 20 41 45 53 2d 31 39 32 0a 73 65  e}..# AES-192.se
5b80: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65  t key [binary de
5b90: 63 6f 64 65 20 68 65 78 20 22 38 65 37 33 62 30  code hex "8e73b0
5ba0: 66 37 64 61 30 65 36 34 35 32 63 38 31 30 66 33  f7da0e6452c810f3
5bb0: 32 62 38 30 39 30 37 39 65 35 36 32 66 38 65 61  2b809079e562f8ea
5bc0: 64 32 35 32 32 63 36 62 37 62 22 5d 0a 73 65 74  d2522c6b7b"].set
5bd0: 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65   data [binary de
5be0: 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65  code hex "6bc1be
5bf0: 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65  e22e409f96e93d7e
5c00: 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a 0a 74  117393172a"]...t
5c10: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
5c20: 41 45 53 2d 31 39 32 2d 32 34 2e 31 20 7b 6c 65  AES-192-24.1 {le
5c30: 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09  n=128} -body {..
5c40: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
5c50: 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63 20  her aes-192-cbc 
5c60: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
5c70: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
5c80: 75 6c 74 20 7b 39 65 39 39 61 37 62 66 33 31 65  ult {9e99a7bf31e
5c90: 37 31 30 39 30 30 36 36 32 66 36 35 65 36 31 37  710900662f65e617
5ca0: 63 35 31 38 34 7d 0a 73 65 74 20 64 61 74 61 20  c5184}.set data 
5cb0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
5cc0: 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30  ex "6bc1bee22e40
5cd0: 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33  9f96e93d7e117393
5ce0: 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33  172aae2d8a571e03
5cf0: 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66  ac9c9eb76fac45af
5d00: 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63  8e5130c81c46a35c
5d10: 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53  e411"]..test NIS
5d20: 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32  T800-38b-AES-192
5d30: 2d 32 34 2e 32 20 7b 6c 65 6e 3d 33 32 30 7d 20  -24.2 {len=320} 
5d40: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5d50: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73  cmac -cipher aes
5d60: 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b  -192-cbc -key $k
5d70: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
5d80: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 61     } -result {8a
5d90: 31 64 65 35 62 65 32 65 62 33 31 61 61 64 30 38  1de5be2eb31aad08
5da0: 39 61 38 32 65 36 65 65 39 30 38 62 30 65 7d 0a  9a82e6ee908b0e}.
5db0: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79  set data [binary
5dc0: 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63   decode hex "6bc
5dd0: 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33  1bee22e409f96e93
5de0: 64 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32  d7e117393172aae2
5df0: 64 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62  d8a571e03ac9c9eb
5e00: 37 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63  76fac45af8e5130c
5e10: 38 31 63 34 36 61 33 35 63 65 34 31 31 65 35 66  81c46a35ce411e5f
5e20: 62 63 31 31 39 31 61 30 61 35 32 65 66 66 36 39  bc1191a0a52eff69
5e30: 66 32 34 34 35 64 66 34 66 39 62 31 37 61 64 32  f2445df4f9b17ad2
5e40: 62 34 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a  b417be66c3710"].
5e50: 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38  .test NIST800-38
5e60: 62 2d 41 45 53 2d 31 39 32 2d 32 34 2e 33 20 7b  b-AES-192-24.3 {
5e70: 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b  len=512} -body {
5e80: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
5e90: 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62  ipher aes-192-cb
5ea0: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
5eb0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5ec0: 65 73 75 6c 74 20 7b 61 31 64 35 64 66 30 65 65  esult {a1d5df0ee
5ed0: 64 37 39 30 66 37 39 34 64 37 37 35 38 39 36 35  d790f794d7758965
5ee0: 39 66 33 39 61 31 31 7d 0a 0a 23 20 41 45 53 2d  9f39a11}..# AES-
5ef0: 32 35 36 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e  256.set key [bin
5f00: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
5f10: 36 30 33 64 65 62 31 30 31 35 63 61 37 31 62 65  603deb1015ca71be
5f20: 32 62 37 33 61 65 66 30 38 35 37 64 37 37 38 31  2b73aef0857d7781
5f30: 31 66 33 35 32 63 30 37 33 62 36 31 30 38 64 37  1f352c073b6108d7
5f40: 32 64 39 38 31 30 61 33 30 39 31 34 64 66 66 34  2d9810a30914dff4
5f50: 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  "].set data [bin
5f60: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
5f70: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36  6bc1bee22e409f96
5f80: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61  e93d7e117393172a
5f90: 22 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38 30  "]...test NIST80
5fa0: 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 32 35  0-38b-AES-256-25
5fb0: 2e 31 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f  .1 {len=128} -bo
5fc0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
5fd0: 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35  c -cipher aes-25
5fe0: 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20  6-cbc -key $key 
5ff0: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
6000: 7d 20 2d 72 65 73 75 6c 74 20 7b 32 38 61 37 30  } -result {28a70
6010: 32 33 66 34 35 32 65 38 66 38 32 62 64 34 62 66  23f452e8f82bd4bf
6020: 32 38 64 38 63 33 37 63 33 35 63 7d 0a 73 65 74  28d8c37c35c}.set
6030: 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65   data [binary de
6040: 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65  code hex "6bc1be
6050: 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65  e22e409f96e93d7e
6060: 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38 61  117393172aae2d8a
6070: 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36 66  571e03ac9c9eb76f
6080: 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31 63  ac45af8e5130c81c
6090: 34 36 61 33 35 63 65 34 31 31 22 5d 0a 0a 74 65  46a35ce411"]..te
60a0: 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41  st NIST800-38b-A
60b0: 45 53 2d 32 35 36 2d 32 35 2e 32 20 7b 6c 65 6e  ES-256-25.2 {len
60c0: 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  =320} -body {..:
60d0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
60e0: 65 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d  er aes-256-cbc -
60f0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
6100: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
6110: 6c 74 20 7b 61 61 66 33 64 38 66 31 64 65 35 36  lt {aaf3d8f1de56
6120: 34 30 63 32 33 32 66 35 62 31 36 39 62 39 63 39  40c232f5b169b9c9
6130: 31 31 65 36 7d 0a 73 65 74 20 64 61 74 61 20 5b  11e6}.set data [
6140: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
6150: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
6160: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
6170: 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61  72aae2d8a571e03a
6180: 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38  c9c9eb76fac45af8
6190: 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65  e5130c81c46a35ce
61a0: 34 31 31 65 35 66 62 63 31 31 39 31 61 30 61 35  411e5fbc1191a0a5
61b0: 32 65 66 66 36 39 66 32 34 34 35 64 66 34 66 39  2eff69f2445df4f9
61c0: 62 31 37 61 64 32 62 34 31 37 62 65 36 36 63 33  b17ad2b417be66c3
61d0: 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  710"]..test NIST
61e0: 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d  800-38b-AES-256-
61f0: 32 35 2e 33 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d  25.3 {len=512} -
6200: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
6210: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d  mac -cipher aes-
6220: 32 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65  256-cbc -key $ke
6230: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
6240: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 31 39    } -result {e19
6250: 39 32 31 39 30 35 34 39 66 36 65 64 35 36 39 36  92190549f6ed5696
6260: 61 32 63 30 35 36 63 33 31 35 34 31 30 7d 0a 0a  a2c056c315410}..
6270: 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74  # Cleanup.::tclt
6280: 65 73 74 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 20  est::removeFile 
6290: 24 74 65 73 74 5f 66 69 6c 65 20 24 74 65 73 74  $test_file $test
62a0: 5f 61 6c 74 5f 66 69 6c 65 0a 0a 23 20 43 6c 65  _alt_file..# Cle
62b0: 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a  anup.::tcltest::
62c0: 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72 65 74  cleanupTests.ret
62d0: 75 72 6e 0a                                      urn.