Hex Artifact Content

Artifact b15fefa0434e08a822780cfdb7f418f71bcde7688a7334ca972e2b497dbba84a:


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 73 68  _file..# Test sh
04b0: 6f 72 74 2d 63 75 74 20 63 6f 6d 6d 61 6e 64 73  ort-cut commands
04c0: 0a 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74  ...test Shortcut
04d0: 5f 43 6d 64 73 2d 31 2e 31 20 7b 6d 64 34 20 63  _Cmds-1.1 {md4 c
04e0: 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  md} -body {..::t
04f0: 6c 73 3a 3a 6d 64 34 20 24 74 65 73 74 5f 64 61  ls::md4 $test_da
0500: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
0510: 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32   {793399f792eca2
0520: 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38  752c6af3234ba708
0530: 35 38 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74 63  58}..test Shortc
0540: 75 74 5f 43 6d 64 73 2d 31 2e 32 20 7b 6d 64 35  ut_Cmds-1.2 {md5
0550: 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   cmd} -body {..:
0560: 3a 74 6c 73 3a 3a 6d 64 35 20 24 74 65 73 74 5f  :tls::md5 $test_
0570: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
0580: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32  lt {962bf0803b42
0590: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34  32ec23bd8427bb94
05a0: 65 61 30 39 7d 0a 0a 74 65 73 74 20 53 68 6f 72  ea09}..test Shor
05b0: 74 63 75 74 5f 43 6d 64 73 2d 31 2e 33 20 7b 73  tcut_Cmds-1.3 {s
05c0: 68 61 31 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b  ha1 cmd} -body {
05d0: 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 31 20 24 74  ..::tls::sha1 $t
05e0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
05f0: 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66  result {4fe03b7f
0600: 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61  2568551dfafb98ca
0610: 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64  6004e65c4b71aa7d
0620: 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74  }..test Shortcut
0630: 5f 43 6d 64 73 2d 31 2e 34 20 7b 73 68 61 32 35  _Cmds-1.4 {sha25
0640: 36 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09  6 cmd} -body {..
0650: 3a 3a 74 6c 73 3a 3a 73 68 61 32 35 36 20 24 74  ::tls::sha256 $t
0660: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
0670: 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63  result {9d3578fc
0680: 31 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65  138205cf0ee4b4ce
0690: 66 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37  f35fe101bb4ecac7
06a0: 62 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35  b1614c18e6fa48b5
06b0: 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20  c7f95e19}..test 
06c0: 53 68 6f 72 74 63 75 74 5f 43 6d 64 73 2d 31 2e  Shortcut_Cmds-1.
06d0: 35 20 7b 73 68 61 35 31 32 20 63 6d 64 7d 20 2d  5 {sha512 cmd} -
06e0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73  body {..::tls::s
06f0: 68 61 35 31 32 20 24 74 65 73 74 5f 64 61 74 61  ha512 $test_data
0700: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
0710: 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30  d178e759dc591270
0720: 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36  71588d2fad173c06
0730: 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63  238d87e800a6403c
0740: 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30  0a30daa4faaf05d0
0750: 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35  e7ce04916afaa6a5
0760: 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30  8a30cbeb597dacb0
0770: 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39  1c62f9fb9d89bab9
0780: 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31  da630c699e4816f1
0790: 7d 0a 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f  }...# Test MD 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 4d 44  hannel...test MD
07c0: 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 31 20 7b  _Chan_Read-2.1 {
07d0: 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  md4} -body {..di
07e0: 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a  gest_read_chan :
07f0: 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66  :tls::md $test_f
0800: 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 34 0a  ile -digest md4.
0810: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37      } -result {7
0820: 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32  93399f792eca2752
0830: 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d  c6af3234ba70858}
0840: 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52  ..test MD_Chan_R
0850: 65 61 64 2d 32 2e 32 20 7b 6d 64 35 7d 20 2d 62  ead-2.2 {md5} -b
0860: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
0870: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
0880: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69  d $test_file -di
0890: 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d  gest md5.    } -
08a0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
08b0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
08c0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
08d0: 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 33  MD_Chan_Read-2.3
08e0: 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a   {sha1} -body {.
08f0: 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61  .digest_read_cha
0900: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
0910: 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 73  t_file -digest s
0920: 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ha1.    } -resul
0930: 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35  t {4fe03b7f25685
0940: 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65  51dfafb98ca6004e
0950: 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65  65c4b71aa7d}..te
0960: 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d  st MD_Chan_Read-
0970: 32 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f  2.4 {sha256} -bo
0980: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61  dy {..digest_rea
0990: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  d_chan ::tls::md
09a0: 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67   $test_file -dig
09b0: 65 73 74 20 73 68 61 32 35 36 0a 20 20 20 20 7d  est sha256.    }
09c0: 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38   -result {9d3578
09d0: 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34  fc138205cf0ee4b4
09e0: 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61  cef35fe101bb4eca
09f0: 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38  c7b1614c18e6fa48
0a00: 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73  b5c7f95e19}..tes
0a10: 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32  t MD_Chan_Read-2
0a20: 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64  .5 {sha512} -bod
0a30: 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64  y {..digest_read
0a40: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
0a50: 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65  $test_file -dige
0a60: 73 74 20 73 68 61 35 31 32 0a 20 20 20 20 7d 20  st sha512.    } 
0a70: 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35  -result {d178e75
0a80: 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32  9dc59127071588d2
0a90: 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65  fad173c06238d87e
0aa0: 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61  800a6403c0a30daa
0ab0: 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39  4faaf05d0e7ce049
0ac0: 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65  16afaa6a58a30cbe
0ad0: 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66  b597dacb01c62f9f
0ae0: 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36  b9d89bab9da630c6
0af0: 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 74  99e4816f1}..test
0b00: 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e   MD_Chan_Read-2.
0b10: 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64  6 {md5 bin} -bod
0b20: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
0b30: 64 65 20 68 65 78 20 5b 64 69 67 65 73 74 5f 72  de hex [digest_r
0b40: 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ead_chan ::tls::
0b50: 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 62  md $test_file -b
0b60: 69 6e 20 2d 64 69 67 65 73 74 20 6d 64 35 5d 0a  in -digest md5].
0b70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
0b80: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32  62bf0803b4232ec2
0b90: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d  3bd8427bb94ea09}
0ba0: 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52  ..test MD_Chan_R
0bb0: 65 61 64 2d 32 2e 37 20 7b 6d 64 35 20 68 65 78  ead-2.7 {md5 hex
0bc0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
0bd0: 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c  t_read_chan ::tl
0be0: 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65  s::md $test_file
0bf0: 20 2d 68 65 78 20 2d 64 69 67 65 73 74 20 6d 64   -hex -digest md
0c00: 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  5.    } -result 
0c10: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
0c20: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
0c30: 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f  9}..# Test MD co
0c40: 6d 6d 61 6e 64 20 66 6f 72 20 77 72 69 74 65 20  mmand for write 
0c50: 63 68 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 4d  channel...test M
0c60: 44 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 31  D_Chan_Write-3.1
0c70: 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09   {md4} -body {..
0c80: 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61  digest_write_cha
0c90: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
0ca0: 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74  t_alt_file $test
0cb0: 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20 6d 64  _data -digest md
0cc0: 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  4.    } -result 
0cd0: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37  {793399f792eca27
0ce0: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35  52c6af3234ba7085
0cf0: 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  8}..test MD_Chan
0d00: 5f 57 72 69 74 65 2d 33 2e 32 20 7b 6d 64 35 7d  _Write-3.2 {md5}
0d10: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
0d20: 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c  _write_chan ::tl
0d30: 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f  s::md $test_alt_
0d40: 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61 20  file $test_data 
0d50: 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20 20 20  -digest md5.    
0d60: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
0d70: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
0d80: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65  427bb94ea09}..te
0d90: 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74 65  st MD_Chan_Write
0da0: 2d 33 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64  -3.3 {sha1} -bod
0db0: 79 20 7b 0a 09 64 69 67 65 73 74 5f 77 72 69 74  y {..digest_writ
0dc0: 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  e_chan ::tls::md
0dd0: 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20   $test_alt_file 
0de0: 24 74 65 73 74 5f 64 61 74 61 20 2d 64 69 67 65  $test_data -dige
0df0: 73 74 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72  st sha1.    } -r
0e00: 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32  esult {4fe03b7f2
0e10: 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36  568551dfafb98ca6
0e20: 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d  004e65c4b71aa7d}
0e30: 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57  ..test MD_Chan_W
0e40: 72 69 74 65 2d 33 2e 34 20 7b 73 68 61 32 35 36  rite-3.4 {sha256
0e50: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
0e60: 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74  t_write_chan ::t
0e70: 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74  ls::md $test_alt
0e80: 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61  _file $test_data
0e90: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 0a   -digest sha256.
0ea0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
0eb0: 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30  d3578fc138205cf0
0ec0: 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62  ee4b4cef35fe101b
0ed0: 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65  b4ecac7b1614c18e
0ee0: 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d  6fa48b5c7f95e19}
0ef0: 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57  ..test MD_Chan_W
0f00: 72 69 74 65 2d 33 2e 35 20 7b 73 68 61 35 31 32  rite-3.5 {sha512
0f10: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
0f20: 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74  t_write_chan ::t
0f30: 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74  ls::md $test_alt
0f40: 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74 61  _file $test_data
0f50: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 0a   -digest sha512.
0f60: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64      } -result {d
0f70: 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30 37  178e759dc5912707
0f80: 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36 32  1588d2fad173c062
0f90: 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63 30  38d87e800a6403c0
0fa0: 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30 65  a30daa4faaf05d0e
0fb0: 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35 38  7ce04916afaa6a58
0fc0: 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30 31  a30cbeb597dacb01
0fd0: 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39 64  c62f9fb9d89bab9d
0fe0: 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31 7d  a630c699e4816f1}
0ff0: 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57  ..test MD_Chan_W
1000: 72 69 74 65 2d 33 2e 36 20 7b 6d 64 35 20 62 69  rite-3.6 {md5 bi
1010: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61  n} -body {..bina
1020: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 64  ry encode hex [d
1030: 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e  igest_write_chan
1040: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
1050: 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f  _alt_file $test_
1060: 64 61 74 61 20 2d 62 69 6e 20 2d 64 69 67 65 73  data -bin -diges
1070: 74 20 6d 64 35 5d 0a 20 20 20 20 7d 20 2d 72 65  t md5].    } -re
1080: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62  sult {962bf0803b
1090: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62  4232ec23bd8427bb
10a0: 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44  94ea09}..test MD
10b0: 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 37 20  _Chan_Write-3.7 
10c0: 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20  {md5 hex} -body 
10d0: 7b 0a 09 64 69 67 65 73 74 5f 77 72 69 74 65 5f  {..digest_write_
10e0: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24  chan ::tls::md $
10f0: 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74  test_alt_file $t
1100: 65 73 74 5f 64 61 74 61 20 2d 68 65 78 20 2d 64  est_data -hex -d
1110: 69 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20  igest md5.    } 
1120: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
1130: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
1140: 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 54 65  7bb94ea09}..# Te
1150: 73 74 20 4d 44 20 63 6f 6d 6d 61 6e 64 20 66 6f  st MD command fo
1160: 72 20 6f 62 6a 65 63 74 20 63 6f 6d 6d 61 6e 64  r object command
1170: 0a 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61  ...test MD_Comma
1180: 6e 64 2d 34 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f  nd-4.1 {md4} -bo
1190: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63  dy {..digest_acc
11a0: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61  umulate $test_da
11b0: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  ta ::tls::md -di
11c0: 67 65 73 74 20 6d 64 34 0a 20 20 20 20 7d 20 2d  gest md4.    } -
11d0: 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37  result {793399f7
11e0: 39 32 65 63 61 32 37 35 32 63 36 61 66 33 32 33  92eca2752c6af323
11f0: 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20  4ba70858}..test 
1200: 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 32 20 7b  MD_Command-4.2 {
1210: 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  md5} -body {..di
1220: 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20  gest_accumulate 
1230: 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73  $test_data ::tls
1240: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35  ::md -digest md5
1250: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1260: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1270: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1280: 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61  }..test MD_Comma
1290: 6e 64 2d 34 2e 33 20 7b 73 68 61 31 7d 20 2d 62  nd-4.3 {sha1} -b
12a0: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63  ody {..digest_ac
12b0: 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64  cumulate $test_d
12c0: 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64  ata ::tls::md -d
12d0: 69 67 65 73 74 20 73 68 61 31 0a 20 20 20 20 7d  igest sha1.    }
12e0: 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62   -result {4fe03b
12f0: 37 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38  7f2568551dfafb98
1300: 63 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61  ca6004e65c4b71aa
1310: 37 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d  7d}..test MD_Com
1320: 6d 61 6e 64 2d 34 2e 34 20 7b 73 68 61 32 35 36  mand-4.4 {sha256
1330: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
1340: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
1350: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
1360: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
1370: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1380: 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66  9d3578fc138205cf
1390: 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31  0ee4b4cef35fe101
13a0: 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38  bb4ecac7b1614c18
13b0: 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39  e6fa48b5c7f95e19
13c0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61  }..test MD_Comma
13d0: 6e 64 2d 34 2e 35 20 7b 73 68 61 35 31 32 7d 20  nd-4.5 {sha512} 
13e0: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
13f0: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
1400: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _data ::tls::md 
1410: 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 0a 20  -digest sha512. 
1420: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31     } -result {d1
1430: 37 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31  78e759dc59127071
1440: 35 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33  588d2fad173c0623
1450: 38 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61  8d87e800a6403c0a
1460: 33 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37  30daa4faaf05d0e7
1470: 63 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61  ce04916afaa6a58a
1480: 33 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63  30cbeb597dacb01c
1490: 36 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61  62f9fb9d89bab9da
14a0: 36 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a  630c699e4816f1}.
14b0: 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64  .test MD_Command
14c0: 2d 34 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d  -4.6 {md5 bin} -
14d0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
14e0: 6e 63 6f 64 65 20 68 65 78 20 5b 64 69 67 65 73  ncode hex [diges
14f0: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
1500: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
1510: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 62  d -digest md5 -b
1520: 69 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  in].    } -resul
1530: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
1540: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
1550: 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f  a09}..test MD_Co
1560: 6d 6d 61 6e 64 2d 34 2e 37 20 7b 6d 64 35 20 68  mmand-4.7 {md5 h
1570: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  ex} -body {..dig
1580: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
1590: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
15a0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
15b0: 2d 68 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 75  -hex.    } -resu
15c0: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32  lt {962bf0803b42
15d0: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34  32ec23bd8427bb94
15e0: 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44  ea09}..# Test MD
15f0: 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 64 61 74   command for dat
1600: 61 20 73 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73  a shortcut...tes
1610: 74 20 4d 44 5f 53 68 6f 72 74 63 75 74 2d 35 2e  t MD_Shortcut-5.
1620: 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a  1 {md4} -body {.
1630: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 6d 64 34 20 24  .::tls::md md4 $
1640: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1650: 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66  -result {793399f
1660: 37 39 32 65 63 61 32 37 35 32 63 36 61 66 33 32  792eca2752c6af32
1670: 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74  34ba70858}..test
1680: 20 4d 44 5f 53 68 6f 72 74 63 75 74 2d 35 2e 32   MD_Shortcut-5.2
1690: 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09   {md5} -body {..
16a0: 3a 3a 74 6c 73 3a 3a 6d 64 20 6d 64 35 20 24 74  ::tls::md md5 $t
16b0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
16c0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
16d0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
16e0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
16f0: 4d 44 5f 53 68 6f 72 74 63 75 74 2d 35 2e 33 20  MD_Shortcut-5.3 
1700: 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09  {sha1} -body {..
1710: 3a 3a 74 6c 73 3a 3a 6d 64 20 73 68 61 31 20 24  ::tls::md sha1 $
1720: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1730: 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37  -result {4fe03b7
1740: 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63  f2568551dfafb98c
1750: 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37  a6004e65c4b71aa7
1760: 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72  d}..test MD_Shor
1770: 74 63 75 74 2d 35 2e 34 20 7b 73 68 61 32 35 36  tcut-5.4 {sha256
1780: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1790: 3a 3a 6d 64 20 73 68 61 32 35 36 20 24 74 65 73  ::md sha256 $tes
17a0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
17b0: 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33  sult {9d3578fc13
17c0: 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33  8205cf0ee4b4cef3
17d0: 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31  5fe101bb4ecac7b1
17e0: 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37  614c18e6fa48b5c7
17f0: 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44  f95e19}..test MD
1800: 5f 53 68 6f 72 74 63 75 74 2d 35 2e 35 20 7b 73  _Shortcut-5.5 {s
1810: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
1820: 3a 3a 74 6c 73 3a 3a 6d 64 20 73 68 61 35 31 32  ::tls::md sha512
1830: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
1840: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65  } -result {d178e
1850: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38  759dc59127071588
1860: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38  d2fad173c06238d8
1870: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64  7e800a6403c0a30d
1880: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30  aa4faaf05d0e7ce0
1890: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63  4916afaa6a58a30c
18a0: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66  beb597dacb01c62f
18b0: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30  9fb9d89bab9da630
18c0: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 23 20  c699e4816f1}..# 
18d0: 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61 6e 64 20  Test MD command 
18e0: 66 6f 72 20 64 61 74 61 0a 0a 0a 74 65 73 74 20  for data...test 
18f0: 4d 44 5f 44 61 74 61 2d 36 2e 31 20 7b 6d 64 34  MD_Data-6.1 {md4
1900: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1910: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 34  ::md -digest md4
1920: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
1930: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
1940: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37  {793399f792eca27
1950: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35  52c6af3234ba7085
1960: 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 44 61 74 61  8}..test MD_Data
1970: 2d 36 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79  -6.2 {md5} -body
1980: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
1990: 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20  igest md5 -data 
19a0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
19b0: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30   -result {962bf0
19c0: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34  803b4232ec23bd84
19d0: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73  27bb94ea09}..tes
19e0: 74 20 4d 44 5f 44 61 74 61 2d 36 2e 33 20 7b 73  t MD_Data-6.3 {s
19f0: 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ha1} -body {..::
1a00: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
1a10: 73 68 61 31 20 2d 64 61 74 61 20 24 74 65 73 74  sha1 -data $test
1a20: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
1a30: 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36  ult {4fe03b7f256
1a40: 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30  8551dfafb98ca600
1a50: 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a  4e65c4b71aa7d}..
1a60: 74 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 34  test MD_Data-6.4
1a70: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
1a80: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
1a90: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74  gest sha256 -dat
1aa0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
1ab0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35   } -result {9d35
1ac0: 37 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34  78fc138205cf0ee4
1ad0: 62 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65  b4cef35fe101bb4e
1ae0: 63 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61  cac7b1614c18e6fa
1af0: 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74  48b5c7f95e19}..t
1b00: 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 35 20  est MD_Data-6.5 
1b10: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
1b20: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
1b30: 65 73 74 20 73 68 61 35 31 32 20 2d 64 61 74 61  est sha512 -data
1b40: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
1b50: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65  } -result {d178e
1b60: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38  759dc59127071588
1b70: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38  d2fad173c06238d8
1b80: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64  7e800a6403c0a30d
1b90: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30  aa4faaf05d0e7ce0
1ba0: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63  4916afaa6a58a30c
1bb0: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66  beb597dacb01c62f
1bc0: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30  9fb9d89bab9da630
1bd0: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65  c699e4816f1}..te
1be0: 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 36 20 7b  st MD_Data-6.6 {
1bf0: 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b  md5 bin} -body {
1c00: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20  ..binary encode 
1c10: 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  hex [::tls::md -
1c20: 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61  digest md5 -data
1c30: 20 24 74 65 73 74 5f 64 61 74 61 20 2d 62 69 6e   $test_data -bin
1c40: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
1c50: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
1c60: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
1c70: 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 44 61 74 61  9}..test MD_Data
1c80: 2d 36 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d  -6.7 {md5 hex} -
1c90: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1ca0: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64  d -digest md5 -d
1cb0: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 20 2d  ata $test_data -
1cc0: 68 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  hex.    } -resul
1cd0: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
1ce0: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
1cf0: 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20  a09}..# Test MD 
1d00: 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 66 69 6c 65  command for file
1d10: 0a 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d  ...test MD_File-
1d20: 37 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20  7.1 {md4} -body 
1d30: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
1d40: 67 65 73 74 20 6d 64 34 20 2d 66 69 6c 65 20 24  gest md4 -file $
1d50: 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20  test_file.    } 
1d60: 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66  -result {793399f
1d70: 37 39 32 65 63 61 32 37 35 32 63 36 61 66 33 32  792eca2752c6af32
1d80: 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74  34ba70858}..test
1d90: 20 4d 44 5f 46 69 6c 65 2d 37 2e 32 20 7b 6d 64   MD_File-7.2 {md
1da0: 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  5} -body {..::tl
1db0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64  s::md -digest md
1dc0: 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69  5 -file $test_fi
1dd0: 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  le.    } -result
1de0: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32   {962bf0803b4232
1df0: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61  ec23bd8427bb94ea
1e00: 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c  09}..test MD_Fil
1e10: 65 2d 37 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f  e-7.3 {sha1} -bo
1e20: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
1e30: 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 66 69  -digest sha1 -fi
1e40: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20  le $test_file.  
1e50: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66 65    } -result {4fe
1e60: 30 33 62 37 66 32 35 36 38 35 35 31 64 66 61 66  03b7f2568551dfaf
1e70: 62 39 38 63 61 36 30 30 34 65 36 35 63 34 62 37  b98ca6004e65c4b7
1e80: 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 4d 44 5f  1aa7d}..test MD_
1e90: 46 69 6c 65 2d 37 2e 34 20 7b 73 68 61 32 35 36  File-7.4 {sha256
1ea0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
1eb0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
1ec0: 32 35 36 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  256 -file $test_
1ed0: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
1ee0: 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32  lt {9d3578fc1382
1ef0: 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66  05cf0ee4b4cef35f
1f00: 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31  e101bb4ecac7b161
1f10: 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39  4c18e6fa48b5c7f9
1f20: 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 46  5e19}..test MD_F
1f30: 69 6c 65 2d 37 2e 35 20 7b 73 68 61 35 31 32 7d  ile-7.5 {sha512}
1f40: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
1f50: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 35  :md -digest sha5
1f60: 31 32 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  12 -file $test_f
1f70: 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ile.    } -resul
1f80: 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31  t {d178e759dc591
1f90: 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33  27071588d2fad173
1fa0: 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34  c06238d87e800a64
1fb0: 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30  03c0a30daa4faaf0
1fc0: 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61  5d0e7ce04916afaa
1fd0: 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61  6a58a30cbeb597da
1fe0: 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62  cb01c62f9fb9d89b
1ff0: 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31  ab9da630c699e481
2000: 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69  6f1}..test MD_Fi
2010: 6c 65 2d 37 2e 36 20 7b 6d 64 35 20 62 69 6e 7d  le-7.6 {md5 bin}
2020: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79   -body {..binary
2030: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74   encode hex [::t
2040: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
2050: 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  d5 -file $test_f
2060: 69 6c 65 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20  ile -bin].    } 
2070: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
2080: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
2090: 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74  7bb94ea09}..test
20a0: 20 4d 44 5f 46 69 6c 65 2d 37 2e 37 20 7b 6d 64   MD_File-7.7 {md
20b0: 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09  5 hex} -body {..
20c0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
20d0: 74 20 6d 64 35 20 2d 66 69 6c 65 20 24 74 65 73  t md5 -file $tes
20e0: 74 5f 66 69 6c 65 20 2d 68 65 78 0a 20 20 20 20  t_file -hex.    
20f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
2100: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
2110: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20  427bb94ea09}..# 
2120: 4d 44 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a  MD Error Cases..
2130: 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d  .test MD_Errors-
2140: 38 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67  8.1 {Too few arg
2150: 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  s} -body {..::tl
2160: 73 3a 3a 6d 64 0a 20 20 20 20 7d 20 2d 72 65 73  s::md.    } -res
2170: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67  ult {wrong # arg
2180: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a  s: should be "::
2190: 74 6c 73 3a 3a 6d 64 20 3f 2d 62 69 6e 7c 2d 68  tls::md ?-bin|-h
21a0: 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d  ex? ?-cipher nam
21b0: 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65  e? ?-digest name
21c0: 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d  ? ?-key key? ?-m
21d0: 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e  ac name? [-chann
21e0: 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61  el chan | -comma
21f0: 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69  nd cmdName | -fi
2200: 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d  le filename | ?-
2210: 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72  data? data]"} -r
2220: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
2230: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
2240: 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67  .2 {Too many arg
2250: 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  s} -body {..::tl
2260: 73 3a 3a 6d 64 20 74 6f 6f 20 6d 61 6e 79 20 63  s::md too many c
2270: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73  ommand line args
2280: 20 74 6f 20 70 61 73 73 20 74 68 65 20 74 65 73   to pass the tes
2290: 74 20 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72  t without an err
22a0: 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20  or or failing.  
22b0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f    } -result {wro
22c0: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
22d0: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20  d be "::tls::md 
22e0: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69  ?-bin|-hex? ?-ci
22f0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67  pher name? ?-dig
2300: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20  est name? ?-key 
2310: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f  key? ?-mac name?
2320: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20   [-channel chan 
2330: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
2340: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e  me | -file filen
2350: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61  ame | ?-data? da
2360: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  ta]"} -returnCod
2370: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f  es {1}..test MD_
2380: 45 72 72 6f 72 73 2d 38 2e 33 20 7b 49 6e 76 61  Errors-8.3 {Inva
2390: 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62 6f 64  lid digest} -bod
23a0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 62  y {..::tls::md b
23b0: 6f 67 75 73 20 64 61 74 61 0a 20 20 20 20 7d 20  ogus data.    } 
23c0: 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64  -result {Invalid
23d0: 20 64 69 67 65 73 74 20 22 62 6f 67 75 73 22 7d   digest "bogus"}
23e0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
23f0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72  }..test MD_Error
2400: 73 2d 38 2e 34 20 7b 49 6e 76 61 6c 69 64 20 64  s-8.4 {Invalid d
2410: 69 67 65 73 74 20 41 72 67 7d 20 2d 62 6f 64 79  igest Arg} -body
2420: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
2430: 69 67 65 73 74 20 62 6f 67 75 73 20 2d 64 61 74  igest bogus -dat
2440: 61 20 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  a data.    } -re
2450: 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20 64 69  sult {Invalid di
2460: 67 65 73 74 20 22 62 6f 67 75 73 22 7d 20 2d 72  gest "bogus"} -r
2470: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
2480: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
2490: 2e 35 20 7b 4e 6f 20 64 69 67 65 73 74 7d 20 2d  .5 {No digest} -
24a0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
24b0: 64 20 2d 68 65 78 20 2d 64 61 74 61 20 76 61 6c  d -hex -data val
24c0: 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ue.    } -result
24d0: 20 7b 4e 6f 20 64 69 67 65 73 74 20 73 70 65 63   {No digest spec
24e0: 69 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f  ified} -returnCo
24f0: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44  des {1}..test MD
2500: 5f 45 72 72 6f 72 73 2d 38 2e 36 20 7b 49 6e 76  _Errors-8.6 {Inv
2510: 61 6c 69 64 20 6f 70 74 69 6f 6e 7d 20 2d 62 6f  alid option} -bo
2520: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
2530: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
2540: 62 6f 67 75 73 20 76 61 6c 75 65 0a 20 20 20 20  bogus value.    
2550: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 64 20 6f  } -result {bad o
2560: 70 74 69 6f 6e 20 22 2d 62 6f 67 75 73 22 3a 20  ption "-bogus": 
2570: 6d 75 73 74 20 62 65 20 2d 62 69 6e 2c 20 2d 63  must be -bin, -c
2580: 68 61 6e 6e 65 6c 2c 20 2d 63 69 70 68 65 72 2c  hannel, -cipher,
2590: 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61   -command, -data
25a0: 2c 20 2d 64 69 67 65 73 74 2c 20 2d 66 69 6c 65  , -digest, -file
25b0: 2c 20 2d 66 69 6c 65 6e 61 6d 65 2c 20 2d 68 65  , -filename, -he
25c0: 78 2c 20 2d 6b 65 79 2c 20 6f 72 20 2d 6d 61 63  x, -key, or -mac
25d0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
25e0: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f  1}..test MD_Erro
25f0: 72 73 2d 38 2e 37 20 7b 49 6e 76 61 6c 69 64 20  rs-8.7 {Invalid 
2600: 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  file} -body {..:
2610: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
2620: 20 73 68 61 32 35 36 20 2d 66 69 6c 65 20 62 6f   sha256 -file bo
2630: 67 75 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  gus.    } -resul
2640: 74 20 7b 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e  t {couldn't open
2650: 20 22 62 6f 67 75 73 22 3a 20 6e 6f 20 73 75 63   "bogus": no suc
2660: 68 20 66 69 6c 65 20 6f 72 20 64 69 72 65 63 74  h file or direct
2670: 6f 72 79 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  ory} -returnCode
2680: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45  s {1}..test MD_E
2690: 72 72 6f 72 73 2d 38 2e 38 20 7b 49 6e 76 61 6c  rrors-8.8 {Inval
26a0: 69 64 20 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64  id channel} -bod
26b0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
26c0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 63  digest sha256 -c
26d0: 68 61 6e 6e 65 6c 20 62 6f 67 75 73 0a 20 20 20  hannel bogus.   
26e0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 61 6e 20   } -result {can 
26f0: 6e 6f 74 20 66 69 6e 64 20 63 68 61 6e 6e 65 6c  not find channel
2700: 20 6e 61 6d 65 64 20 22 62 6f 67 75 73 22 7d 20   named "bogus"} 
2710: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
2720: 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73  ..test MD_Errors
2730: 2d 38 2e 39 20 7b 4e 6f 20 6f 70 65 72 61 74 69  -8.9 {No operati
2740: 6f 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  on} -body {..::t
2750: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
2760: 68 61 32 35 36 20 2d 62 69 6e 0a 20 20 20 20 7d  ha256 -bin.    }
2770: 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6f 70 65   -result {No ope
2780: 72 61 74 69 6f 6e 20 73 70 65 63 69 66 69 65 64  ration specified
2790: 3a 20 55 73 65 20 2d 63 68 61 6e 6e 65 6c 2c 20  : Use -channel, 
27a0: 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c  -command, -data,
27b0: 20 6f 72 20 2d 66 69 6c 65 20 6f 70 74 69 6f 6e   or -file option
27c0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
27d0: 31 7d 0a 0a 0a 23 20 54 65 73 74 20 43 4d 41 43  1}...# Test CMAC
27e0: 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73   command.set tes
27f0: 74 5f 63 69 70 68 65 72 20 22 61 65 73 2d 31 32  t_cipher "aes-12
2800: 38 2d 63 62 63 22 0a 73 65 74 20 74 65 73 74 5f  8-cbc".set test_
2810: 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79  key "Example key
2820: 20 31 32 33 34 22 0a 0a 0a 74 65 73 74 20 43 4d   1234"...test CM
2830: 41 43 2d 39 2e 31 20 7b 64 61 74 61 7d 20 2d 62  AC-9.1 {data} -b
2840: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
2850: 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  ac -cipher $test
2860: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2870: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
2880: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
2890: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
28a0: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
28b0: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43  dfe52fa}..test C
28c0: 4d 41 43 2d 39 2e 32 20 7b 66 69 6c 65 7d 20 2d  MAC-9.2 {file} -
28d0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
28e0: 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73  mac -cipher $tes
28f0: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
2900: 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74  est_key -file $t
2910: 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d  est_file.    } -
2920: 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66  result {baf5c20f
2930: 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65  9973e2d606b14c7e
2940: 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20  fdfe52fa}..test 
2950: 43 4d 41 43 2d 39 2e 33 20 7b 63 68 61 6e 6e 65  CMAC-9.3 {channe
2960: 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65  l} -body {..dige
2970: 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74  st_read_chan ::t
2980: 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73 74 5f 66  ls::cmac $test_f
2990: 69 6c 65 20 2d 63 69 70 68 65 72 20 24 74 65 73  ile -cipher $tes
29a0: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
29b0: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72  est_key.    } -r
29c0: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
29d0: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
29e0: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43  dfe52fa}..test C
29f0: 4d 41 43 2d 39 2e 34 20 7b 63 6f 6d 6d 61 6e 64  MAC-9.4 {command
2a00: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
2a10: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
2a20: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 63  st_data ::tls::c
2a30: 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73  mac -cipher $tes
2a40: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
2a50: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72  est_key.    } -r
2a60: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
2a70: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
2a80: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43  dfe52fa}..test C
2a90: 4d 41 43 2d 39 2e 35 20 7b 64 61 74 61 20 62 69  MAC-9.5 {data bi
2aa0: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61  n} -body {..bina
2ab0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a  ry encode hex [:
2ac0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 62 69 6e 20  :tls::cmac -bin 
2ad0: 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69  -cipher $test_ci
2ae0: 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f  pher -key $test_
2af0: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
2b00: 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73  data].    } -res
2b10: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
2b20: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
2b30: 65 35 32 66 61 7d 0a 0a 23 20 54 65 73 74 20 4d  e52fa}..# Test M
2b40: 44 20 43 4d 41 43 0a 0a 0a 74 65 73 74 20 4d 44  D CMAC...test MD
2b50: 5f 43 4d 41 43 2d 31 30 2e 31 20 7b 64 61 74 61  _CMAC-10.1 {data
2b60: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
2b70: 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65  ::md -cipher $te
2b80: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2b90: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
2ba0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
2bb0: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2bc0: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2bd0: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2be0: 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 32 20 7b 66   MD_CMAC-10.2 {f
2bf0: 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ile} -body {..::
2c00: 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20  tls::md -cipher 
2c10: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65  $test_cipher -ke
2c20: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c  y $test_key -fil
2c30: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20  e $test_file.   
2c40: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35   } -result {baf5
2c50: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31  c20f9973e2d606b1
2c60: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74  4c7efdfe52fa}..t
2c70: 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 33  est MD_CMAC-10.3
2c80: 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79   {channel} -body
2c90: 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f   {..digest_read_
2ca0: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24  chan ::tls::md $
2cb0: 74 65 73 74 5f 66 69 6c 65 20 2d 63 69 70 68 65  test_file -ciphe
2cc0: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
2cd0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20  key $test_key.  
2ce0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66    } -result {baf
2cf0: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62  5c20f9973e2d606b
2d00: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a  14c7efdfe52fa}..
2d10: 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e  test MD_CMAC-10.
2d20: 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64  4 {command} -bod
2d30: 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75  y {..digest_accu
2d40: 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74  mulate $test_dat
2d50: 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70  a ::tls::md -cip
2d60: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
2d70: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a   -key $test_key.
2d80: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
2d90: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30  af5c20f9973e2d60
2da0: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d  6b14c7efdfe52fa}
2db0: 0a 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31  ..test MD_CMAC-1
2dc0: 30 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d  0.5 {data bin} -
2dd0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
2de0: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73  ncode hex [::tls
2df0: 3a 3a 6d 64 20 2d 62 69 6e 20 2d 63 69 70 68 65  ::md -bin -ciphe
2e00: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
2e10: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64  key $test_key -d
2e20: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a  ata $test_data].
2e30: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
2e40: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30  af5c20f9973e2d60
2e50: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d  6b14c7efdfe52fa}
2e60: 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20 53 68  ..# Test CMAC Sh
2e70: 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 43 4d  ortcut...test CM
2e80: 41 43 5f 53 68 6f 72 74 63 75 74 2d 31 31 2e 31  AC_Shortcut-11.1
2e90: 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a   {data} -body {.
2ea0: 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65  .::tls::cmac $te
2eb0: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2ec0: 74 65 73 74 5f 6b 65 79 20 24 74 65 73 74 5f 64  test_key $test_d
2ed0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
2ee0: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65  t {baf5c20f9973e
2ef0: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35  2d606b14c7efdfe5
2f00: 32 66 61 7d 0a 0a 23 20 43 4d 41 43 20 45 72 72  2fa}..# CMAC Err
2f10: 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20  or Cases...test 
2f20: 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 31  CMAC_Errors-12.1
2f30: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20   {Too few args} 
2f40: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2f50: 63 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73 75  cmac.    } -resu
2f60: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  lt {wrong # args
2f70: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74  : should be "::t
2f80: 6c 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d  ls::cmac ?-bin|-
2f90: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
2fa0: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d  me? ?-digest nam
2fb0: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d  e? ?-key key? ?-
2fc0: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e  mac name? [-chan
2fd0: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d  nel chan | -comm
2fe0: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66  and cmdName | -f
2ff0: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f  ile filename | ?
3000: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d  -data? data]"} -
3010: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
3020: 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72  .test CMAC_Error
3030: 73 2d 31 32 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79  s-12.2 {Too many
3040: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09   args} -body {..
3050: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 74 6f 6f 20  ::tls::cmac too 
3060: 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  many command lin
3070: 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74  e args to pass t
3080: 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20  he test without 
3090: 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c  an error or fail
30a0: 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ing.    } -resul
30b0: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
30c0: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
30d0: 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68  s::cmac ?-bin|-h
30e0: 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d  ex? ?-cipher nam
30f0: 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65  e? ?-digest name
3100: 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d  ? ?-key key? ?-m
3110: 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e  ac name? [-chann
3120: 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61  el chan | -comma
3130: 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69  nd cmdName | -fi
3140: 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d  le filename | ?-
3150: 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72  data? data]"} -r
3160: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
3170: 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73  test CMAC_Errors
3180: 2d 31 32 2e 33 20 7b 4e 6f 20 63 69 70 68 65 72  -12.3 {No cipher
3190: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
31a0: 3a 3a 63 6d 61 63 20 2d 68 65 78 20 2d 64 61 74  ::cmac -hex -dat
31b0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
31c0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 63   } -result {No c
31d0: 69 70 68 65 72 20 73 70 65 63 69 66 69 65 64 7d  ipher specified}
31e0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
31f0: 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72  }..test CMAC_Err
3200: 6f 72 73 2d 31 32 2e 34 20 7b 4e 6f 20 6b 65 79  ors-12.4 {No key
3210: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3220: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24  ::cmac -cipher $
3230: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 64 61 74  test_cipher -dat
3240: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
3250: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b   } -result {No k
3260: 65 79 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72  ey specified} -r
3270: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
3280: 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73  test CMAC_Errors
3290: 2d 31 32 2e 35 20 7b 49 6e 76 61 6c 69 64 20 63  -12.5 {Invalid c
32a0: 69 70 68 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09  ipher} -body {..
32b0: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
32c0: 68 65 72 20 62 6f 67 75 73 20 2d 64 61 74 61 20  her bogus -data 
32d0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
32e0: 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69   -result {Invali
32f0: 64 20 63 69 70 68 65 72 20 22 62 6f 67 75 73 22  d cipher "bogus"
3300: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
3310: 31 7d 0a 0a 0a 23 20 54 65 73 74 20 48 4d 41 43  1}...# Test HMAC
3320: 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73   command.set tes
3330: 74 5f 64 69 67 65 73 74 20 6d 64 35 0a 73 65 74  t_digest md5.set
3340: 20 74 65 73 74 5f 6b 65 79 20 22 45 78 61 6d 70   test_key "Examp
3350: 6c 65 20 6b 65 79 22 0a 0a 0a 74 65 73 74 20 48  le key"...test H
3360: 4d 41 43 2d 31 33 2e 31 20 7b 64 61 74 61 7d 20  MAC-13.1 {data} 
3370: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
3380: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74 65  hmac -digest $te
3390: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
33a0: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
33b0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
33c0: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
33d0: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
33e0: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
33f0: 20 48 4d 41 43 2d 31 33 2e 32 20 7b 66 69 6c 65   HMAC-13.2 {file
3400: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3410: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24  ::hmac -digest $
3420: 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79  test_digest -key
3430: 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65   $test_key -file
3440: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
3450: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
3460: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
3470: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65  76c6a79d93d}..te
3480: 73 74 20 48 4d 41 43 2d 31 33 2e 33 20 7b 63 68  st HMAC-13.3 {ch
3490: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09  annel} -body {..
34a0: 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e  digest_read_chan
34b0: 20 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 24 74 65   ::tls::hmac $te
34c0: 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20  st_file -digest 
34d0: 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65  $test_digest -ke
34e0: 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20  y $test_key.    
34f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
3500: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
3510: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65  76c6a79d93d}..te
3520: 73 74 20 48 4d 41 43 2d 31 33 2e 34 20 7b 63 6f  st HMAC-13.4 {co
3530: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09  mmand} -body {..
3540: 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74  digest_accumulat
3550: 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74  e $test_data ::t
3560: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
3570: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
3580: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20  ey $test_key.   
3590: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33   } -result {f983
35a0: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66  27ef3e20ab6d388f
35b0: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74  676c6a79d93d}..t
35c0: 65 73 74 20 48 4d 41 43 2d 31 33 2e 35 20 7b 64  est HMAC-13.5 {d
35d0: 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b  ata bin} -body {
35e0: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20  ..binary encode 
35f0: 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63  hex [::tls::hmac
3600: 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64   -digest $test_d
3610: 69 67 65 73 74 20 2d 62 69 6e 20 2d 6b 65 79 20  igest -bin -key 
3620: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
3630: 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20  $test_data].    
3640: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
3650: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
3660: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 23 20  76c6a79d93d}..# 
3670: 54 65 73 74 20 4d 44 20 48 4d 41 43 0a 0a 0a 74  Test MD HMAC...t
3680: 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 31  est MD_HMAC-14.1
3690: 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a   {data} -body {.
36a0: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
36b0: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
36c0: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d  -key $test_key -
36d0: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
36e0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
36f0: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
3700: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
3710: 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31  ..test MD_HMAC-1
3720: 34 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f 64 79  4.2 {file} -body
3730: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
3740: 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65  igest $test_dige
3750: 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  st -key $test_ke
3760: 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69  y -file $test_fi
3770: 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  le.    } -result
3780: 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62   {f98327ef3e20ab
3790: 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39  6d388f676c6a79d9
37a0: 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41  3d}..test MD_HMA
37b0: 43 2d 31 34 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d  C-14.3 {channel}
37c0: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
37d0: 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  _read_chan ::tls
37e0: 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20  ::md $test_file 
37f0: 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69  -digest $test_di
3800: 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f  gest -key $test_
3810: 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  key.    } -resul
3820: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
3830: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
3840: 39 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d  93d}..test MD_HM
3850: 41 43 2d 31 34 2e 34 20 7b 63 6f 6d 6d 61 6e 64  AC-14.4 {command
3860: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
3870: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
3880: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
3890: 64 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f  d -digest $test_
38a0: 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73  digest -key $tes
38b0: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73  t_key.    } -res
38c0: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
38d0: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
38e0: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f  9d93d}..test MD_
38f0: 48 4d 41 43 2d 31 34 2e 35 20 7b 64 61 74 61 20  HMAC-14.5 {data 
3900: 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69  bin} -body {..bi
3910: 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20  nary encode hex 
3920: 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  [::tls::md -dige
3930: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
3940: 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f  -bin -key $test_
3950: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
3960: 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73  data].    } -res
3970: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
3980: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
3990: 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 48  9d93d}..# Test H
39a0: 4d 41 43 20 53 68 6f 72 74 63 75 74 0a 0a 0a 74  MAC Shortcut...t
39b0: 65 73 74 20 48 4d 41 43 5f 53 68 6f 72 74 63 75  est HMAC_Shortcu
39c0: 74 2d 31 35 2e 31 20 7b 64 61 74 61 7d 20 2d 62  t-15.1 {data} -b
39d0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
39e0: 61 63 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  ac $test_digest 
39f0: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 24  -key $test_key $
3a00: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
3a10: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
3a20: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
3a30: 63 36 61 37 39 64 39 33 64 7d 0a 0a 23 20 48 4d  c6a79d93d}..# HM
3a40: 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a  AC Error Cases..
3a50: 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72  .test HMAC_Error
3a60: 73 2d 31 36 2e 31 20 7b 54 6f 6f 20 66 65 77 20  s-16.1 {Too few 
3a70: 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  args} -body {..:
3a80: 3a 74 6c 73 3a 3a 68 6d 61 63 0a 20 20 20 20 7d  :tls::hmac.    }
3a90: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
3aa0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
3ab0: 65 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f  e "::tls::hmac ?
3ac0: 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70  -bin|-hex? ?-cip
3ad0: 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65  her name? ?-dige
3ae0: 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b  st name? ?-key k
3af0: 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20  ey? ?-mac name? 
3b00: 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c  [-channel chan |
3b10: 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d   -command cmdNam
3b20: 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61  e | -file filena
3b30: 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74  me | ?-data? dat
3b40: 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  a]"} -returnCode
3b50: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43  s {1}..test HMAC
3b60: 5f 45 72 72 6f 72 73 2d 31 36 2e 32 20 7b 54 6f  _Errors-16.2 {To
3b70: 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20 2d 62 6f  o many args} -bo
3b80: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
3b90: 63 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61  c too many comma
3ba0: 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74 6f 20  nd line args to 
3bb0: 70 61 73 73 20 74 68 65 20 74 65 73 74 20 77 69  pass the test wi
3bc0: 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72 20 6f  thout an error o
3bd0: 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d 20  r failing.    } 
3be0: 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23  -result {wrong #
3bf0: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
3c00: 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d   "::tls::hmac ?-
3c10: 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68  bin|-hex? ?-ciph
3c20: 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73  er name? ?-diges
3c30: 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65  t name? ?-key ke
3c40: 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b  y? ?-mac name? [
3c50: 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20  -channel chan | 
3c60: 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65  -command cmdName
3c70: 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d   | -file filenam
3c80: 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61  e | ?-data? data
3c90: 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ]"} -returnCodes
3ca0: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f   {1}..test HMAC_
3cb0: 45 72 72 6f 72 73 2d 31 36 2e 33 20 7b 4e 6f 20  Errors-16.3 {No 
3cc0: 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b 0a  digest} -body {.
3cd0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 68 65  .::tls::hmac -he
3ce0: 78 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  x -data $test_da
3cf0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
3d00: 20 7b 4e 6f 20 64 69 67 65 73 74 20 73 70 65 63   {No digest spec
3d10: 69 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f  ified} -returnCo
3d20: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d  des {1}..test HM
3d30: 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 34 20 7b  AC_Errors-16.4 {
3d40: 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a  No key} -body {.
3d50: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
3d60: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74  gest sha256 -dat
3d70: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
3d80: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b   } -result {No k
3d90: 65 79 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72  ey specified} -r
3da0: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
3db0: 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72 73  test HMAC_Errors
3dc0: 2d 31 36 2e 35 20 7b 49 6e 76 61 6c 69 64 20 64  -16.5 {Invalid d
3dd0: 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b 0a 09  igest} -body {..
3de0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
3df0: 74 20 62 6f 67 75 73 20 2d 6b 65 79 20 24 74 65  t bogus -key $te
3e00: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
3e10: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
3e20: 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20 64  esult {Invalid d
3e30: 69 67 65 73 74 20 22 62 6f 67 75 73 22 7d 20 2d  igest "bogus"} -
3e40: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
3e50: 0a 0a 23 20 54 65 73 74 20 4d 41 43 20 63 6f 6d  ..# Test MAC com
3e60: 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f 63 69  mand.set test_ci
3e70: 70 68 65 72 20 22 61 65 73 2d 31 32 38 2d 63 62  pher "aes-128-cb
3e80: 63 22 0a 73 65 74 20 74 65 73 74 5f 64 69 67 65  c".set test_dige
3e90: 73 74 20 73 68 61 32 35 36 0a 73 65 74 20 74 65  st sha256.set te
3ea0: 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20  st_key "Example 
3eb0: 6b 65 79 20 31 32 33 34 22 0a 0a 0a 74 65 73 74  key 1234"...test
3ec0: 20 4d 41 43 2d 31 37 2e 31 20 7b 43 4d 41 43 7d   MAC-17.1 {CMAC}
3ed0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3ee0: 3a 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65  :mac -cipher $te
3ef0: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
3f00: 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20 63 6d  test_key -mac cm
3f10: 61 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ac -data $test_d
3f20: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
3f30: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65  t {baf5c20f9973e
3f40: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35  2d606b14c7efdfe5
3f50: 32 66 61 7d 0a 0a 74 65 73 74 20 4d 41 43 2d 31  2fa}..test MAC-1
3f60: 37 2e 32 20 7b 48 4d 41 43 7d 20 2d 62 6f 64 79  7.2 {HMAC} -body
3f70: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d   {..::tls::mac -
3f80: 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67  digest $test_dig
3f90: 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  est -key $test_k
3fa0: 65 79 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 61  ey -mac hmac -da
3fb0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3fc0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 37 36    } -result {676
3fd0: 64 61 66 39 36 33 37 30 64 30 65 33 63 35 35 39  daf96370d0e3c559
3fe0: 38 35 35 37 64 61 33 38 61 39 61 38 31 30 61 34  8557da38a9a810a4
3ff0: 66 62 61 63 62 62 32 64 31 30 63 36 37 66 36 64  fbacbb2d10c67f6d
4000: 66 61 38 33 66 31 30 66 34 38 65 39 36 7d 0a 0a  fa83f10f48e96}..
4010: 74 65 73 74 20 4d 41 43 2d 31 37 2e 33 20 7b 4d  test MAC-17.3 {M
4020: 44 2d 43 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a  D-CMAC} -body {.
4030: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68  .::tls::md -ciph
4040: 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20  er $test_cipher 
4050: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d  -key $test_key -
4060: 6d 61 63 20 63 6d 61 63 20 2d 64 61 74 61 20 24  mac cmac -data $
4070: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
4080: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
4090: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
40a0: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
40b0: 20 4d 41 43 2d 31 37 2e 34 20 7b 4d 44 2d 48 4d   MAC-17.4 {MD-HM
40c0: 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  AC} -body {..::t
40d0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 24  ls::md -digest $
40e0: 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79  test_digest -key
40f0: 20 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20   $test_key -mac 
4100: 68 6d 61 63 20 2d 64 61 74 61 20 24 74 65 73 74  hmac -data $test
4110: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
4120: 75 6c 74 20 7b 36 37 36 64 61 66 39 36 33 37 30  ult {676daf96370
4130: 64 30 65 33 63 35 35 39 38 35 35 37 64 61 33 38  d0e3c5598557da38
4140: 61 39 61 38 31 30 61 34 66 62 61 63 62 62 32 64  a9a810a4fbacbb2d
4150: 31 30 63 36 37 66 36 64 66 61 38 33 66 31 30 66  10c67f6dfa83f10f
4160: 34 38 65 39 36 7d 0a 0a 23 20 4d 41 43 20 45 72  48e96}..# MAC Er
4170: 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74  ror Cases...test
4180: 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38 2e 31   MAC_Errors-18.1
4190: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20   {Too few args} 
41a0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
41b0: 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  mac.    } -resul
41c0: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
41d0: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
41e0: 73 3a 3a 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65  s::mac ?-bin|-he
41f0: 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65  x? ?-cipher name
4200: 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f  ? ?-digest name?
4210: 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61   ?-key key? ?-ma
4220: 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65  c name? [-channe
4230: 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e  l chan | -comman
4240: 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c  d cmdName | -fil
4250: 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64  e filename | ?-d
4260: 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65  ata? data]"} -re
4270: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
4280: 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31  est MAC_Errors-1
4290: 38 2e 32 20 7b 4e 6f 20 6d 61 63 7d 20 2d 62 6f  8.2 {No mac} -bo
42a0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63  dy {..::tls::mac
42b0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
42c0: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
42d0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
42e0: 4e 6f 20 4d 41 43 20 73 70 65 63 69 66 69 65 64  No MAC specified
42f0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
4300: 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72  1}..test MAC_Err
4310: 6f 72 73 2d 31 38 2e 33 20 7b 4e 6f 20 6b 65 79  ors-18.3 {No key
4320: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
4330: 3a 3a 6d 61 63 20 2d 6d 61 63 20 68 6d 61 63 20  ::mac -mac hmac 
4340: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
4350: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4360: 4e 6f 20 6b 65 79 20 73 70 65 63 69 66 69 65 64  No key specified
4370: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
4380: 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72  1}..test MAC_Err
4390: 6f 72 73 2d 31 38 2e 34 20 7b 49 6e 76 61 6c 69  ors-18.4 {Invali
43a0: 64 20 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09  d MAC} -body {..
43b0: 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 6d 61 63 20  ::tls::mac -mac 
43c0: 73 63 72 79 70 74 20 2d 6b 65 79 20 24 74 65 73  scrypt -key $tes
43d0: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
43e0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
43f0: 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20 4d 41  sult {Invalid MA
4400: 43 20 22 73 63 72 79 70 74 22 7d 20 2d 72 65 74  C "scrypt"} -ret
4410: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
4420: 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38  st MAC_Errors-18
4430: 2e 35 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67  .5 {Too many arg
4440: 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  s} -body {..::tl
4450: 73 3a 3a 6d 61 63 20 74 6f 6f 20 6d 61 6e 79 20  s::mac too many 
4460: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67  command line arg
4470: 73 20 74 6f 20 70 61 73 73 20 74 68 65 20 74 65  s to pass the te
4480: 73 74 20 77 69 74 68 6f 75 74 20 61 6e 20 65 72  st without an er
4490: 72 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20  ror or failing. 
44a0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72     } -result {wr
44b0: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
44c0: 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61  ld be "::tls::ma
44d0: 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d  c ?-bin|-hex? ?-
44e0: 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64  cipher name? ?-d
44f0: 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65  igest name? ?-ke
4500: 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d  y key? ?-mac nam
4510: 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61  e? [-channel cha
4520: 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64  n | -command cmd
4530: 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c  Name | -file fil
4540: 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20  ename | ?-data? 
4550: 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43  data]"} -returnC
4560: 6f 64 65 73 20 7b 31 7d 0a 0a 0a 23 20 52 46 43  odes {1}...# RFC
4570: 20 31 33 32 31 20 4d 65 73 73 61 67 65 20 44 69   1321 Message Di
4580: 67 65 73 74 20 35 0a 0a 0a 74 65 73 74 20 52 46  gest 5...test RF
4590: 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 31 20 7b  C1321-MD5-19.1 {
45a0: 54 43 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC1} -body {..::
45b0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
45c0: 6d 64 35 20 2d 64 61 74 61 20 22 22 0a 20 20 20  md5 -data "".   
45d0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 34 31 64   } -result {d41d
45e0: 38 63 64 39 38 66 30 30 62 32 30 34 65 39 38 30  8cd98f00b204e980
45f0: 30 39 39 38 65 63 66 38 34 32 37 65 7d 0a 0a 74  0998ecf8427e}..t
4600: 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d  est RFC1321-MD5-
4610: 31 39 2e 32 20 7b 54 43 32 7d 20 2d 62 6f 64 79  19.2 {TC2} -body
4620: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4630: 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20  igest md5 -data 
4640: 22 61 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  "a".    } -resul
4650: 74 20 7b 30 63 63 31 37 35 62 39 63 30 66 31 62  t {0cc175b9c0f1b
4660: 36 61 38 33 31 63 33 39 39 65 32 36 39 37 37 32  6a831c399e269772
4670: 36 36 31 7d 0a 0a 74 65 73 74 20 52 46 43 31 33  661}..test RFC13
4680: 32 31 2d 4d 44 35 2d 31 39 2e 33 20 7b 54 43 33  21-MD5-19.3 {TC3
4690: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
46a0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35  ::md -digest md5
46b0: 20 2d 64 61 74 61 20 22 61 62 63 22 0a 20 20 20   -data "abc".   
46c0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 30 30 31   } -result {9001
46d0: 35 30 39 38 33 63 64 32 34 66 62 30 64 36 39 36  50983cd24fb0d696
46e0: 33 66 37 64 32 38 65 31 37 66 37 32 7d 0a 0a 74  3f7d28e17f72}..t
46f0: 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d  est RFC1321-MD5-
4700: 31 39 2e 34 20 7b 54 43 34 7d 20 2d 62 6f 64 79  19.4 {TC4} -body
4710: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4720: 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20  igest md5 -data 
4730: 22 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 22  "message digest"
4740: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4750: 66 39 36 62 36 39 37 64 37 63 62 37 39 33 38 64  f96b697d7cb7938d
4760: 35 32 35 61 32 66 33 31 61 61 66 31 36 31 64 30  525a2f31aaf161d0
4770: 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d  }..test RFC1321-
4780: 4d 44 35 2d 31 39 2e 35 20 7b 54 43 35 7d 20 2d  MD5-19.5 {TC5} -
4790: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
47a0: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64  d -digest md5 -d
47b0: 61 74 61 20 22 61 62 63 64 65 66 67 68 69 6a 6b  ata "abcdefghijk
47c0: 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 22  lmnopqrstuvwxyz"
47d0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
47e0: 63 33 66 63 64 33 64 37 36 31 39 32 65 34 30 30  c3fcd3d76192e400
47f0: 37 64 66 62 34 39 36 63 63 61 36 37 65 31 33 62  7dfb496cca67e13b
4800: 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d  }..test RFC1321-
4810: 4d 44 35 2d 31 39 2e 36 20 7b 54 43 36 7d 20 2d  MD5-19.6 {TC6} -
4820: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
4830: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64  d -digest md5 -d
4840: 61 74 61 20 22 41 42 43 44 45 46 47 48 49 4a 4b  ata "ABCDEFGHIJK
4850: 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 61  LMNOPQRSTUVWXYZa
4860: 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71  bcdefghijklmnopq
4870: 72 73 74 75 76 77 78 79 7a 30 31 32 33 34 35 36  rstuvwxyz0123456
4880: 37 38 39 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  789".    } -resu
4890: 6c 74 20 7b 64 31 37 34 61 62 39 38 64 32 37 37  lt {d174ab98d277
48a0: 64 39 66 35 61 35 36 31 31 63 32 63 39 66 34 31  d9f5a5611c2c9f41
48b0: 39 64 39 66 7d 0a 0a 74 65 73 74 20 52 46 43 31  9d9f}..test RFC1
48c0: 33 32 31 2d 4d 44 35 2d 31 39 2e 37 20 7b 54 43  321-MD5-19.7 {TC
48d0: 37 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  7} -body {..::tl
48e0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64  s::md -digest md
48f0: 35 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67 20  5 -data [string 
4900: 72 65 70 65 61 74 20 22 31 32 33 34 35 36 37 38  repeat "12345678
4910: 39 30 22 20 38 5d 0a 20 20 20 20 7d 20 2d 72 65  90" 8].    } -re
4920: 73 75 6c 74 20 7b 35 37 65 64 66 34 61 32 32 62  sult {57edf4a22b
4930: 65 33 63 39 35 35 61 63 34 39 64 61 32 65 32 31  e3c955ac49da2e21
4940: 30 37 62 36 37 61 7d 0a 0a 23 20 52 46 43 20 36  07b67a}..# RFC 6
4950: 32 33 34 20 53 48 41 31 0a 0a 0a 74 65 73 74 20  234 SHA1...test 
4960: 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d  RFC6234-MD-SHA1-
4970: 32 30 2e 31 20 7b 54 43 31 7d 20 2d 62 6f 64 79  20.1 {TC1} -body
4980: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4990: 69 67 65 73 74 20 73 68 61 31 20 2d 64 61 74 61  igest sha1 -data
49a0: 20 22 61 62 63 22 0a 20 20 20 20 7d 20 2d 72 65   "abc".    } -re
49b0: 73 75 6c 74 20 7b 61 39 39 39 33 65 33 36 34 37  sult {a9993e3647
49c0: 30 36 38 31 36 61 62 61 33 65 32 35 37 31 37 38  06816aba3e257178
49d0: 35 30 63 32 36 63 39 63 64 30 64 38 39 64 7d 0a  50c26c9cd0d89d}.
49e0: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
49f0: 2d 53 48 41 31 2d 32 30 2e 32 20 7b 54 43 32 5f  -SHA1-20.2 {TC2_
4a00: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  1} -body {..::tl
4a10: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
4a20: 61 31 20 2d 64 61 74 61 20 22 61 62 63 64 62 63  a1 -data "abcdbc
4a30: 64 65 63 64 65 66 64 65 66 67 65 66 67 68 66 67  decdefdefgefghfg
4a40: 68 69 67 68 69 6a 68 69 6a 6b 69 6a 6b 6c 6a 6b  highijhijkijkljk
4a50: 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d 6e 6f 70 6e 6f  lmklmnlmnomnopno
4a60: 70 71 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  pq".    } -resul
4a70: 74 20 7b 38 34 39 38 33 65 34 34 31 63 33 62 64  t {84983e441c3bd
4a80: 32 36 65 62 61 61 65 34 61 61 31 66 39 35 31 32  26ebaae4aa1f9512
4a90: 39 65 35 65 35 34 36 37 30 66 31 7d 0a 0a 74 65  9e5e54670f1}..te
4aa0: 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48  st RFC6234-MD-SH
4ab0: 41 31 2d 32 30 2e 33 20 7b 54 43 33 7d 20 2d 62  A1-20.3 {TC3} -b
4ac0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4ad0: 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64   -digest sha1 -d
4ae0: 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70 65  ata [string repe
4af0: 61 74 20 22 61 22 20 31 30 30 30 30 30 30 5d 0a  at "a" 1000000].
4b00: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33      } -result {3
4b10: 34 61 61 39 37 33 63 64 34 63 34 64 61 61 34 66  4aa973cd4c4daa4f
4b20: 36 31 65 65 62 32 62 64 62 61 64 32 37 33 31 36  61eeb2bdbad27316
4b30: 35 33 34 30 31 36 66 7d 0a 0a 74 65 73 74 20 52  534016f}..test R
4b40: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32  FC6234-MD-SHA1-2
4b50: 30 2e 34 20 7b 54 43 34 7d 20 2d 62 6f 64 79 20  0.4 {TC4} -body 
4b60: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
4b70: 67 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20  gest sha1 -data 
4b80: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
4b90: 30 31 32 33 34 35 36 37 22 20 38 30 5d 0a 20 20  01234567" 80].  
4ba0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 65 61    } -result {dea
4bb0: 33 35 36 61 32 63 64 64 64 39 30 63 37 61 37 65  356a2cddd90c7a7e
4bc0: 63 65 64 63 35 65 62 62 35 36 33 39 33 34 66 34  cedc5ebb563934f4
4bd0: 36 30 34 35 32 7d 0a 0a 74 65 73 74 20 52 46 43  60452}..test RFC
4be0: 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e  6234-MD-SHA1-20.
4bf0: 35 20 7b 54 43 36 7d 20 2d 62 6f 64 79 20 7b 0a  5 {TC6} -body {.
4c00: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4c10: 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 22 5c  st sha1 -data "\
4c20: 78 35 65 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  x5e".    } -resu
4c30: 6c 74 20 7b 35 65 36 66 38 30 61 33 34 61 39 37  lt {5e6f80a34a97
4c40: 39 38 63 61 66 63 36 61 35 64 62 39 36 63 63 35  98cafc6a5db96cc5
4c50: 37 62 61 34 63 34 64 62 35 39 63 32 7d 0a 0a 74  7ba4c4db59c2}..t
4c60: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
4c70: 48 41 31 2d 32 30 2e 36 20 7b 54 43 38 5f 31 7d  HA1-20.6 {TC8_1}
4c80: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
4c90: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31  :md -digest sha1
4ca0: 20 2d 64 61 74 61 20 22 5c 78 39 61 5c 78 37 64   -data "\x9a\x7d
4cb0: 5c 78 66 64 5c 78 66 31 5c 78 65 63 5c 78 65 61  \xfd\xf1\xec\xea
4cc0: 5c 78 64 30 5c 78 36 65 5c 78 64 36 5c 78 34 36  \xd0\x6e\xd6\x46
4cd0: 5c 78 61 61 5c 78 35 35 5c 78 66 65 5c 78 37 35  \xaa\x55\xfe\x75
4ce0: 5c 78 37 31 5c 78 34 36 22 0a 20 20 20 20 7d 20  \x71\x46".    } 
4cf0: 2d 72 65 73 75 6c 74 20 7b 38 32 61 62 66 66 36  -result {82abff6
4d00: 36 30 35 64 62 65 31 63 31 37 64 65 66 31 32 61  605dbe1c17def12a
4d10: 33 39 34 66 61 32 32 61 38 32 62 35 34 34 61 33  394fa22a82b544a3
4d20: 35 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34  5}..test RFC6234
4d30: 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 37 20 7b 54  -MD-SHA1-20.7 {T
4d40: 43 31 30 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09  C10_1} -body {..
4d50: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
4d60: 74 20 73 68 61 31 20 2d 64 61 74 61 20 22 5c 78  t sha1 -data "\x
4d70: 66 37 5c 78 38 66 5c 78 39 32 5c 78 31 34 5c 78  f7\x8f\x92\x14\x
4d80: 31 62 5c 78 63 64 5c 78 31 37 5c 78 30 61 5c 78  1b\xcd\x17\x0a\x
4d90: 65 38 5c 78 39 62 5c 78 34 66 5c 78 62 61 5c 78  e8\x9b\x4f\xba\x
4da0: 31 35 5c 78 61 31 5c 78 64 35 5c 78 39 66 5c 78  15\xa1\xd5\x9f\x
4db0: 33 66 5c 78 64 38 5c 78 34 64 5c 78 32 32 5c 78  3f\xd8\x4d\x22\x
4dc0: 33 63 5c 78 39 32 5c 78 35 31 5c 78 62 64 5c 78  3c\x92\x51\xbd\x
4dd0: 61 63 5c 78 62 62 5c 78 61 65 5c 78 36 31 5c 78  ac\xbb\xae\x61\x
4de0: 64 30 5c 78 35 65 5c 78 64 31 5c 78 31 35 5c 78  d0\x5e\xd1\x15\x
4df0: 61 30 5c 78 36 61 5c 78 37 63 5c 78 65 31 5c 78  a0\x6a\x7c\xe1\x
4e00: 31 37 5c 78 62 37 5c 78 62 65 5c 78 65 61 5c 78  17\xb7\xbe\xea\x
4e10: 64 32 5c 78 34 34 5c 78 32 31 5c 78 64 65 5c 78  d2\x44\x21\xde\x
4e20: 64 39 5c 78 63 33 5c 78 32 35 5c 78 39 32 5c 78  d9\xc3\x25\x92\x
4e30: 62 64 5c 78 35 37 5c 78 65 64 5c 78 65 61 5c 78  bd\x57\xed\xea\x
4e40: 65 33 5c 78 39 63 5c 78 33 39 5c 78 66 61 5c 78  e3\x9c\x39\xfa\x
4e50: 31 66 5c 78 65 38 5c 78 39 34 5c 78 36 61 5c 78  1f\xe8\x94\x6a\x
4e60: 38 34 5c 78 64 30 5c 78 63 66 5c 78 31 66 5c 78  84\xd0\xcf\x1f\x
4e70: 37 62 5c 78 65 65 5c 78 61 64 5c 78 31 37 5c 78  7b\xee\xad\x17\x
4e80: 31 33 5c 78 65 32 5c 78 65 30 5c 78 39 35 5c 78  13\xe2\xe0\x95\x
4e90: 39 38 5c 78 39 37 5c 78 33 34 5c 78 37 66 5c 78  98\x97\x34\x7f\x
4ea0: 36 37 5c 78 63 38 5c 78 30 62 5c 78 30 34 5c 78  67\xc8\x0b\x04\x
4eb0: 30 30 5c 78 63 32 5c 78 30 39 5c 78 38 31 5c 78  00\xc2\x09\x81\x
4ec0: 35 64 5c 78 36 62 5c 78 31 30 5c 78 61 36 5c 78  5d\x6b\x10\xa6\x
4ed0: 38 33 5c 78 38 33 5c 78 36 66 5c 78 64 35 5c 78  83\x83\x6f\xd5\x
4ee0: 35 36 5c 78 32 61 5c 78 35 36 5c 78 63 61 5c 78  56\x2a\x56\xca\x
4ef0: 62 31 5c 78 61 32 5c 78 38 65 5c 78 38 31 5c 78  b1\xa2\x8e\x81\x
4f00: 62 36 5c 78 35 37 5c 78 36 36 5c 78 35 34 5c 78  b6\x57\x66\x54\x
4f10: 36 33 5c 78 31 63 5c 78 66 31 5c 78 36 35 5c 78  63\x1c\xf1\x65\x
4f20: 36 36 5c 78 62 38 5c 78 36 65 5c 78 33 62 5c 78  66\xb8\x6e\x3b\x
4f30: 33 33 5c 78 61 31 5c 78 30 38 5c 78 62 30 5c 78  33\xa1\x08\xb0\x
4f40: 35 33 5c 78 30 37 5c 78 63 30 5c 78 30 61 5c 78  53\x07\xc0\x0a\x
4f50: 66 66 5c 78 31 34 5c 78 61 37 5c 78 36 38 5c 78  ff\x14\xa7\x68\x
4f60: 65 64 5c 78 37 33 5c 78 35 30 5c 78 36 30 5c 78  ed\x73\x50\x60\x
4f70: 36 61 5c 78 30 66 5c 78 38 35 5c 78 65 36 5c 78  6a\x0f\x85\xe6\x
4f80: 61 39 5c 78 31 64 5c 78 33 39 5c 78 36 66 5c 78  a9\x1d\x39\x6f\x
4f90: 35 62 5c 78 35 63 5c 78 62 65 5c 78 35 37 5c 78  5b\x5c\xbe\x57\x
4fa0: 37 66 5c 78 39 62 5c 78 33 38 5c 78 38 30 5c 78  7f\x9b\x38\x80\x
4fb0: 37 63 5c 78 37 64 5c 78 35 32 5c 78 33 64 5c 78  7c\x7d\x52\x3d\x
4fc0: 36 64 5c 78 37 39 5c 78 32 66 5c 78 36 65 5c 78  6d\x79\x2f\x6e\x
4fd0: 62 63 5c 78 32 34 5c 78 61 34 5c 78 65 63 5c 78  bc\x24\xa4\xec\x
4fe0: 66 32 5c 78 62 33 5c 78 61 34 5c 78 32 37 5c 78  f2\xb3\xa4\x27\x
4ff0: 63 64 5c 78 62 62 5c 78 66 62 22 0a 20 20 20 20  cd\xbb\xfb".    
5000: 7d 20 2d 72 65 73 75 6c 74 20 7b 63 62 30 30 38  } -result {cb008
5010: 32 63 38 66 31 39 37 64 32 36 30 39 39 31 62 61  2c8f197d260991ba
5020: 36 61 34 36 30 65 37 36 65 32 30 32 62 61 64 32  6a460e76e202bad2
5030: 37 62 33 7d 0a 0a 23 20 52 46 43 20 36 32 33 34  7b3}..# RFC 6234
5040: 20 53 48 41 32 35 36 0a 0a 0a 74 65 73 74 20 52   SHA256...test R
5050: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36  FC6234-MD-SHA256
5060: 2d 32 31 2e 31 20 7b 54 43 31 7d 20 2d 62 6f 64  -21.1 {TC1} -bod
5070: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
5080: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64  digest sha256 -d
5090: 61 74 61 20 22 61 62 63 22 0a 20 20 20 20 7d 20  ata "abc".    } 
50a0: 2d 72 65 73 75 6c 74 20 7b 62 61 37 38 31 36 62  -result {ba7816b
50b0: 66 38 66 30 31 63 66 65 61 34 31 34 31 34 30 64  f8f01cfea414140d
50c0: 65 35 64 61 65 32 32 32 33 62 30 30 33 36 31 61  e5dae2223b00361a
50d0: 33 39 36 31 37 37 61 39 63 62 34 31 30 66 66 36  396177a9cb410ff6
50e0: 31 66 32 30 30 31 35 61 64 7d 0a 0a 74 65 73 74  1f20015ad}..test
50f0: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32   RFC6234-MD-SHA2
5100: 35 36 2d 32 31 2e 32 20 7b 54 43 32 5f 31 7d 20  56-21.2 {TC2_1} 
5110: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5120: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
5130: 36 20 2d 64 61 74 61 20 22 61 62 63 64 62 63 64  6 -data "abcdbcd
5140: 65 63 64 65 66 64 65 66 67 65 66 67 68 66 67 68  ecdefdefgefghfgh
5150: 69 67 68 69 6a 68 69 6a 6b 69 6a 6b 6c 6a 6b 6c  ighijhijkijkljkl
5160: 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d 6e 6f 70 6e 6f 70  mklmnlmnomnopnop
5170: 71 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  q".    } -result
5180: 20 7b 32 34 38 64 36 61 36 31 64 32 30 36 33 38   {248d6a61d20638
5190: 62 38 65 35 63 30 32 36 39 33 30 63 33 65 36 30  b8e5c026930c3e60
51a0: 33 39 61 33 33 63 65 34 35 39 36 34 66 66 32 31  39a33ce45964ff21
51b0: 36 37 66 36 65 63 65 64 64 34 31 39 64 62 30 36  67f6ecedd419db06
51c0: 63 31 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33  c1}..test RFC623
51d0: 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 33  4-MD-SHA256-21.3
51e0: 20 7b 54 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09   {TC3} -body {..
51f0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
5200: 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 5b  t sha256 -data [
5210: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 61  string repeat "a
5220: 22 20 31 30 30 30 30 30 30 5d 0a 20 20 20 20 7d  " 1000000].    }
5230: 20 2d 72 65 73 75 6c 74 20 7b 63 64 63 37 36 65   -result {cdc76e
5240: 35 63 39 39 31 34 66 62 39 32 38 31 61 31 63 37  5c9914fb9281a1c7
5250: 65 32 38 34 64 37 33 65 36 37 66 31 38 30 39 61  e284d73e67f1809a
5260: 34 38 61 34 39 37 32 30 30 65 30 34 36 64 33 39  48a497200e046d39
5270: 63 63 63 37 31 31 32 63 64 30 7d 0a 0a 74 65 73  ccc7112cd0}..tes
5280: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
5290: 32 35 36 2d 32 31 2e 34 20 7b 54 43 34 7d 20 2d  256-21.4 {TC4} -
52a0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
52b0: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
52c0: 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72   -data [string r
52d0: 65 70 65 61 74 20 22 30 31 32 33 34 35 36 37 22  epeat "01234567"
52e0: 20 38 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75   80].    } -resu
52f0: 6c 74 20 7b 35 39 34 38 34 37 33 32 38 34 35 31  lt {594847328451
5300: 62 64 66 61 38 35 30 35 36 32 32 35 34 36 32 63  bdfa85056225462c
5310: 63 31 64 38 36 37 64 38 37 37 66 62 33 38 38 64  c1d867d877fb388d
5320: 66 30 63 65 33 35 66 32 35 61 62 35 35 36 32 62  f0ce35f25ab5562b
5330: 66 62 62 35 7d 0a 0a 74 65 73 74 20 52 46 43 36  fbb5}..test RFC6
5340: 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31  234-MD-SHA256-21
5350: 2e 35 20 7b 54 43 36 7d 20 2d 62 6f 64 79 20 7b  .5 {TC6} -body {
5360: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
5370: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
5380: 20 22 5c 78 31 39 22 0a 20 20 20 20 7d 20 2d 72   "\x19".    } -r
5390: 65 73 75 6c 74 20 7b 36 38 61 61 32 65 32 65 65  esult {68aa2e2ee
53a0: 35 64 66 66 39 36 65 33 33 35 35 65 36 63 37 65  5dff96e3355e6c7e
53b0: 65 33 37 33 65 33 64 36 61 34 65 31 37 66 37 35  e373e3d6a4e17f75
53c0: 66 39 35 31 38 64 38 34 33 37 30 39 63 30 63 39  f9518d843709c0c9
53d0: 62 63 33 65 33 64 34 7d 0a 0a 74 65 73 74 20 52  bc3e3d4}..test R
53e0: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36  FC6234-MD-SHA256
53f0: 2d 32 31 2e 36 20 7b 54 43 38 5f 32 35 36 7d 20  -21.6 {TC8_256} 
5400: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5410: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
5420: 36 20 2d 64 61 74 61 20 22 5c 78 65 33 5c 78 64  6 -data "\xe3\xd
5430: 37 5c 78 32 35 5c 78 37 30 5c 78 64 63 5c 78 64  7\x25\x70\xdc\xd
5440: 64 5c 78 37 38 5c 78 37 63 5c 78 65 33 5c 78 38  d\x78\x7c\xe3\x8
5450: 38 5c 78 37 61 5c 78 62 32 5c 78 63 64 5c 78 36  8\x7a\xb2\xcd\x6
5460: 38 5c 78 34 36 5c 78 35 32 22 0a 20 20 20 20 7d  8\x46\x52".    }
5470: 20 2d 72 65 73 75 6c 74 20 7b 31 37 35 65 65 36   -result {175ee6
5480: 39 62 30 32 62 61 39 62 35 38 65 32 62 30 61 35  9b02ba9b58e2b0a5
5490: 66 64 31 33 38 31 39 63 65 61 35 37 33 66 33 39  fd13819cea573f39
54a0: 34 30 61 39 34 66 38 32 35 31 32 38 63 66 34 32  40a94f825128cf42
54b0: 30 39 62 65 61 62 62 34 65 38 7d 0a 0a 74 65 73  09beabb4e8}..tes
54c0: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
54d0: 32 35 36 2d 32 31 2e 37 20 7b 54 43 31 30 5f 32  256-21.7 {TC10_2
54e0: 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  56} -body {..::t
54f0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
5500: 68 61 32 35 36 20 2d 64 61 74 61 20 22 5c 78 38  ha256 -data "\x8
5510: 33 5c 78 32 36 5c 78 37 35 5c 78 34 65 5c 78 32  3\x26\x75\x4e\x2
5520: 32 5c 78 37 37 5c 78 33 37 5c 78 32 66 5c 78 34  2\x77\x37\x2f\x4
5530: 66 5c 78 63 31 5c 78 32 62 5c 78 32 30 5c 78 35  f\xc1\x2b\x20\x5
5540: 32 5c 78 37 61 5c 78 66 65 5c 78 66 30 5c 78 34  2\x7a\xfe\xf0\x4
5550: 64 5c 78 38 61 5c 78 30 35 5c 78 36 39 5c 78 37  d\x8a\x05\x69\x7
5560: 31 5c 78 62 31 5c 78 31 61 5c 78 64 35 5c 78 37  1\xb1\x1a\xd5\x7
5570: 31 5c 78 32 33 5c 78 61 37 5c 78 63 31 5c 78 33  1\x23\xa7\xc1\x3
5580: 37 5c 78 37 36 5c 78 30 30 5c 78 30 30 5c 78 64  7\x76\x00\x00\xd
5590: 37 5c 78 62 65 5c 78 66 36 5c 78 66 33 5c 78 63  7\xbe\xf6\xf3\xc
55a0: 31 5c 78 66 37 5c 78 61 39 5c 78 30 38 5c 78 33  1\xf7\xa9\x08\x3
55b0: 61 5c 78 61 33 5c 78 39 64 5c 78 38 31 5c 78 30  a\xa3\x9d\x81\x0
55c0: 64 5c 78 62 33 5c 78 31 30 5c 78 37 37 5c 78 37  d\xb3\x10\x77\x7
55d0: 64 5c 78 61 62 5c 78 38 62 5c 78 31 65 5c 78 37  d\xab\x8b\x1e\x7
55e0: 66 5c 78 30 32 5c 78 62 38 5c 78 34 61 5c 78 32  f\x02\xb8\x4a\x2
55f0: 36 5c 78 63 37 5c 78 37 33 5c 78 33 32 5c 78 35  6\xc7\x73\x32\x5
5600: 66 5c 78 38 62 5c 78 32 33 5c 78 37 34 5c 78 64  f\x8b\x23\x74\xd
5610: 65 5c 78 37 61 5c 78 34 62 5c 78 35 61 5c 78 35  e\x7a\x4b\x5a\x5
5620: 38 5c 78 63 62 5c 78 35 63 5c 78 35 63 5c 78 66  8\xcb\x5c\x5c\xf
5630: 33 5c 78 35 62 5c 78 63 65 5c 78 65 36 5c 78 66  3\x5b\xce\xe6\xf
5640: 62 5c 78 39 34 5c 78 36 65 5c 78 35 62 5c 78 64  b\x94\x6e\x5b\xd
5650: 36 5c 78 39 34 5c 78 66 61 5c 78 35 39 5c 78 33  6\x94\xfa\x59\x3
5660: 61 5c 78 38 62 5c 78 65 62 5c 78 33 66 5c 78 39  a\x8b\xeb\x3f\x9
5670: 64 5c 78 36 35 5c 78 39 32 5c 78 65 63 5c 78 65  d\x65\x92\xec\xe
5680: 64 5c 78 61 61 5c 78 36 36 5c 78 63 61 5c 78 38  d\xaa\x66\xca\x8
5690: 32 5c 78 61 32 5c 78 39 64 5c 78 30 63 5c 78 35  2\xa2\x9d\x0c\x5
56a0: 31 5c 78 62 63 5c 78 66 39 5c 78 33 33 5c 78 36  1\xbc\xf9\x33\x6
56b0: 32 5c 78 33 30 5c 78 65 35 5c 78 64 37 5c 78 38  2\x30\xe5\xd7\x8
56c0: 34 5c 78 65 34 5c 78 63 30 5c 78 61 34 5c 78 33  4\xe4\xc0\xa4\x3
56d0: 66 5c 78 38 64 5c 78 37 39 5c 78 61 33 5c 78 30  f\x8d\x79\xa3\x0
56e0: 61 5c 78 31 36 5c 78 35 63 5c 78 62 61 5c 78 62  a\x16\x5c\xba\xb
56f0: 65 5c 78 34 35 5c 78 32 62 5c 78 37 37 5c 78 34  e\x45\x2b\x77\x4
5700: 62 5c 78 39 63 5c 78 37 31 5c 78 30 39 5c 78 61  b\x9c\x71\x09\xa
5710: 39 5c 78 37 64 5c 78 31 33 5c 78 38 66 5c 78 31  9\x7d\x13\x8f\x1
5720: 32 5c 78 39 32 5c 78 32 38 5c 78 39 36 5c 78 36  2\x92\x28\x96\x6
5730: 66 5c 78 36 63 5c 78 30 61 5c 78 64 63 5c 78 31  f\x6c\x0a\xdc\x1
5740: 30 5c 78 36 61 5c 78 61 64 5c 78 35 61 5c 78 39  0\x6a\xad\x5a\x9
5750: 66 5c 78 64 64 5c 78 33 30 5c 78 38 32 5c 78 35  f\xdd\x30\x82\x5
5760: 37 5c 78 36 39 5c 78 62 32 5c 78 63 36 5c 78 37  7\x69\xb2\xc6\x7
5770: 31 5c 78 61 66 5c 78 36 37 5c 78 35 39 5c 78 64  1\xaf\x67\x59\xd
5780: 66 5c 78 32 38 5c 78 65 62 5c 78 33 39 5c 78 33  f\x28\xeb\x39\x3
5790: 64 5c 78 35 34 5c 78 64 36 22 0a 20 20 20 20 7d  d\x54\xd6".    }
57a0: 20 2d 72 65 73 75 6c 74 20 7b 39 37 64 62 63 61   -result {97dbca
57b0: 37 64 66 34 36 64 36 32 63 38 61 34 32 32 63 39  7df46d62c8a422c9
57c0: 34 31 64 64 37 65 38 33 35 62 38 61 64 33 33 36  41dd7e835b8ad336
57d0: 31 37 36 33 66 37 65 39 62 32 64 39 35 66 34 66  1763f7e9b2d95f4f
57e0: 30 64 61 36 65 31 63 63 62 63 7d 0a 0a 23 20 52  0da6e1ccbc}..# R
57f0: 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61  FC 4231 HMAC Exa
5800: 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20  mples Test Case 
5810: 23 31 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  #1.set key [bina
5820: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73  ry decode hex [s
5830: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 62  tring repeat "0b
5840: 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61 20  " 20]].set data 
5850: 22 48 69 20 54 68 65 72 65 22 0a 0a 0a 74 65 73  "Hi There"...tes
5860: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
5870: 43 31 2d 32 32 2e 31 20 7b 73 68 61 32 32 34 7d  C1-22.1 {sha224}
5880: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
5890: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
58a0: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
58b0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
58c0: 20 2d 72 65 73 75 6c 74 20 7b 38 39 36 66 62 31   -result {896fb1
58d0: 31 32 38 61 62 62 64 66 31 39 36 38 33 32 31 30  128abbdf19683210
58e0: 37 63 64 34 39 64 66 33 33 66 34 37 62 34 62 31  7cd49df33f47b4b1
58f0: 31 36 39 39 31 32 62 61 34 66 35 33 36 38 34 62  169912ba4f53684b
5900: 32 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  22}..test RFC423
5910: 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e 32 20  1_HMAC_TC1-22.2 
5920: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b  {sha256} -body {
5930: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
5940: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65  igest sha256 -ke
5950: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
5960: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
5970: 20 7b 62 30 33 34 34 63 36 31 64 38 64 62 33 38   {b0344c61d8db38
5980: 35 33 35 63 61 38 61 66 63 65 61 66 30 62 66 31  535ca8afceaf0bf1
5990: 32 62 38 38 31 64 63 32 30 30 63 39 38 33 33 64  2b881dc200c9833d
59a0: 61 37 32 36 65 39 33 37 36 63 32 65 33 32 63 66  a726e9376c2e32cf
59b0: 66 37 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  f7}..test RFC423
59c0: 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e 33 20  1_HMAC_TC1-22.3 
59d0: 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b  {sha384} -body {
59e0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
59f0: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65  igest sha384 -ke
5a00: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
5a10: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
5a20: 20 7b 61 66 64 30 33 39 34 34 64 38 34 38 39 35   {afd03944d84895
5a30: 36 32 36 62 30 38 32 35 66 34 61 62 34 36 39 30  626b0825f4ab4690
5a40: 37 66 31 35 66 39 64 61 64 62 65 34 31 30 31 65  7f15f9dadbe4101e
5a50: 63 36 38 32 61 61 30 33 34 63 37 63 65 62 63 35  c682aa034c7cebc5
5a60: 39 63 66 61 65 61 39 65 61 39 30 37 36 65 64 65  9cfaea9ea9076ede
5a70: 37 66 34 61 66 31 35 32 65 38 62 32 66 61 39 63  7f4af152e8b2fa9c
5a80: 62 36 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  b6}..test RFC423
5a90: 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e 34 20  1_HMAC_TC1-22.4 
5aa0: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
5ab0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
5ac0: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65  igest sha512 -ke
5ad0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
5ae0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
5af0: 20 7b 38 37 61 61 37 63 64 65 61 35 65 66 36 31   {87aa7cdea5ef61
5b00: 39 64 34 66 66 30 62 34 32 34 31 61 31 64 36 63  9d4ff0b4241a1d6c
5b10: 62 30 32 33 37 39 66 34 65 32 63 65 34 65 63 32  b02379f4e2ce4ec2
5b20: 37 38 37 61 64 30 62 33 30 35 34 35 65 31 37 63  787ad0b30545e17c
5b30: 64 65 64 61 61 38 33 33 62 37 64 36 62 38 61 37  dedaa833b7d6b8a7
5b40: 30 32 30 33 38 62 32 37 34 65 61 65 61 33 66 34  02038b274eaea3f4
5b50: 65 34 62 65 39 64 39 31 34 65 65 62 36 31 66 31  e4be9d914eeb61f1
5b60: 37 30 32 65 36 39 36 63 32 30 33 61 31 32 36 38  702e696c203a1268
5b70: 35 34 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20  54}..# RFC 4231 
5b80: 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65  HMAC Examples Te
5b90: 73 74 20 43 61 73 65 20 23 32 20 2d 20 54 65 73  st Case #2 - Tes
5ba0: 74 20 77 69 74 68 20 61 20 6b 65 79 20 73 68 6f  t with a key sho
5bb0: 72 74 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65  rter than the le
5bc0: 6e 67 74 68 20 6f 66 20 74 68 65 20 48 4d 41 43  ngth of the HMAC
5bd0: 20 6f 75 74 70 75 74 2e 0a 73 65 74 20 6b 65 79   output..set key
5be0: 20 22 4a 65 66 65 22 0a 73 65 74 20 64 61 74 61   "Jefe".set data
5bf0: 20 22 77 68 61 74 20 64 6f 20 79 61 20 77 61 6e   "what do ya wan
5c00: 74 20 66 6f 72 20 6e 6f 74 68 69 6e 67 3f 22 0a  t for nothing?".
5c10: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
5c20: 4d 41 43 5f 54 43 32 2d 32 33 2e 31 20 7b 73 68  MAC_TC2-23.1 {sh
5c30: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a224} -body {..:
5c40: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5c50: 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  st sha224 -key $
5c60: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5c70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61      } -result {a
5c80: 33 30 65 30 31 30 39 38 62 63 36 64 62 62 66 34  30e01098bc6dbbf4
5c90: 35 36 39 30 66 33 61 37 65 39 65 36 64 30 66 38  5690f3a7e9e6d0f8
5ca0: 62 62 65 61 32 61 33 39 65 36 31 34 38 30 30 38  bbea2a39e6148008
5cb0: 66 64 30 35 65 34 34 7d 0a 0a 74 65 73 74 20 52  fd05e44}..test R
5cc0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d  FC4231_HMAC_TC2-
5cd0: 32 33 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  23.2 {sha256} -b
5ce0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5cf0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ac -digest sha25
5d00: 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  6 -key $key -dat
5d10: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5d20: 65 73 75 6c 74 20 7b 35 62 64 63 63 31 34 36 62  esult {5bdcc146b
5d30: 66 36 30 37 35 34 65 36 61 30 34 32 34 32 36 30  f60754e6a0424260
5d40: 38 39 35 37 35 63 37 35 61 30 30 33 66 30 38 39  89575c75a003f089
5d50: 64 32 37 33 39 38 33 39 64 65 63 35 38 62 39 36  d2739839dec58b96
5d60: 34 65 63 33 38 34 33 7d 0a 0a 74 65 73 74 20 52  4ec3843}..test R
5d70: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d  FC4231_HMAC_TC2-
5d80: 32 33 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  23.3 {sha384} -b
5d90: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5da0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 38  ac -digest sha38
5db0: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
5dc0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5dd0: 65 73 75 6c 74 20 7b 61 66 34 35 64 32 65 33 37  esult {af45d2e37
5de0: 36 34 38 34 30 33 31 36 31 37 66 37 38 64 32 62  6484031617f78d2b
5df0: 35 38 61 36 62 31 62 39 63 37 65 66 34 36 34 66  58a6b1b9c7ef464f
5e00: 35 61 30 31 62 34 37 65 34 32 65 63 33 37 33 36  5a01b47e42ec3736
5e10: 33 32 32 34 34 35 65 38 65 32 32 34 30 63 61 35  322445e8e2240ca5
5e20: 65 36 39 65 32 63 37 38 62 33 32 33 39 65 63 66  e69e2c78b3239ecf
5e30: 61 62 32 31 36 34 39 7d 0a 0a 74 65 73 74 20 52  ab21649}..test R
5e40: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d  FC4231_HMAC_TC2-
5e50: 32 33 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  23.4 {sha512} -b
5e60: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5e70: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
5e80: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
5e90: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5ea0: 65 73 75 6c 74 20 7b 31 36 34 62 37 61 37 62 66  esult {164b7a7bf
5eb0: 63 66 38 31 39 65 32 65 33 39 35 66 62 65 37 33  cf819e2e395fbe73
5ec0: 62 35 36 65 30 61 33 38 37 62 64 36 34 32 32 32  b56e0a387bd64222
5ed0: 65 38 33 31 66 64 36 31 30 32 37 30 63 64 37 65  e831fd610270cd7e
5ee0: 61 32 35 30 35 35 34 39 37 35 38 62 66 37 35 63  a2505549758bf75c
5ef0: 30 35 61 39 39 34 61 36 64 30 33 34 66 36 35 66  05a994a6d034f65f
5f00: 38 66 30 65 36 66 64 63 61 65 61 62 31 61 33 34  8f0e6fdcaeab1a34
5f10: 64 34 61 36 62 34 62 36 33 36 65 30 37 30 61 33  d4a6b4b636e070a3
5f20: 38 62 63 65 37 33 37 7d 0a 0a 23 20 52 46 43 20  8bce737}..# RFC 
5f30: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
5f40: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 33 20  es Test Case #3 
5f50: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 63 6f  - Test with a co
5f60: 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66  mbined length of
5f70: 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68   key and data th
5f80: 61 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61  at is larger tha
5f90: 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20 62 6c  n 64 bytes (= bl
5fa0: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d  ock-size of SHA-
5fb0: 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35 36 29  224 and SHA-256)
5fc0: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72  ..set key [binar
5fd0: 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74  y decode hex [st
5fe0: 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 61 22  ring repeat "aa"
5ff0: 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61 20 5b   20]].set data [
6000: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
6010: 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  x [string repeat
6020: 20 22 64 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73   "dd" 50]]...tes
6030: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
6040: 43 33 2d 32 34 2e 31 20 7b 73 68 61 32 32 34 7d  C3-24.1 {sha224}
6050: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
6060: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6070: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
6080: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
6090: 20 2d 72 65 73 75 6c 74 20 7b 37 66 62 33 63 62   -result {7fb3cb
60a0: 33 35 38 38 63 36 63 31 66 36 66 66 61 39 36 39  3588c6c1f6ffa969
60b0: 34 64 37 64 36 61 64 32 36 34 39 33 36 35 62 30  4d7d6ad2649365b0
60c0: 63 31 66 36 35 64 36 39 64 31 65 63 38 33 33 33  c1f65d69d1ec8333
60d0: 65 61 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  ea}..test RFC423
60e0: 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e 32 20  1_HMAC_TC3-24.2 
60f0: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b  {sha256} -body {
6100: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
6110: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65  igest sha256 -ke
6120: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6130: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
6140: 20 7b 37 37 33 65 61 39 31 65 33 36 38 30 30 65   {773ea91e36800e
6150: 34 36 38 35 34 64 62 38 65 62 64 30 39 31 38 31  46854db8ebd09181
6160: 61 37 32 39 35 39 30 39 38 62 33 65 66 38 63 31  a72959098b3ef8c1
6170: 32 32 64 39 36 33 35 35 31 34 63 65 64 35 36 35  22d9635514ced565
6180: 66 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  fe}..test RFC423
6190: 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e 33 20  1_HMAC_TC3-24.3 
61a0: 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b  {sha384} -body {
61b0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
61c0: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65  igest sha384 -ke
61d0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
61e0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
61f0: 20 7b 38 38 30 36 32 36 30 38 64 33 65 36 61 64   {88062608d3e6ad
6200: 38 61 30 61 61 32 61 63 65 30 31 34 63 38 61 38  8a0aa2ace014c8a8
6210: 36 66 30 61 61 36 33 35 64 39 34 37 61 63 39 66  6f0aa635d947ac9f
6220: 65 62 65 38 33 65 66 34 65 35 35 39 36 36 31 34  ebe83ef4e5596614
6230: 34 62 32 61 35 61 62 33 39 64 63 31 33 38 31 34  4b2a5ab39dc13814
6240: 62 39 34 65 33 61 62 36 65 31 30 31 61 33 34 66  b94e3ab6e101a34f
6250: 32 37 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  27}..test RFC423
6260: 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e 34 20  1_HMAC_TC3-24.4 
6270: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
6280: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
6290: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65  igest sha512 -ke
62a0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
62b0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
62c0: 20 7b 66 61 37 33 62 30 30 38 39 64 35 36 61 32   {fa73b0089d56a2
62d0: 38 34 65 66 62 30 66 30 37 35 36 63 38 39 30 62  84efb0f0756c890b
62e0: 65 39 62 31 62 35 64 62 64 64 38 65 65 38 31 61  e9b1b5dbdd8ee81a
62f0: 33 36 35 35 66 38 33 65 33 33 62 32 32 37 39 64  3655f83e33b2279d
6300: 33 39 62 66 33 65 38 34 38 32 37 39 61 37 32 32  39bf3e848279a722
6310: 63 38 30 36 62 34 38 35 61 34 37 65 36 37 63 38  c806b485a47e67c8
6320: 30 37 62 39 34 36 61 33 33 37 62 65 65 38 39 34  07b946a337bee894
6330: 32 36 37 34 32 37 38 38 35 39 65 31 33 32 39 32  2674278859e13292
6340: 66 62 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20  fb}..# RFC 4231 
6350: 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65  HMAC Examples Te
6360: 73 74 20 43 61 73 65 20 23 34 20 2d 20 54 65 73  st Case #4 - Tes
6370: 74 20 77 69 74 68 20 61 20 63 6f 6d 62 69 6e 65  t with a combine
6380: 64 20 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20  d length of key 
6390: 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 69 73  and data that is
63a0: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 36 34 20   larger than 64 
63b0: 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73  bytes (= block-s
63c0: 69 7a 65 20 6f 66 20 53 48 41 2d 32 32 34 20 61  ize of SHA-224 a
63d0: 6e 64 20 53 48 41 2d 32 35 36 29 2e 0a 73 65 74  nd SHA-256)..set
63e0: 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63   key [binary dec
63f0: 6f 64 65 20 68 65 78 20 22 30 31 30 32 30 33 30  ode hex "0102030
6400: 34 30 35 30 36 30 37 30 38 30 39 30 61 30 62 30  405060708090a0b0
6410: 63 30 64 30 65 30 66 31 30 31 31 31 32 31 33 31  c0d0e0f101112131
6420: 34 31 35 31 36 31 37 31 38 31 39 22 5d 0a 73 65  41516171819"].se
6430: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
6440: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
6450: 67 20 72 65 70 65 61 74 20 22 63 64 22 20 35 30  g repeat "cd" 50
6460: 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33  ]]...test RFC423
6470: 31 5f 48 4d 41 43 5f 54 43 34 2d 32 35 2e 31 20  1_HMAC_TC4-25.1 
6480: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b  {sha224} -body {
6490: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
64a0: 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65  igest sha224 -ke
64b0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
64c0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
64d0: 20 7b 36 63 31 31 35 30 36 38 37 34 30 31 33 63   {6c11506874013c
64e0: 61 63 36 61 32 61 62 63 31 62 62 33 38 32 36 32  ac6a2abc1bb38262
64f0: 37 63 65 63 36 61 39 30 64 38 36 65 66 63 30 31  7cec6a90d86efc01
6500: 32 64 65 37 61 66 65 63 35 61 7d 0a 0a 74 65 73  2de7afec5a}..tes
6510: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
6520: 43 34 2d 32 35 2e 32 20 7b 73 68 61 32 35 36 7d  C4-25.2 {sha256}
6530: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
6540: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6550: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
6560: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
6570: 20 2d 72 65 73 75 6c 74 20 7b 38 32 35 35 38 61   -result {82558a
6580: 33 38 39 61 34 34 33 63 30 65 61 34 63 63 38 31  389a443c0ea4cc81
6590: 39 38 39 39 66 32 30 38 33 61 38 35 66 30 66 61  9899f2083a85f0fa
65a0: 61 33 65 35 37 38 66 38 30 37 37 61 32 65 33 66  a3e578f8077a2e3f
65b0: 66 34 36 37 32 39 36 36 35 62 7d 0a 0a 74 65 73  f46729665b}..tes
65c0: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
65d0: 43 34 2d 32 35 2e 33 20 7b 73 68 61 33 38 34 7d  C4-25.3 {sha384}
65e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
65f0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6600: 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a384 -key $key -
6610: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
6620: 20 2d 72 65 73 75 6c 74 20 7b 33 65 38 61 36 39   -result {3e8a69
6630: 62 37 37 38 33 63 32 35 38 35 31 39 33 33 61 62  b7783c25851933ab
6640: 36 32 39 30 61 66 36 63 61 37 37 61 39 39 38 31  6290af6ca77a9981
6650: 34 38 30 38 35 30 30 30 39 63 63 35 35 37 37 63  480850009cc5577c
6660: 36 65 31 66 35 37 33 62 34 65 36 38 30 31 64 64  6e1f573b4e6801dd
6670: 32 33 63 34 61 37 64 36 37 39 63 63 66 38 61 33  23c4a7d679ccf8a3
6680: 38 36 63 36 37 34 63 66 66 62 7d 0a 0a 74 65 73  86c674cffb}..tes
6690: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
66a0: 43 34 2d 32 35 2e 34 20 7b 73 68 61 35 31 32 7d  C4-25.4 {sha512}
66b0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
66c0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
66d0: 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a512 -key $key -
66e0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
66f0: 20 2d 72 65 73 75 6c 74 20 7b 62 30 62 61 34 36   -result {b0ba46
6700: 35 36 33 37 34 35 38 63 36 39 39 30 65 35 61 38  5637458c6990e5a8
6710: 63 35 66 36 31 64 34 61 66 37 65 35 37 36 64 39  c5f61d4af7e576d9
6720: 37 66 66 39 34 62 38 37 32 64 65 37 36 66 38 30  7ff94b872de76f80
6730: 35 30 33 36 31 65 65 33 64 62 61 39 31 63 61 35  50361ee3dba91ca5
6740: 63 31 31 61 61 32 35 65 62 34 64 36 37 39 32 37  c11aa25eb4d67927
6750: 35 63 63 35 37 38 38 30 36 33 61 35 66 31 39 37  5cc5788063a5f197
6760: 34 31 31 32 30 63 34 66 32 64 65 32 61 64 65 62  41120c4f2de2adeb
6770: 65 62 31 30 61 32 39 38 64 64 7d 0a 0a 23 20 52  eb10a298dd}..# R
6780: 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61  FC 4231 HMAC Exa
6790: 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20  mples Test Case 
67a0: 23 35 20 2d 20 54 65 73 74 20 77 69 74 68 20 61  #5 - Test with a
67b0: 20 74 72 75 6e 63 61 74 69 6f 6e 20 6f 66 20 6f   truncation of o
67c0: 75 74 70 75 74 20 74 6f 20 31 32 38 20 62 69 74  utput to 128 bit
67d0: 73 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  s..set key [bina
67e0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73  ry decode hex [s
67f0: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 63  tring repeat "0c
6800: 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61 20  " 20]].set data 
6810: 22 54 65 73 74 20 57 69 74 68 20 54 72 75 6e 63  "Test With Trunc
6820: 61 74 69 6f 6e 22 0a 0a 0a 74 65 73 74 20 52 46  ation"...test RF
6830: 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32  C4231_HMAC_TC5-2
6840: 36 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f  6.1 {sha224} -bo
6850: 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e  dy {..string ran
6860: 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20  ge [::tls::hmac 
6870: 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d  -digest sha224 -
6880: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
6890: 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d  data] 0 31.    }
68a0: 20 2d 72 65 73 75 6c 74 20 7b 30 65 32 61 65 61   -result {0e2aea
68b0: 36 38 61 39 30 63 38 64 33 37 63 39 38 38 62 63  68a90c8d37c988bc
68c0: 64 62 39 66 63 61 36 66 61 38 7d 0a 0a 74 65 73  db9fca6fa8}..tes
68d0: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
68e0: 43 35 2d 32 36 2e 32 20 7b 73 68 61 32 35 36 7d  C5-26.2 {sha256}
68f0: 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67   -body {..string
6900: 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68   range [::tls::h
6910: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32  mac -digest sha2
6920: 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  56 -key $key -da
6930: 74 61 20 24 64 61 74 61 5d 20 30 20 33 31 0a 20  ta $data] 0 31. 
6940: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 33     } -result {a3
6950: 62 36 31 36 37 34 37 33 31 30 30 65 65 30 36 65  b6167473100ee06e
6960: 30 63 37 39 36 63 32 39 35 35 35 35 32 62 7d 0a  0c796c2955552b}.
6970: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
6980: 41 43 5f 54 43 35 2d 32 36 2e 33 20 7b 73 68 61  AC_TC5-26.3 {sha
6990: 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74  384} -body {..st
69a0: 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c  ring range [::tl
69b0: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
69c0: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79  sha384 -key $key
69d0: 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30 20   -data $data] 0 
69e0: 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  31.    } -result
69f0: 20 7b 33 61 62 66 33 34 63 33 35 30 33 62 32 61   {3abf34c3503b2a
6a00: 32 33 61 34 36 65 66 63 36 31 39 62 61 65 66 38  23a46efc619baef8
6a10: 39 37 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  97}..test RFC423
6a20: 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e 34 20  1_HMAC_TC5-26.4 
6a30: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
6a40: 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b  ..string range [
6a50: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
6a60: 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20  est sha512 -key 
6a70: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
6a80: 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65  ] 0 31.    } -re
6a90: 73 75 6c 74 20 7b 34 31 35 66 61 64 36 32 37 31  sult {415fad6271
6aa0: 35 38 30 61 35 33 31 64 34 31 37 39 62 63 38 39  580a531d4179bc89
6ab0: 31 64 38 37 61 36 7d 0a 0a 23 20 52 46 43 20 34  1d87a6}..# RFC 4
6ac0: 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65  231 HMAC Example
6ad0: 73 20 54 65 73 74 20 43 61 73 65 20 23 36 20 2d  s Test Case #6 -
6ae0: 20 54 65 73 74 20 77 69 74 68 20 61 20 6b 65 79   Test with a key
6af0: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31 32 38   larger than 128
6b00: 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d   bytes (= block-
6b10: 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38 34 20  size of SHA-384 
6b20: 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a 73 65  and SHA-512)..se
6b30: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65  t key [binary de
6b40: 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67  code hex [string
6b50: 20 72 65 70 65 61 74 20 22 61 61 22 20 31 33 31   repeat "aa" 131
6b60: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 65 73  ]].set data "Tes
6b70: 74 20 55 73 69 6e 67 20 4c 61 72 67 65 72 20 54  t Using Larger T
6b80: 68 61 6e 20 42 6c 6f 63 6b 2d 53 69 7a 65 20 4b  han Block-Size K
6b90: 65 79 20 2d 20 48 61 73 68 20 4b 65 79 20 46 69  ey - Hash Key Fi
6ba0: 72 73 74 22 0a 0a 0a 74 65 73 74 20 52 46 43 34  rst"...test RFC4
6bb0: 32 33 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e  231_HMAC_TC6-27.
6bc0: 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79  1 {sha224} -body
6bd0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
6be0: 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d  -digest sha224 -
6bf0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
6c00: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
6c10: 6c 74 20 7b 39 35 65 39 61 30 64 62 39 36 32 30  lt {95e9a0db9620
6c20: 39 35 61 64 61 65 62 65 39 62 32 64 36 66 30 64  95adaebe9b2d6f0d
6c30: 62 63 65 32 64 34 39 39 66 31 31 32 66 32 64 32  bce2d499f112f2d2
6c40: 62 37 32 37 33 66 61 36 38 37 30 65 7d 0a 0a 74  b7273fa6870e}..t
6c50: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
6c60: 5f 54 43 36 2d 32 37 2e 32 20 7b 73 68 61 32 35  _TC6-27.2 {sha25
6c70: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  6} -body {..::tl
6c80: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6c90: 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79  sha256 -key $key
6ca0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6cb0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 30 65 34   } -result {60e4
6cc0: 33 31 35 39 31 65 65 30 62 36 37 66 30 64 38 61  31591ee0b67f0d8a
6cd0: 32 36 61 61 63 62 66 35 62 37 37 66 38 65 30 62  26aacbf5b77f8e0b
6ce0: 63 36 32 31 33 37 32 38 63 35 31 34 30 35 34 36  c6213728c5140546
6cf0: 30 34 30 66 30 65 65 33 37 66 35 34 7d 0a 0a 74  040f0ee37f54}..t
6d00: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
6d10: 5f 54 43 36 2d 32 37 2e 33 20 7b 73 68 61 33 38  _TC6-27.3 {sha38
6d20: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
6d30: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6d40: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79  sha384 -key $key
6d50: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6d60: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 65 63 65   } -result {4ece
6d70: 30 38 34 34 38 35 38 31 33 65 39 30 38 38 64 32  084485813e9088d2
6d80: 63 36 33 61 30 34 31 62 63 35 62 34 34 66 39 65  c63a041bc5b44f9e
6d90: 66 31 30 31 32 61 32 62 35 38 38 66 33 63 64 31  f1012a2b588f3cd1
6da0: 31 66 30 35 30 33 33 61 63 34 63 36 30 63 32 65  1f05033ac4c60c2e
6db0: 66 36 61 62 34 30 33 30 66 65 38 32 39 36 32 34  f6ab4030fe829624
6dc0: 38 64 66 31 36 33 66 34 34 39 35 32 7d 0a 0a 74  8df163f44952}..t
6dd0: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
6de0: 5f 54 43 36 2d 32 37 2e 34 20 7b 73 68 61 35 31  _TC6-27.4 {sha51
6df0: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  2} -body {..::tl
6e00: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6e10: 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79  sha512 -key $key
6e20: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6e30: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 30 62 32   } -result {80b2
6e40: 34 32 36 33 63 37 63 31 61 33 65 62 62 37 31 34  4263c7c1a3ebb714
6e50: 39 33 63 31 64 64 37 62 65 38 62 34 39 62 34 36  93c1dd7be8b49b46
6e60: 64 31 66 34 31 62 34 61 65 65 63 31 31 32 31 62  d1f41b4aeec1121b
6e70: 30 31 33 37 38 33 66 38 66 33 35 32 36 62 35 36  013783f8f3526b56
6e80: 64 30 33 37 65 30 35 66 32 35 39 38 62 64 30 66  d037e05f2598bd0f
6e90: 64 32 32 31 35 64 36 61 31 65 35 32 39 35 65 36  d2215d6a1e5295e6
6ea0: 34 66 37 33 66 36 33 66 30 61 65 63 38 62 39 31  4f73f63f0aec8b91
6eb0: 35 61 39 38 35 64 37 38 36 35 39 38 7d 0a 0a 23  5a985d786598}..#
6ec0: 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45   RFC 4231 HMAC E
6ed0: 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73  xamples Test Cas
6ee0: 65 20 23 37 20 2d 20 54 65 73 74 20 77 69 74 68  e #7 - Test with
6ef0: 20 61 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20   a key and data 
6f00: 74 68 61 74 20 69 73 20 6c 61 72 67 65 72 20 74  that is larger t
6f10: 68 61 6e 20 31 32 38 20 62 79 74 65 73 20 28 3d  han 128 bytes (=
6f20: 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53   block-size of S
6f30: 48 41 2d 33 38 34 20 61 6e 64 20 53 48 41 2d 35  HA-384 and SHA-5
6f40: 31 32 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69  12)..set key [bi
6f50: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
6f60: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
6f70: 61 61 22 20 31 33 31 5d 5d 0a 73 65 74 20 64 61  aa" 131]].set da
6f80: 74 61 20 22 54 68 69 73 20 69 73 20 61 20 74 65  ta "This is a te
6f90: 73 74 20 75 73 69 6e 67 20 61 20 6c 61 72 67 65  st using a large
6fa0: 72 20 74 68 61 6e 20 62 6c 6f 63 6b 2d 73 69 7a  r than block-siz
6fb0: 65 20 6b 65 79 20 61 6e 64 20 61 20 6c 61 72 67  e key and a larg
6fc0: 65 72 20 74 68 61 6e 20 62 6c 6f 63 6b 2d 73 69  er than block-si
6fd0: 7a 65 20 64 61 74 61 2e 20 54 68 65 20 6b 65 79  ze data. The key
6fe0: 20 6e 65 65 64 73 20 74 6f 20 62 65 20 68 61 73   needs to be has
6ff0: 68 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67  hed before being
7000: 20 75 73 65 64 20 62 79 20 74 68 65 20 48 4d 41   used by the HMA
7010: 43 20 61 6c 67 6f 72 69 74 68 6d 2e 22 0a 0a 0a  C algorithm."...
7020: 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41  test RFC4231_HMA
7030: 43 5f 54 43 37 2d 32 38 2e 31 20 7b 73 68 61 32  C_TC7-28.1 {sha2
7040: 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  24} -body {..::t
7050: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
7060: 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65   sha224 -key $ke
7070: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
7080: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33 61 38    } -result {3a8
7090: 35 34 31 36 36 61 63 35 64 39 66 30 32 33 66 35  54166ac5d9f023f5
70a0: 34 64 35 31 37 64 30 62 33 39 64 62 64 39 34 36  4d517d0b39dbd946
70b0: 37 37 30 64 62 39 63 32 62 39 35 63 39 66 36 66  770db9c2b95c9f6f
70c0: 35 36 35 64 31 7d 0a 0a 74 65 73 74 20 52 46 43  565d1}..test RFC
70d0: 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38  4231_HMAC_TC7-28
70e0: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64  .2 {sha256} -bod
70f0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
7100: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
7110: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
7120: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
7130: 75 6c 74 20 7b 39 62 30 39 66 66 61 37 31 62 39  ult {9b09ffa71b9
7140: 34 32 66 63 62 32 37 36 33 35 66 62 63 64 35 62  42fcb27635fbcd5b
7150: 30 65 39 34 34 62 66 64 63 36 33 36 34 34 66 30  0e944bfdc63644f0
7160: 37 31 33 39 33 38 61 37 66 35 31 35 33 35 63 33  713938a7f51535c3
7170: 61 33 35 65 32 7d 0a 0a 74 65 73 74 20 52 46 43  a35e2}..test RFC
7180: 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38  4231_HMAC_TC7-28
7190: 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64  .3 {sha384} -bod
71a0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
71b0: 20 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20   -digest sha384 
71c0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
71d0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
71e0: 75 6c 74 20 7b 36 36 31 37 31 37 38 65 39 34 31  ult {6617178e941
71f0: 66 30 32 30 64 33 35 31 65 32 66 32 35 34 65 38  f020d351e2f254e8
7200: 66 64 33 32 63 36 30 32 34 32 30 66 65 62 30 62  fd32c602420feb0b
7210: 38 66 62 39 61 64 63 63 65 62 62 38 32 34 36 31  8fb9adccebb82461
7220: 65 39 39 63 35 61 36 37 38 63 63 33 31 65 37 39  e99c5a678cc31e79
7230: 39 31 37 36 64 33 38 36 30 65 36 31 31 30 63 34  9176d3860e6110c4
7240: 36 35 32 33 65 7d 0a 0a 74 65 73 74 20 52 46 43  6523e}..test RFC
7250: 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38  4231_HMAC_TC7-28
7260: 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64  .4 {sha512} -bod
7270: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
7280: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20   -digest sha512 
7290: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
72a0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
72b0: 75 6c 74 20 7b 65 33 37 62 36 61 37 37 35 64 63  ult {e37b6a775dc
72c0: 38 37 64 62 61 61 34 64 66 61 39 66 39 36 65 35  87dbaa4dfa9f96e5
72d0: 65 33 66 66 64 64 65 62 64 37 31 66 38 38 36 37  e3ffddebd71f8867
72e0: 32 38 39 38 36 35 64 66 35 61 33 32 64 32 30 63  289865df5a32d20c
72f0: 64 63 39 34 34 62 36 30 32 32 63 61 63 33 63 34  dc944b6022cac3c4
7300: 39 38 32 62 31 30 64 35 65 65 62 35 35 63 33 65  982b10d5eeb55c3e
7310: 34 64 65 31 35 31 33 34 36 37 36 66 62 36 64 65  4de15134676fb6de
7320: 30 34 34 36 30 36 35 63 39 37 34 34 30 66 61 38  0446065c97440fa8
7330: 63 36 61 35 38 7d 0a 0a 23 20 4e 49 53 54 20 38  c6a58}..# NIST 8
7340: 30 30 2d 33 38 62 20 52 65 63 6f 6d 6d 65 6e 64  00-38b Recommend
7350: 61 74 69 6f 6e 20 66 6f 72 20 42 6c 6f 63 6b 20  ation for Block 
7360: 43 69 70 68 65 72 20 4d 6f 64 65 73 20 6f 66 20  Cipher Modes of 
7370: 4f 70 65 72 61 74 69 6f 6e 3a 20 54 68 65 20 43  Operation: The C
7380: 4d 41 43 20 4d 6f 64 65 20 66 6f 72 20 41 75 74  MAC Mode for Aut
7390: 68 65 6e 74 69 63 61 74 69 6f 6e 0a 23 20 41 45  hentication.# AE
73a0: 53 2d 31 32 38 0a 73 65 74 20 6b 65 79 20 5b 62  S-128.set key [b
73b0: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
73c0: 20 22 32 62 37 65 31 35 31 36 32 38 61 65 64 32   "2b7e151628aed2
73d0: 61 36 61 62 66 37 31 35 38 38 30 39 63 66 34 66  a6abf7158809cf4f
73e0: 33 63 22 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54  3c"]...test NIST
73f0: 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38 2d 32  800-38b-AES128-2
7400: 39 2e 31 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64  9.1 {len=0} -bod
7410: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
7420: 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31 32 38   -cipher aes-128
7430: 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d  -cbc -key $key -
7440: 64 61 74 61 20 22 22 0a 20 20 20 20 7d 20 2d 72  data "".    } -r
7450: 65 73 75 6c 74 20 7b 62 62 31 64 36 39 32 39 65  esult {bb1d6929e
7460: 39 35 39 33 37 32 38 37 66 61 33 37 64 31 32 39  95937287fa37d129
7470: 62 37 35 36 37 34 36 7d 0a 73 65 74 20 64 61 74  b756746}.set dat
7480: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7490: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
74a0: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
74b0: 39 33 31 37 32 61 22 5d 0a 0a 74 65 73 74 20 4e  93172a"]..test N
74c0: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 31 32  IST800-38b-AES12
74d0: 38 2d 32 39 2e 32 20 7b 6c 65 6e 3d 31 32 38 7d  8-29.2 {len=128}
74e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
74f0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65  :cmac -cipher ae
7500: 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 20 24  s-128-cbc -key $
7510: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
7520: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30      } -result {0
7530: 37 30 61 31 36 62 34 36 62 34 64 34 31 34 34 66  70a16b46b4d4144f
7540: 37 39 62 64 64 39 64 64 30 34 61 32 38 37 63 7d  79bdd9dd04a287c}
7550: 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72  .set data [binar
7560: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62  y decode hex "6b
7570: 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39  c1bee22e409f96e9
7580: 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61 65  3d7e117393172aae
7590: 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39 65  2d8a571e03ac9c9e
75a0: 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33 30  b76fac45af8e5130
75b0: 63 38 31 63 34 36 61 33 35 63 65 34 31 31 22 5d  c81c46a35ce411"]
75c0: 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33  ..test NIST800-3
75d0: 38 62 2d 41 45 53 31 32 38 2d 32 39 2e 33 20 7b  8b-AES128-29.3 {
75e0: 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b  len=320} -body {
75f0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
7600: 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d 63 62  ipher aes-128-cb
7610: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
7620: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
7630: 65 73 75 6c 74 20 7b 64 66 61 36 36 37 34 37 64  esult {dfa66747d
7640: 65 39 61 65 36 33 30 33 30 63 61 33 32 36 31 31  e9ae63030ca32611
7650: 34 39 37 63 38 32 37 7d 0a 73 65 74 20 64 61 74  497c827}.set dat
7660: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7670: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
7680: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
7690: 39 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65  93172aae2d8a571e
76a0: 30 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35  03ac9c9eb76fac45
76b0: 61 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33  af8e5130c81c46a3
76c0: 35 63 65 34 31 31 65 35 66 62 63 31 31 39 31 61  5ce411e5fbc1191a
76d0: 30 61 35 32 65 66 66 36 39 66 32 34 34 35 64 66  0a52eff69f2445df
76e0: 34 66 39 62 31 37 61 64 32 62 34 31 37 62 65 36  4f9b17ad2b417be6
76f0: 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e  6c3710"]..test N
7700: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 31 32  IST800-38b-AES12
7710: 38 2d 32 39 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d  8-29.4 {len=512}
7720: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7730: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65  :cmac -cipher ae
7740: 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 20 24  s-128-cbc -key $
7750: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
7760: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35      } -result {5
7770: 31 66 30 62 65 62 66 37 65 33 62 39 64 39 32 66  1f0bebf7e3b9d92f
7780: 63 34 39 37 34 31 37 37 39 33 36 33 63 66 65 7d  c49741779363cfe}
7790: 0a 0a 23 20 41 45 53 2d 31 39 32 0a 73 65 74 20  ..# AES-192.set 
77a0: 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  key [binary deco
77b0: 64 65 20 68 65 78 20 22 38 65 37 33 62 30 66 37  de hex "8e73b0f7
77c0: 64 61 30 65 36 34 35 32 63 38 31 30 66 33 32 62  da0e6452c810f32b
77d0: 38 30 39 30 37 39 65 35 36 32 66 38 65 61 64 32  809079e562f8ead2
77e0: 35 32 32 63 36 62 37 62 22 5d 0a 0a 0a 74 65 73  522c6b7b"]...tes
77f0: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
7800: 53 2d 31 39 32 2d 33 30 2e 31 20 7b 6c 65 6e 3d  S-192-30.1 {len=
7810: 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  0} -body {..::tl
7820: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
7830: 61 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79  aes-192-cbc -key
7840: 20 24 6b 65 79 20 2d 64 61 74 61 20 22 22 0a 20   $key -data "". 
7850: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31     } -result {d1
7860: 37 64 64 66 34 36 61 64 61 61 63 64 65 35 33 31  7ddf46adaacde531
7870: 63 61 63 34 38 33 64 65 37 61 39 33 36 37 7d 0a  cac483de7a9367}.
7880: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79  set data [binary
7890: 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63   decode hex "6bc
78a0: 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33  1bee22e409f96e93
78b0: 64 37 65 31 31 37 33 39 33 31 37 32 61 22 5d 0a  d7e117393172a"].
78c0: 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38  .test NIST800-38
78d0: 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 32 20 7b  b-AES-192-30.2 {
78e0: 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b  len=128} -body {
78f0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
7900: 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62  ipher aes-192-cb
7910: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
7920: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
7930: 65 73 75 6c 74 20 7b 39 65 39 39 61 37 62 66 33  esult {9e99a7bf3
7940: 31 65 37 31 30 39 30 30 36 36 32 66 36 35 65 36  1e710900662f65e6
7950: 31 37 63 35 31 38 34 7d 0a 73 65 74 20 64 61 74  17c5184}.set dat
7960: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7970: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
7980: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
7990: 39 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65  93172aae2d8a571e
79a0: 30 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35  03ac9c9eb76fac45
79b0: 61 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33  af8e5130c81c46a3
79c0: 35 63 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e  5ce411"]..test N
79d0: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31  IST800-38b-AES-1
79e0: 39 32 2d 33 30 2e 33 20 7b 6c 65 6e 3d 33 32 30  92-30.3 {len=320
79f0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7a00: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7a10: 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20  es-192-cbc -key 
7a20: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
7a30: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
7a40: 38 61 31 64 65 35 62 65 32 65 62 33 31 61 61 64  8a1de5be2eb31aad
7a50: 30 38 39 61 38 32 65 36 65 65 39 30 38 62 30 65  089a82e6ee908b0e
7a60: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
7a70: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7a80: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
7a90: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61  93d7e117393172aa
7aa0: 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39  e2d8a571e03ac9c9
7ab0: 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33  eb76fac45af8e513
7ac0: 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31 65  0c81c46a35ce411e
7ad0: 35 66 62 63 31 31 39 31 61 30 61 35 32 65 66 66  5fbc1191a0a52eff
7ae0: 36 39 66 32 34 34 35 64 66 34 66 39 62 31 37 61  69f2445df4f9b17a
7af0: 64 32 62 34 31 37 62 65 36 36 63 33 37 31 30 22  d2b417be66c3710"
7b00: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
7b10: 33 38 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 34  38b-AES-192-30.4
7b20: 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79   {len=512} -body
7b30: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
7b40: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d  -cipher aes-192-
7b50: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
7b60: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
7b70: 2d 72 65 73 75 6c 74 20 7b 61 31 64 35 64 66 30  -result {a1d5df0
7b80: 65 65 64 37 39 30 66 37 39 34 64 37 37 35 38 39  eed790f794d77589
7b90: 36 35 39 66 33 39 61 31 31 7d 0a 0a 23 20 41 45  659f39a11}..# AE
7ba0: 53 2d 32 35 36 0a 73 65 74 20 6b 65 79 20 5b 62  S-256.set key [b
7bb0: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
7bc0: 20 22 36 30 33 64 65 62 31 30 31 35 63 61 37 31   "603deb1015ca71
7bd0: 62 65 32 62 37 33 61 65 66 30 38 35 37 64 37 37  be2b73aef0857d77
7be0: 38 31 31 66 33 35 32 63 30 37 33 62 36 31 30 38  811f352c073b6108
7bf0: 64 37 32 64 39 38 31 30 61 33 30 39 31 34 64 66  d72d9810a30914df
7c00: 66 34 22 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54  f4"]...test NIST
7c10: 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d  800-38b-AES-256-
7c20: 33 31 2e 31 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f  31.1 {len=0} -bo
7c30: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
7c40: 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35  c -cipher aes-25
7c50: 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20  6-cbc -key $key 
7c60: 2d 64 61 74 61 20 22 22 0a 20 20 20 20 7d 20 2d  -data "".    } -
7c70: 72 65 73 75 6c 74 20 7b 30 32 38 39 36 32 66 36  result {028962f6
7c80: 31 62 37 62 66 38 39 65 66 63 36 62 35 35 31 66  1b7bf89efc6b551f
7c90: 34 36 36 37 64 39 38 33 7d 0a 73 65 74 20 64 61  4667d983}.set da
7ca0: 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ta [binary decod
7cb0: 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32  e hex "6bc1bee22
7cc0: 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37  e409f96e93d7e117
7cd0: 33 39 33 31 37 32 61 22 5d 0a 0a 74 65 73 74 20  393172a"]..test 
7ce0: 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d  NIST800-38b-AES-
7cf0: 32 35 36 2d 33 31 2e 32 20 7b 6c 65 6e 3d 31 32  256-31.2 {len=12
7d00: 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  8} -body {..::tl
7d10: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
7d20: 61 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79  aes-256-cbc -key
7d30: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
7d40: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
7d50: 7b 32 38 61 37 30 32 33 66 34 35 32 65 38 66 38  {28a7023f452e8f8
7d60: 32 62 64 34 62 66 32 38 64 38 63 33 37 63 33 35  2bd4bf28d8c37c35
7d70: 63 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  c}.set data [bin
7d80: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
7d90: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36  6bc1bee22e409f96
7da0: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61  e93d7e117393172a
7db0: 61 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63  ae2d8a571e03ac9c
7dc0: 39 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31  9eb76fac45af8e51
7dd0: 33 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31  30c81c46a35ce411
7de0: 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  "]..test NIST800
7df0: 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e  -38b-AES-256-31.
7e00: 33 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64  3 {len=320} -bod
7e10: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
7e20: 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35 36   -cipher aes-256
7e30: 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d  -cbc -key $key -
7e40: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
7e50: 20 2d 72 65 73 75 6c 74 20 7b 61 61 66 33 64 38   -result {aaf3d8
7e60: 66 31 64 65 35 36 34 30 63 32 33 32 66 35 62 31  f1de5640c232f5b1
7e70: 36 39 62 39 63 39 31 31 65 36 7d 0a 73 65 74 20  69b9c911e6}.set 
7e80: 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63  data [binary dec
7e90: 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65  ode hex "6bc1bee
7ea0: 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31  22e409f96e93d7e1
7eb0: 31 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35  17393172aae2d8a5
7ec0: 37 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61  71e03ac9c9eb76fa
7ed0: 63 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34  c45af8e5130c81c4
7ee0: 36 61 33 35 63 65 34 31 31 65 35 66 62 63 31 31  6a35ce411e5fbc11
7ef0: 39 31 61 30 61 35 32 65 66 66 36 39 66 32 34 34  91a0a52eff69f244
7f00: 35 64 66 34 66 39 62 31 37 61 64 32 62 34 31 37  5df4f9b17ad2b417
7f10: 62 65 36 36 63 33 37 31 30 22 5d 0a 0a 74 65 73  be66c3710"]..tes
7f20: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
7f30: 53 2d 32 35 36 2d 33 31 2e 34 20 7b 6c 65 6e 3d  S-256-31.4 {len=
7f40: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  512} -body {..::
7f50: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
7f60: 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b  r aes-256-cbc -k
7f70: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
7f80: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
7f90: 74 20 7b 65 31 39 39 32 31 39 30 35 34 39 66 36  t {e1992190549f6
7fa0: 65 64 35 36 39 36 61 32 63 30 35 36 63 33 31 35  ed5696a2c056c315
7fb0: 34 31 30 7d 0a 0a 23 20 43 6c 65 61 6e 75 70 0a  410}..# Cleanup.
7fc0: 3a 3a 74 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76  ::tcltest::remov
7fd0: 65 46 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  eFile $test_file
7fe0: 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 72 65 6d 6f  .::tcltest::remo
7ff0: 76 65 46 69 6c 65 20 24 74 65 73 74 5f 61 6c 74  veFile $test_alt
8000: 5f 66 69 6c 65 0a 0a 23 20 43 6c 65 61 6e 75 70  _file..# Cleanup
8010: 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61  .::tcltest::clea
8020: 6e 75 70 54 65 73 74 73 0a 72 65 74 75 72 6e 0a  nupTests.return.