Artifact
e9cb54f9396fa6e9464871ca094ba223109d4cf3e1a0ecbcf38fb1038aa732d1:
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: 6b 64 66 2e 63 73 76 0a 0a 23 20 4c 6f 61 64 20 kdf.csv..# Load
0030: 54 63 6c 20 54 65 73 74 20 70 61 63 6b 61 67 65 Tcl Test package
0040: 0a 69 66 20 7b 5b 6c 73 65 61 72 63 68 20 5b 6e .if {[lsearch [n
0050: 61 6d 65 73 70 61 63 65 20 63 68 69 6c 64 72 65 amespace childre
0060: 6e 5d 20 3a 3a 74 63 6c 74 65 73 74 5d 20 3d 3d n] ::tcltest] ==
0070: 20 2d 31 7d 20 7b 0a 09 70 61 63 6b 61 67 65 20 -1} {..package
0080: 72 65 71 75 69 72 65 20 74 63 6c 74 65 73 74 0a require tcltest.
0090: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
00a0: 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 2a 0a 7d t ::tcltest::*.}
00b0: 0a 0a 73 65 74 20 61 75 74 6f 5f 70 61 74 68 20 ..set auto_path
00c0: 5b 63 6f 6e 63 61 74 20 5b 6c 69 73 74 20 5b 66 [concat [list [f
00d0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 66 69 6c ile dirname [fil
00e0: 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 e dirname [info
00f0: 73 63 72 69 70 74 5d 5d 5d 5d 20 24 61 75 74 6f script]]]] $auto
0100: 5f 70 61 74 68 5d 0a 0a 70 61 63 6b 61 67 65 20 _path]..package
0110: 72 65 71 75 69 72 65 20 74 6c 73 0a 0a 23 20 50 require tls..# P
0120: 42 4b 44 46 32 20 45 72 72 6f 72 20 43 61 73 65 BKDF2 Error Case
0130: 73 0a 0a 0a 74 65 73 74 20 50 42 4b 44 46 32 5f s...test PBKDF2_
0140: 45 72 72 6f 72 73 2d 31 2e 31 20 7b 54 6f 6f 20 Errors-1.1 {Too
0150: 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 few args} -body
0160: 7b 0a 09 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 {..::tls::pbkdf2
0170: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
0180: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 wrong # args: sh
0190: 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a ould be "::tls::
01a0: 70 62 6b 64 66 32 20 5b 2d 63 69 70 68 65 72 20 pbkdf2 [-cipher
01b0: 63 69 70 68 65 72 20 7c 20 2d 73 69 7a 65 20 6c cipher | -size l
01c0: 65 6e 67 74 68 5d 20 2d 64 69 67 65 73 74 20 64 ength] -digest d
01d0: 69 67 65 73 74 20 3f 2d 69 74 65 72 61 74 69 6f igest ?-iteratio
01e0: 6e 73 20 63 6f 75 6e 74 3f 20 3f 2d 70 61 73 73 ns count? ?-pass
01f0: 77 6f 72 64 20 73 74 72 69 6e 67 3f 20 3f 2d 73 word string? ?-s
0200: 61 6c 74 20 73 74 72 69 6e 67 3f 22 7d 20 2d 72 alt string?"} -r
0210: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a eturnCodes {1}..
0220: 74 65 73 74 20 50 42 4b 44 46 32 5f 45 72 72 6f test PBKDF2_Erro
0230: 72 73 2d 31 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 rs-1.2 {Too many
0240: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 args} -body {..
0250: 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 74 6f ::tls::pbkdf2 to
0260: 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c o many command l
0270: 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 ine args to pass
0280: 20 74 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 the test withou
0290: 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 t an error or fa
02a0: 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 iling. } -res
02b0: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 ult {wrong # arg
02c0: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a s: should be "::
02d0: 74 6c 73 3a 3a 70 62 6b 64 66 32 20 5b 2d 63 69 tls::pbkdf2 [-ci
02e0: 70 68 65 72 20 63 69 70 68 65 72 20 7c 20 2d 73 pher cipher | -s
02f0: 69 7a 65 20 6c 65 6e 67 74 68 5d 20 2d 64 69 67 ize length] -dig
0300: 65 73 74 20 64 69 67 65 73 74 20 3f 2d 69 74 65 est digest ?-ite
0310: 72 61 74 69 6f 6e 73 20 63 6f 75 6e 74 3f 20 3f rations count? ?
0320: 2d 70 61 73 73 77 6f 72 64 20 73 74 72 69 6e 67 -password string
0330: 3f 20 3f 2d 73 61 6c 74 20 73 74 72 69 6e 67 3f ? ?-salt string?
0340: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 "} -returnCodes
0350: 7b 31 7d 0a 0a 74 65 73 74 20 50 42 4b 44 46 32 {1}..test PBKDF2
0360: 5f 45 72 72 6f 72 73 2d 31 2e 33 20 7b 49 6e 76 _Errors-1.3 {Inv
0370: 61 6c 69 64 20 63 69 70 68 65 72 7d 20 2d 62 6f alid cipher} -bo
0380: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 70 62 6b dy {..::tls::pbk
0390: 64 66 32 20 2d 64 69 67 65 73 74 20 73 68 61 32 df2 -digest sha2
03a0: 35 36 20 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 56 -password key
03b0: 20 2d 63 69 70 68 65 72 20 62 6f 67 75 73 0a 20 -cipher bogus.
03c0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e } -result {in
03d0: 76 61 6c 69 64 20 63 69 70 68 65 72 20 22 62 6f valid cipher "bo
03e0: 67 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 gus"} -returnCod
03f0: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 50 42 4b es {1}..test PBK
0400: 44 46 32 5f 45 72 72 6f 72 73 2d 31 2e 34 20 7b DF2_Errors-1.4 {
0410: 49 6e 76 61 6c 69 64 20 64 69 67 65 73 74 7d 20 Invalid digest}
0420: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
0430: 70 62 6b 64 66 32 20 2d 64 69 67 65 73 74 20 62 pbkdf2 -digest b
0440: 6f 67 75 73 20 2d 70 61 73 73 77 6f 72 64 20 6b ogus -password k
0450: 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ey. } -result
0460: 20 7b 69 6e 76 61 6c 69 64 20 64 69 67 65 73 74 {invalid digest
0470: 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 "bogus"} -retur
0480: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 nCodes {1}..test
0490: 20 50 42 4b 44 46 32 5f 45 72 72 6f 72 73 2d 31 PBKDF2_Errors-1
04a0: 2e 35 20 7b 49 6e 76 61 6c 69 64 20 69 74 65 72 .5 {Invalid iter
04b0: 61 74 69 6f 6e 73 7d 20 2d 62 6f 64 79 20 7b 0a ations} -body {.
04c0: 09 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 2d .::tls::pbkdf2 -
04d0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 70 digest sha256 -p
04e0: 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 69 74 65 assword key -ite
04f0: 72 61 74 69 6f 6e 73 20 2d 31 0a 20 20 20 20 7d rations -1. }
0500: 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69 -result {invali
0510: 64 20 76 61 6c 75 65 20 22 2d 31 22 20 66 6f 72 d value "-1" for
0520: 20 6f 70 74 69 6f 6e 20 22 69 74 65 72 61 74 69 option "iterati
0530: 6f 6e 73 22 3a 20 6d 75 73 74 20 62 65 20 3e 3d ons": must be >=
0540: 20 31 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 1} -returnCodes
0550: 20 7b 31 7d 0a 0a 74 65 73 74 20 50 42 4b 44 46 {1}..test PBKDF
0560: 32 5f 45 72 72 6f 72 73 2d 31 2e 36 20 7b 4e 6f 2_Errors-1.6 {No
0570: 20 70 61 73 73 77 6f 72 64 20 76 61 6c 75 65 7d password value}
0580: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
0590: 3a 70 62 6b 64 66 32 20 2d 64 69 67 65 73 74 20 :pbkdf2 -digest
05a0: 73 68 61 32 35 36 20 2d 70 61 73 73 77 6f 72 64 sha256 -password
05b0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
05c0: 4e 6f 20 76 61 6c 75 65 20 66 6f 72 20 6f 70 74 No value for opt
05d0: 69 6f 6e 20 22 2d 70 61 73 73 77 6f 72 64 22 7d ion "-password"}
05e0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 -returnCodes {1
05f0: 7d 0a 0a 74 65 73 74 20 50 42 4b 44 46 32 5f 45 }..test PBKDF2_E
0600: 72 72 6f 72 73 2d 31 2e 37 20 7b 4e 6f 20 73 61 rrors-1.7 {No sa
0610: 6c 74 20 76 61 6c 75 65 7d 20 2d 62 6f 64 79 20 lt value} -body
0620: 7b 0a 09 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 {..::tls::pbkdf2
0630: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 -digest sha256
0640: 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 -password key -s
0650: 61 6c 74 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c alt. } -resul
0660: 74 20 7b 4e 6f 20 76 61 6c 75 65 20 66 6f 72 20 t {No value for
0670: 6f 70 74 69 6f 6e 20 22 2d 73 61 6c 74 22 7d 20 option "-salt"}
0680: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d -returnCodes {1}
0690: 0a 0a 74 65 73 74 20 50 42 4b 44 46 32 5f 45 72 ..test PBKDF2_Er
06a0: 72 6f 72 73 2d 31 2e 38 20 7b 49 6e 76 61 6c 69 rors-1.8 {Invali
06b0: 64 20 73 69 7a 65 7d 20 2d 62 6f 64 79 20 7b 0a d size} -body {.
06c0: 09 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 2d .::tls::pbkdf2 -
06d0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 70 digest sha256 -p
06e0: 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 69 7a assword key -siz
06f0: 65 20 30 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c e 0. } -resul
0700: 74 20 7b 69 6e 76 61 6c 69 64 20 76 61 6c 75 65 t {invalid value
0710: 20 22 30 22 20 66 6f 72 20 6f 70 74 69 6f 6e 20 "0" for option
0720: 22 2d 73 69 7a 65 22 3a 20 6d 75 73 74 20 62 65 "-size": must be
0730: 20 3e 3d 20 31 7d 20 2d 72 65 74 75 72 6e 43 6f >= 1} -returnCo
0740: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 50 42 des {1}..test PB
0750: 4b 44 46 32 5f 45 72 72 6f 72 73 2d 31 2e 39 20 KDF2_Errors-1.9
0760: 7b 54 6f 6f 20 62 69 67 20 73 69 7a 65 7d 20 2d {Too big size} -
0770: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 70 body {..::tls::p
0780: 62 6b 64 66 32 20 2d 64 69 67 65 73 74 20 73 68 bkdf2 -digest sh
0790: 61 32 35 36 20 2d 70 61 73 73 77 6f 72 64 20 6b a256 -password k
07a0: 65 79 20 2d 73 69 7a 65 20 34 30 30 0a 20 20 20 ey -size 400.
07b0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 61 } -result {inva
07c0: 6c 69 64 20 76 61 6c 75 65 20 22 34 30 30 22 20 lid value "400"
07d0: 66 6f 72 20 6f 70 74 69 6f 6e 20 22 2d 73 69 7a for option "-siz
07e0: 65 22 3a 20 6d 75 73 74 20 62 65 20 3c 3d 20 33 e": must be <= 3
07f0: 32 30 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20} -returnCodes
0800: 20 7b 31 7d 0a 0a 23 20 48 4b 44 46 20 45 72 72 {1}..# HKDF Err
0810: 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 or Cases...test
0820: 48 4b 44 46 5f 45 72 72 6f 72 73 2d 32 2e 31 20 HKDF_Errors-2.1
0830: 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 2d {Too few args} -
0840: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 body {..::tls::h
0850: 6b 64 66 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c kdf. } -resul
0860: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a t {wrong # args:
0870: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c should be "::tl
0880: 73 3a 3a 68 6b 64 66 20 2d 64 69 67 65 73 74 20 s::hkdf -digest
0890: 64 69 67 65 73 74 20 2d 6b 65 79 20 73 74 72 69 digest -key stri
08a0: 6e 67 20 3f 2d 69 6e 66 6f 20 73 74 72 69 6e 67 ng ?-info string
08b0: 3f 20 3f 2d 73 61 6c 74 20 73 74 72 69 6e 67 3f ? ?-salt string?
08c0: 20 3f 2d 73 69 7a 65 20 64 65 72 69 76 65 64 5f ?-size derived_
08d0: 6c 65 6e 67 74 68 3f 22 7d 20 2d 72 65 74 75 72 length?"} -retur
08e0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 nCodes {1}..test
08f0: 20 48 4b 44 46 5f 45 72 72 6f 72 73 2d 32 2e 32 HKDF_Errors-2.2
0900: 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d {Too many args}
0910: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
0920: 3a 68 6b 64 66 20 74 6f 6f 20 6d 61 6e 79 20 63 :hkdf too many c
0930: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 ommand line args
0940: 20 74 6f 20 70 61 73 73 20 74 68 65 20 74 65 73 to pass the tes
0950: 74 20 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72 t without an err
0960: 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 or or failing.
0970: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f } -result {wro
0980: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c ng # args: shoul
0990: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 6b 64 d be "::tls::hkd
09a0: 66 20 2d 64 69 67 65 73 74 20 64 69 67 65 73 74 f -digest digest
09b0: 20 2d 6b 65 79 20 73 74 72 69 6e 67 20 3f 2d 69 -key string ?-i
09c0: 6e 66 6f 20 73 74 72 69 6e 67 3f 20 3f 2d 73 61 nfo string? ?-sa
09d0: 6c 74 20 73 74 72 69 6e 67 3f 20 3f 2d 73 69 7a lt string? ?-siz
09e0: 65 20 64 65 72 69 76 65 64 5f 6c 65 6e 67 74 68 e derived_length
09f0: 3f 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ?"} -returnCodes
0a00: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4b 44 46 5f {1}..test HKDF_
0a10: 45 72 72 6f 72 73 2d 32 2e 33 20 7b 4e 6f 20 64 Errors-2.3 {No d
0a20: 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 igest} -body {..
0a30: 3a 3a 74 6c 73 3a 3a 68 6b 64 66 20 2d 6b 65 79 ::tls::hkdf -key
0a40: 20 6b 65 79 20 2d 6b 65 79 20 6b 65 79 0a 20 20 key -key key.
0a50: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 } -result {no
0a60: 64 69 67 65 73 74 7d 20 2d 72 65 74 75 72 6e 43 digest} -returnC
0a70: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 odes {1}..test H
0a80: 4b 44 46 5f 45 72 72 6f 72 73 2d 32 2e 34 20 7b KDF_Errors-2.4 {
0a90: 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a No key} -body {.
0aa0: 09 3a 3a 74 6c 73 3a 3a 68 6b 64 66 20 2d 64 69 .::tls::hkdf -di
0ab0: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 69 67 gest sha256 -dig
0ac0: 65 73 74 20 73 68 61 32 35 36 0a 20 20 20 20 7d est sha256. }
0ad0: 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 6b 65 79 -result {no key
0ae0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b } -returnCodes {
0af0: 31 7d 0a 0a 74 65 73 74 20 48 4b 44 46 5f 45 72 1}..test HKDF_Er
0b00: 72 6f 72 73 2d 32 2e 35 20 7b 4e 6f 20 69 6e 66 rors-2.5 {No inf
0b10: 6f 20 76 61 6c 75 65 7d 20 2d 62 6f 64 79 20 7b o value} -body {
0b20: 0a 09 3a 3a 74 6c 73 3a 3a 68 6b 64 66 20 2d 64 ..::tls::hkdf -d
0b30: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 igest sha256 -ke
0b40: 79 20 6b 65 79 20 2d 69 6e 66 6f 0a 20 20 20 20 y key -info.
0b50: 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 76 61 } -result {No va
0b60: 6c 75 65 20 66 6f 72 20 6f 70 74 69 6f 6e 20 22 lue for option "
0b70: 2d 69 6e 66 6f 22 7d 20 2d 72 65 74 75 72 6e 43 -info"} -returnC
0b80: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 odes {1}..test H
0b90: 4b 44 46 5f 45 72 72 6f 72 73 2d 32 2e 36 20 7b KDF_Errors-2.6 {
0ba0: 4e 6f 20 73 61 6c 74 20 76 61 6c 75 65 7d 20 2d No salt value} -
0bb0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 body {..::tls::h
0bc0: 6b 64 66 20 2d 64 69 67 65 73 74 20 73 68 61 32 kdf -digest sha2
0bd0: 35 36 20 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 56 -password key
0be0: 20 2d 73 61 6c 74 0a 20 20 20 20 7d 20 2d 72 65 -salt. } -re
0bf0: 73 75 6c 74 20 7b 4e 6f 20 76 61 6c 75 65 20 66 sult {No value f
0c00: 6f 72 20 6f 70 74 69 6f 6e 20 22 2d 73 61 6c 74 or option "-salt
0c10: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 "} -returnCodes
0c20: 7b 31 7d 0a 0a 74 65 73 74 20 48 4b 44 46 5f 45 {1}..test HKDF_E
0c30: 72 72 6f 72 73 2d 32 2e 37 20 7b 49 6e 76 61 6c rrors-2.7 {Inval
0c40: 69 64 20 73 69 7a 65 7d 20 2d 62 6f 64 79 20 7b id size} -body {
0c50: 0a 09 3a 3a 74 6c 73 3a 3a 68 6b 64 66 20 2d 64 ..::tls::hkdf -d
0c60: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 70 61 igest sha256 -pa
0c70: 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 69 7a 65 ssword key -size
0c80: 20 30 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 0. } -result
0c90: 20 7b 69 6e 76 61 6c 69 64 20 76 61 6c 75 65 20 {invalid value
0ca0: 22 30 22 20 66 6f 72 20 6f 70 74 69 6f 6e 20 22 "0" for option "
0cb0: 2d 73 69 7a 65 22 3a 20 6d 75 73 74 20 62 65 20 -size": must be
0cc0: 3e 3d 20 31 7d 20 2d 72 65 74 75 72 6e 43 6f 64 >= 1} -returnCod
0cd0: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4b 44 es {1}..test HKD
0ce0: 46 5f 45 72 72 6f 72 73 2d 32 2e 38 20 7b 54 6f F_Errors-2.8 {To
0cf0: 6f 20 62 69 67 20 73 69 7a 65 7d 20 2d 62 6f 64 o big size} -bod
0d00: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6b 64 66 y {..::tls::hkdf
0d10: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 -digest sha256
0d20: 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 -password key -s
0d30: 69 7a 65 20 38 31 36 31 0a 20 20 20 20 7d 20 2d ize 8161. } -
0d40: 72 65 73 75 6c 74 20 22 4b 65 79 20 64 65 72 69 result "Key deri
0d50: 76 61 74 69 6f 6e 20 66 61 69 6c 65 64 3a 20 22 vation failed: "
0d60: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 -returnCodes {1
0d70: 7d 0a 0a 23 20 53 63 72 79 70 74 20 45 72 72 6f }..# Scrypt Erro
0d80: 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 53 r Cases...test S
0d90: 63 72 79 70 74 5f 45 72 72 6f 72 73 2d 33 2e 31 crypt_Errors-3.1
0da0: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 {Too few args}
0db0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
0dc0: 73 63 72 79 70 74 0a 20 20 20 20 7d 20 2d 72 65 scrypt. } -re
0dd0: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 sult {wrong # ar
0de0: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a gs: should be ":
0df0: 3a 74 6c 73 3a 3a 73 63 72 79 70 74 20 2d 70 61 :tls::scrypt -pa
0e00: 73 73 77 6f 72 64 20 73 74 72 69 6e 67 20 2d 73 ssword string -s
0e10: 61 6c 74 20 73 74 72 69 6e 67 20 3f 2d 4e 20 63 alt string ?-N c
0e20: 6f 73 74 50 61 72 61 6d 65 74 65 72 3f 20 3f 2d ostParameter? ?-
0e30: 72 20 62 6c 6f 63 6b 53 69 7a 65 3f 20 3f 2d 70 r blockSize? ?-p
0e40: 20 70 61 72 61 6c 6c 65 6c 69 7a 61 74 69 6f 6e parallelization
0e50: 3f 20 3f 2d 73 69 7a 65 20 64 65 72 69 76 65 64 ? ?-size derived
0e60: 5f 6c 65 6e 67 74 68 3f 22 7d 20 2d 72 65 74 75 _length?"} -retu
0e70: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 rnCodes {1}..tes
0e80: 74 20 53 63 72 79 70 74 5f 45 72 72 6f 72 73 2d t Scrypt_Errors-
0e90: 33 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 3.2 {Too many ar
0ea0: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 gs} -body {..::t
0eb0: 6c 73 3a 3a 73 63 72 79 70 74 20 74 6f 6f 20 6d ls::scrypt too m
0ec0: 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 any command line
0ed0: 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74 68 args to pass th
0ee0: 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20 61 e test without a
0ef0: 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69 n error or faili
0f00: 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ng. } -result
0f10: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 {wrong # args:
0f20: 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 should be "::tls
0f30: 3a 3a 73 63 72 79 70 74 20 2d 70 61 73 73 77 6f ::scrypt -passwo
0f40: 72 64 20 73 74 72 69 6e 67 20 2d 73 61 6c 74 20 rd string -salt
0f50: 73 74 72 69 6e 67 20 3f 2d 4e 20 63 6f 73 74 50 string ?-N costP
0f60: 61 72 61 6d 65 74 65 72 3f 20 3f 2d 72 20 62 6c arameter? ?-r bl
0f70: 6f 63 6b 53 69 7a 65 3f 20 3f 2d 70 20 70 61 72 ockSize? ?-p par
0f80: 61 6c 6c 65 6c 69 7a 61 74 69 6f 6e 3f 20 3f 2d allelization? ?-
0f90: 73 69 7a 65 20 64 65 72 69 76 65 64 5f 6c 65 6e size derived_len
0fa0: 67 74 68 3f 22 7d 20 2d 72 65 74 75 72 6e 43 6f gth?"} -returnCo
0fb0: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 53 63 des {1}..test Sc
0fc0: 72 79 70 74 5f 45 72 72 6f 72 73 2d 33 2e 33 20 rypt_Errors-3.3
0fd0: 7b 4e 6f 20 70 61 73 73 77 6f 72 64 20 76 61 6c {No password val
0fe0: 75 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 ue} -body {..::t
0ff0: 6c 73 3a 3a 73 63 72 79 70 74 20 2d 73 61 6c 74 ls::scrypt -salt
1000: 20 73 61 6c 74 20 2d 73 61 6c 74 20 73 61 6c 74 salt -salt salt
1010: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1020: 6e 6f 20 70 61 73 73 77 6f 72 64 7d 20 2d 72 65 no password} -re
1030: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 turnCodes {1}..t
1040: 65 73 74 20 53 63 72 79 70 74 5f 45 72 72 6f 72 est Scrypt_Error
1050: 73 2d 33 2e 34 20 7b 4e 6f 20 73 61 6c 74 20 76 s-3.4 {No salt v
1060: 61 6c 75 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a alue} -body {..:
1070: 3a 74 6c 73 3a 3a 73 63 72 79 70 74 20 2d 70 61 :tls::scrypt -pa
1080: 73 73 77 6f 72 64 20 6b 65 79 20 2d 70 61 73 73 ssword key -pass
1090: 77 6f 72 64 20 6b 65 79 0a 20 20 20 20 7d 20 2d word key. } -
10a0: 72 65 73 75 6c 74 20 7b 6e 6f 20 73 61 6c 74 7d result {no salt}
10b0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 -returnCodes {1
10c0: 7d 0a 0a 74 65 73 74 20 53 63 72 79 70 74 5f 45 }..test Scrypt_E
10d0: 72 72 6f 72 73 2d 33 2e 35 20 7b 49 6e 76 61 6c rrors-3.5 {Inval
10e0: 69 64 20 73 69 7a 65 7d 20 2d 62 6f 64 79 20 7b id size} -body {
10f0: 0a 09 3a 3a 74 6c 73 3a 3a 73 63 72 79 70 74 20 ..::tls::scrypt
1100: 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 -password key -s
1110: 61 6c 74 20 73 61 6c 74 20 2d 73 69 7a 65 20 30 alt salt -size 0
1120: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1130: 69 6e 76 61 6c 69 64 20 76 61 6c 75 65 20 22 30 invalid value "0
1140: 22 20 66 6f 72 20 6f 70 74 69 6f 6e 20 22 2d 73 " for option "-s
1150: 69 7a 65 22 3a 20 6d 75 73 74 20 62 65 20 3e 3d ize": must be >=
1160: 20 31 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 1} -returnCodes
1170: 20 7b 31 7d 0a 0a 74 65 73 74 20 53 63 72 79 70 {1}..test Scryp
1180: 74 5f 45 72 72 6f 72 73 2d 33 2e 36 20 7b 49 6e t_Errors-3.6 {In
1190: 76 61 6c 69 64 20 4e 20 63 6f 73 74 50 61 72 61 valid N costPara
11a0: 6d 65 74 65 72 7d 20 2d 63 6f 6e 73 74 72 61 69 meter} -constrai
11b0: 6e 74 73 20 7b 6b 6e 6f 77 6e 49 67 6e 6f 72 65 nts {knownIgnore
11c0: 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c d} -body {..::tl
11d0: 73 3a 3a 73 63 72 79 70 74 20 2d 70 61 73 73 77 s::scrypt -passw
11e0: 6f 72 64 20 6b 65 79 20 2d 73 61 6c 74 20 73 61 ord key -salt sa
11f0: 6c 74 20 2d 4e 20 30 0a 20 20 20 20 7d 20 2d 72 lt -N 0. } -r
1200: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a eturnCodes {1}..
1210: 74 65 73 74 20 53 63 72 79 70 74 5f 45 72 72 6f test Scrypt_Erro
1220: 72 73 2d 33 2e 37 20 7b 49 6e 76 61 6c 69 64 20 rs-3.7 {Invalid
1230: 72 20 62 6c 6f 63 6b 53 69 7a 65 7d 20 2d 63 6f r blockSize} -co
1240: 6e 73 74 72 61 69 6e 74 73 20 7b 6b 6e 6f 77 6e nstraints {known
1250: 49 67 6e 6f 72 65 64 7d 20 2d 62 6f 64 79 20 7b Ignored} -body {
1260: 0a 09 3a 3a 74 6c 73 3a 3a 73 63 72 79 70 74 20 ..::tls::scrypt
1270: 2d 70 61 73 73 77 6f 72 64 20 6b 65 79 20 2d 73 -password key -s
1280: 61 6c 74 20 73 61 6c 74 20 2d 72 20 30 0a 20 20 alt salt -r 0.
1290: 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 } -returnCodes
12a0: 20 7b 31 7d 0a 0a 74 65 73 74 20 53 63 72 79 70 {1}..test Scryp
12b0: 74 5f 45 72 72 6f 72 73 2d 33 2e 38 20 7b 49 6e t_Errors-3.8 {In
12c0: 76 61 6c 69 64 20 70 20 70 61 72 61 6c 6c 65 6c valid p parallel
12d0: 69 7a 61 74 69 6f 6e 7d 20 2d 63 6f 6e 73 74 72 ization} -constr
12e0: 61 69 6e 74 73 20 7b 6b 6e 6f 77 6e 49 67 6e 6f aints {knownIgno
12f0: 72 65 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a red} -body {..::
1300: 74 6c 73 3a 3a 73 63 72 79 70 74 20 2d 70 61 73 tls::scrypt -pas
1310: 73 77 6f 72 64 20 6b 65 79 20 2d 73 61 6c 74 20 sword key -salt
1320: 73 61 6c 74 20 2d 70 20 30 0a 20 20 20 20 7d 20 salt -p 0. }
1330: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d -returnCodes {1}
1340: 0a 0a 73 65 74 20 64 69 67 65 73 74 20 73 68 61 ..set digest sha
1350: 31 0a 73 65 74 20 50 20 22 70 61 73 73 77 6f 72 1.set P "passwor
1360: 64 22 0a 73 65 74 20 53 20 22 73 61 6c 74 22 0a d".set S "salt".
1370: 73 65 74 20 64 6b 4c 65 6e 20 32 30 0a 0a 23 20 set dkLen 20..#
1380: 50 42 4b 44 46 32 20 52 46 43 20 36 30 37 30 0a PBKDF2 RFC 6070.
1390: 0a 0a 74 65 73 74 20 50 42 4b 44 46 32 5f 52 46 ..test PBKDF2_RF
13a0: 43 5f 36 30 37 30 2d 34 2e 31 20 7b 54 65 73 74 C_6070-4.1 {Test
13b0: 20 43 61 73 65 20 31 7d 20 2d 62 6f 64 79 20 7b Case 1} -body {
13c0: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 ..binary encode
13d0: 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 70 62 6b 64 hex [::tls::pbkd
13e0: 66 32 20 2d 64 69 67 65 73 74 20 24 64 69 67 65 f2 -digest $dige
13f0: 73 74 20 2d 70 61 73 73 77 6f 72 64 20 24 50 20 st -password $P
1400: 2d 73 61 6c 74 20 24 53 20 2d 69 74 65 72 61 74 -salt $S -iterat
1410: 69 6f 6e 73 20 31 20 2d 73 69 7a 65 20 24 64 6b ions 1 -size $dk
1420: 4c 65 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 Len]. } -resu
1430: 6c 74 20 7b 30 63 36 30 63 38 30 66 39 36 31 66 lt {0c60c80f961f
1440: 30 65 37 31 66 33 61 39 62 35 32 34 61 66 36 30 0e71f3a9b524af60
1450: 31 32 30 36 32 66 65 30 33 37 61 36 7d 0a 0a 74 12062fe037a6}..t
1460: 65 73 74 20 50 42 4b 44 46 32 5f 52 46 43 5f 36 est PBKDF2_RFC_6
1470: 30 37 30 2d 34 2e 32 20 7b 54 65 73 74 20 43 61 070-4.2 {Test Ca
1480: 73 65 20 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 se 2} -body {..b
1490: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 inary encode hex
14a0: 20 5b 3a 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 [::tls::pbkdf2
14b0: 2d 64 69 67 65 73 74 20 24 64 69 67 65 73 74 20 -digest $digest
14c0: 2d 70 61 73 73 77 6f 72 64 20 24 50 20 2d 73 61 -password $P -sa
14d0: 6c 74 20 24 53 20 2d 69 74 65 72 61 74 69 6f 6e lt $S -iteration
14e0: 73 20 32 20 2d 73 69 7a 65 20 24 64 6b 4c 65 6e s 2 -size $dkLen
14f0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 ]. } -result
1500: 7b 65 61 36 63 30 31 34 64 63 37 32 64 36 66 38 {ea6c014dc72d6f8
1510: 63 63 64 31 65 64 39 32 61 63 65 31 64 34 31 66 ccd1ed92ace1d41f
1520: 30 64 38 64 65 38 39 35 37 7d 0a 0a 74 65 73 74 0d8de8957}..test
1530: 20 50 42 4b 44 46 32 5f 52 46 43 5f 36 30 37 30 PBKDF2_RFC_6070
1540: 2d 34 2e 33 20 7b 54 65 73 74 20 43 61 73 65 20 -4.3 {Test Case
1550: 33 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 3} -body {..bina
1560: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
1570: 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 2d 64 69 :tls::pbkdf2 -di
1580: 67 65 73 74 20 24 64 69 67 65 73 74 20 2d 70 61 gest $digest -pa
1590: 73 73 77 6f 72 64 20 24 50 20 2d 73 61 6c 74 20 ssword $P -salt
15a0: 24 53 20 2d 69 74 65 72 61 74 69 6f 6e 73 20 34 $S -iterations 4
15b0: 30 39 36 20 2d 73 69 7a 65 20 24 64 6b 4c 65 6e 096 -size $dkLen
15c0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 ]. } -result
15d0: 7b 34 62 30 30 37 39 30 31 62 37 36 35 34 38 39 {4b007901b765489
15e0: 61 62 65 61 64 34 39 64 39 32 36 66 37 32 31 64 abead49d926f721d
15f0: 30 36 35 61 34 32 39 63 31 7d 0a 0a 74 65 73 74 065a429c1}..test
1600: 20 50 42 4b 44 46 32 5f 52 46 43 5f 36 30 37 30 PBKDF2_RFC_6070
1610: 2d 34 2e 34 20 7b 54 65 73 74 20 43 61 73 65 20 -4.4 {Test Case
1620: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 4} -body {..bina
1630: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
1640: 3a 74 6c 73 3a 3a 70 62 6b 64 66 32 20 2d 64 69 :tls::pbkdf2 -di
1650: 67 65 73 74 20 24 64 69 67 65 73 74 20 2d 70 61 gest $digest -pa
1660: 73 73 77 6f 72 64 20 24 50 20 2d 73 61 6c 74 20 ssword $P -salt
1670: 24 53 20 2d 69 74 65 72 61 74 69 6f 6e 73 20 31 $S -iterations 1
1680: 36 37 37 37 32 31 36 20 2d 73 69 7a 65 20 24 64 6777216 -size $d
1690: 6b 4c 65 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 kLen]. } -res
16a0: 75 6c 74 20 7b 65 65 66 65 33 64 36 31 63 64 34 ult {eefe3d61cd4
16b0: 64 61 34 65 34 65 39 39 34 35 62 33 64 36 62 61 da4e4e9945b3d6ba
16c0: 32 31 35 38 63 32 36 33 34 65 39 38 34 7d 0a 0a 2158c2634e984}..
16d0: 73 65 74 20 64 69 67 65 73 74 20 73 68 61 31 0a set digest sha1.
16e0: 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 set key [binary
16f0: 64 65 63 6f 64 65 20 68 65 78 20 30 62 30 62 30 decode hex 0b0b0
1700: 62 30 62 30 62 30 62 30 62 30 62 30 62 30 62 30 b0b0b0b0b0b0b0b0
1710: 62 5d 0a 73 65 74 20 73 61 6c 74 20 5b 62 69 6e b].set salt [bin
1720: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 30 ary decode hex 0
1730: 30 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 0010203040506070
1740: 38 30 39 30 61 30 62 30 63 5d 0a 73 65 74 20 69 8090a0b0c].set i
1750: 6e 66 6f 20 5b 62 69 6e 61 72 79 20 64 65 63 6f nfo [binary deco
1760: 64 65 20 68 65 78 20 66 30 66 31 66 32 66 33 66 de hex f0f1f2f3f
1770: 34 66 35 66 36 66 37 66 38 66 39 5d 0a 73 65 74 4f5f6f7f8f9].set
1780: 20 73 69 7a 65 20 34 32 0a 0a 23 20 48 4b 44 46 size 42..# HKDF
1790: 20 52 46 43 20 36 32 33 34 0a 0a 0a 74 65 73 74 RFC 6234...test
17a0: 20 48 4b 44 46 5f 52 46 43 5f 36 32 33 34 2d 35 HKDF_RFC_6234-5
17b0: 2e 31 20 7b 41 2e 34 2e 20 20 54 65 73 74 20 43 .1 {A.4. Test C
17c0: 61 73 65 20 34 2c 20 42 61 73 69 63 20 74 65 73 ase 4, Basic tes
17d0: 74 20 63 61 73 65 20 77 69 74 68 20 53 48 41 2d t case with SHA-
17e0: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 1} -body {..bina
17f0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
1800: 3a 74 6c 73 3a 3a 68 6b 64 66 20 2d 64 69 67 65 :tls::hkdf -dige
1810: 73 74 20 24 64 69 67 65 73 74 20 2d 70 61 73 73 st $digest -pass
1820: 77 6f 72 64 20 24 6b 65 79 20 2d 73 61 6c 74 20 word $key -salt
1830: 24 73 61 6c 74 20 2d 69 6e 66 6f 20 24 69 6e 66 $salt -info $inf
1840: 6f 20 2d 73 69 7a 65 20 24 73 69 7a 65 5d 0a 20 o -size $size].
1850: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 38 } -result {08
1860: 35 61 30 31 65 61 31 62 31 30 66 33 36 39 33 33 5a01ea1b10f36933
1870: 30 36 38 62 35 36 65 66 61 35 61 64 38 31 61 34 068b56efa5ad81a4
1880: 66 31 34 62 38 32 32 66 35 62 30 39 31 35 36 38 f14b822f5b091568
1890: 61 39 63 64 64 34 66 31 35 35 66 64 61 32 63 32 a9cdd4f155fda2c2
18a0: 32 65 34 32 32 34 37 38 64 33 30 35 66 33 66 38 2e422478d305f3f8
18b0: 39 36 7d 0a 0a 73 65 74 20 6b 65 79 20 5b 62 69 96}..set key [bi
18c0: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 nary decode hex
18d0: 30 30 30 31 30 32 30 33 30 34 30 35 30 36 30 37 0001020304050607
18e0: 30 38 30 39 30 61 30 62 30 63 30 64 30 65 30 66 08090a0b0c0d0e0f
18f0: 31 30 31 31 31 32 31 33 31 34 31 35 31 36 31 37 1011121314151617
1900: 31 38 31 39 31 61 31 62 31 63 31 64 31 65 31 66 18191a1b1c1d1e1f
1910: 32 30 32 31 32 32 32 33 32 34 32 35 32 36 32 37 2021222324252627
1920: 32 38 32 39 32 61 32 62 32 63 32 64 32 65 32 66 28292a2b2c2d2e2f
1930: 33 30 33 31 33 32 33 33 33 34 33 35 33 36 33 37 3031323334353637
1940: 33 38 33 39 33 61 33 62 33 63 33 64 33 65 33 66 38393a3b3c3d3e3f
1950: 34 30 34 31 34 32 34 33 34 34 34 35 34 36 34 37 4041424344454647
1960: 34 38 34 39 34 61 34 62 34 63 34 64 34 65 34 66 48494a4b4c4d4e4f
1970: 5d 0a 73 65 74 20 73 61 6c 74 20 5b 62 69 6e 61 ].set salt [bina
1980: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 36 30 ry decode hex 60
1990: 36 31 36 32 36 33 36 34 36 35 36 36 36 37 36 38 6162636465666768
19a0: 36 39 36 61 36 62 36 63 36 64 36 65 36 66 37 30 696a6b6c6d6e6f70
19b0: 37 31 37 32 37 33 37 34 37 35 37 36 37 37 37 38 7172737475767778
19c0: 37 39 37 61 37 62 37 63 37 64 37 65 37 66 38 30 797a7b7c7d7e7f80
19d0: 38 31 38 32 38 33 38 34 38 35 38 36 38 37 38 38 8182838485868788
19e0: 38 39 38 61 38 62 38 63 38 64 38 65 38 66 39 30 898a8b8c8d8e8f90
19f0: 39 31 39 32 39 33 39 34 39 35 39 36 39 37 39 38 9192939495969798
1a00: 39 39 39 61 39 62 39 63 39 64 39 65 39 66 61 30 999a9b9c9d9e9fa0
1a10: 61 31 61 32 61 33 61 34 61 35 61 36 61 37 61 38 a1a2a3a4a5a6a7a8
1a20: 61 39 61 61 61 62 61 63 61 64 61 65 61 66 5d 0a a9aaabacadaeaf].
1a30: 73 65 74 20 69 6e 66 6f 20 5b 62 69 6e 61 72 79 set info [binary
1a40: 20 64 65 63 6f 64 65 20 68 65 78 20 62 30 62 31 decode hex b0b1
1a50: 62 32 62 33 62 34 62 35 62 36 62 37 62 38 62 39 b2b3b4b5b6b7b8b9
1a60: 62 61 62 62 62 63 62 64 62 65 62 66 63 30 63 31 babbbcbdbebfc0c1
1a70: 63 32 63 33 63 34 63 35 63 36 63 37 63 38 63 39 c2c3c4c5c6c7c8c9
1a80: 63 61 63 62 63 63 63 64 63 65 63 66 64 30 64 31 cacbcccdcecfd0d1
1a90: 64 32 64 33 64 34 64 35 64 36 64 37 64 38 64 39 d2d3d4d5d6d7d8d9
1aa0: 64 61 64 62 64 63 64 64 64 65 64 66 65 30 65 31 dadbdcdddedfe0e1
1ab0: 65 32 65 33 65 34 65 35 65 36 65 37 65 38 65 39 e2e3e4e5e6e7e8e9
1ac0: 65 61 65 62 65 63 65 64 65 65 65 66 66 30 66 31 eaebecedeeeff0f1
1ad0: 66 32 66 33 66 34 66 35 66 36 66 37 66 38 66 39 f2f3f4f5f6f7f8f9
1ae0: 66 61 66 62 66 63 66 64 66 65 66 66 5d 0a 73 65 fafbfcfdfeff].se
1af0: 74 20 73 69 7a 65 20 38 32 0a 0a 0a 74 65 73 74 t size 82...test
1b00: 20 48 4b 44 46 5f 52 46 43 5f 36 32 33 34 2d 35 HKDF_RFC_6234-5
1b10: 2e 32 20 7b 41 2e 35 2e 20 20 54 65 73 74 20 43 .2 {A.5. Test C
1b20: 61 73 65 20 35 2c 20 54 65 73 74 20 77 69 74 68 ase 5, Test with
1b30: 20 53 48 41 2d 31 20 61 6e 64 20 6c 6f 6e 67 65 SHA-1 and longe
1b40: 72 20 69 6e 70 75 74 73 2f 6f 75 74 70 75 74 73 r inputs/outputs
1b50: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 } -body {..binar
1b60: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a y encode hex [::
1b70: 74 6c 73 3a 3a 68 6b 64 66 20 2d 64 69 67 65 73 tls::hkdf -diges
1b80: 74 20 24 64 69 67 65 73 74 20 2d 70 61 73 73 77 t $digest -passw
1b90: 6f 72 64 20 24 6b 65 79 20 2d 73 61 6c 74 20 24 ord $key -salt $
1ba0: 73 61 6c 74 20 2d 69 6e 66 6f 20 24 69 6e 66 6f salt -info $info
1bb0: 20 2d 73 69 7a 65 20 24 73 69 7a 65 5d 0a 20 20 -size $size].
1bc0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 62 64 } -result {0bd
1bd0: 37 37 30 61 37 34 64 31 31 36 30 66 37 63 39 66 770a74d1160f7c9f
1be0: 31 32 63 64 35 39 31 32 61 30 36 65 62 66 66 36 12cd5912a06ebff6
1bf0: 61 64 63 61 65 38 39 39 64 39 32 31 39 31 66 65 adcae899d92191fe
1c00: 34 33 30 35 36 37 33 62 61 32 66 66 65 38 66 61 4305673ba2ffe8fa
1c10: 33 66 31 61 34 65 35 61 64 37 39 66 33 66 33 33 3f1a4e5ad79f3f33
1c20: 34 62 33 62 32 30 32 62 32 31 37 33 63 34 38 36 4b3b202b2173c486
1c30: 65 61 33 37 63 65 33 64 33 39 37 65 64 30 33 34 ea37ce3d397ed034
1c40: 63 37 66 39 64 66 65 62 31 35 63 35 65 39 32 37 c7f9dfeb15c5e927
1c50: 33 33 36 64 30 34 34 31 66 34 63 34 33 30 30 65 336d0441f4c4300e
1c60: 32 63 66 66 30 64 30 39 30 30 62 35 32 64 33 62 2cff0d0900b52d3b
1c70: 34 7d 0a 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 4}..set key [bin
1c80: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 30 ary decode hex 0
1c90: 62 30 62 30 62 30 62 30 62 30 62 30 62 30 62 30 b0b0b0b0b0b0b0b0
1ca0: 62 30 62 30 62 30 62 30 62 30 62 30 62 30 62 30 b0b0b0b0b0b0b0b0
1cb0: 62 30 62 30 62 30 62 30 62 30 62 5d 0a 73 65 74 b0b0b0b0b0b].set
1cc0: 20 73 61 6c 74 20 22 22 0a 73 65 74 20 69 6e 66 salt "".set inf
1cd0: 6f 20 22 22 0a 73 65 74 20 73 69 7a 65 20 34 32 o "".set size 42
1ce0: 0a 0a 0a 74 65 73 74 20 48 4b 44 46 5f 52 46 43 ...test HKDF_RFC
1cf0: 5f 36 32 33 34 2d 35 2e 33 20 7b 41 2e 36 2e 20 _6234-5.3 {A.6.
1d00: 20 54 65 73 74 20 43 61 73 65 20 36 2c 20 54 65 Test Case 6, Te
1d10: 73 74 20 77 69 74 68 20 53 48 41 2d 31 20 61 6e st with SHA-1 an
1d20: 64 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 73 61 d zero-length sa
1d30: 6c 74 2f 69 6e 66 6f 7d 20 2d 62 6f 64 79 20 7b lt/info} -body {
1d40: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 ..binary encode
1d50: 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 68 6b 64 66 hex [::tls::hkdf
1d60: 20 2d 64 69 67 65 73 74 20 24 64 69 67 65 73 74 -digest $digest
1d70: 20 2d 70 61 73 73 77 6f 72 64 20 24 6b 65 79 20 -password $key
1d80: 2d 73 61 6c 74 20 24 73 61 6c 74 20 2d 69 6e 66 -salt $salt -inf
1d90: 6f 20 24 69 6e 66 6f 20 2d 73 69 7a 65 20 24 73 o $info -size $s
1da0: 69 7a 65 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 ize]. } -resu
1db0: 6c 74 20 7b 30 61 63 31 61 66 37 30 30 32 62 33 lt {0ac1af7002b3
1dc0: 64 37 36 31 64 31 65 35 35 32 39 38 64 61 39 64 d761d1e55298da9d
1dd0: 30 35 30 36 62 39 61 65 35 32 30 35 37 32 32 30 0506b9ae52057220
1de0: 61 33 30 36 65 30 37 62 36 62 38 37 65 38 64 66 a306e07b6b87e8df
1df0: 32 31 64 30 65 61 30 30 30 33 33 64 65 30 33 39 21d0ea00033de039
1e00: 38 34 64 33 34 39 31 38 7d 0a 0a 73 65 74 20 6b 84d34918}..set k
1e10: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 ey [binary decod
1e20: 65 20 68 65 78 20 30 63 30 63 30 63 30 63 30 63 e hex 0c0c0c0c0c
1e30: 30 63 30 63 30 63 30 63 30 63 30 63 30 63 30 63 0c0c0c0c0c0c0c0c
1e40: 30 63 30 63 30 63 30 63 30 63 30 63 30 63 30 63 0c0c0c0c0c0c0c0c
1e50: 30 63 5d 0a 73 65 74 20 73 61 6c 74 20 22 22 0a 0c].set salt "".
1e60: 73 65 74 20 69 6e 66 6f 20 22 22 0a 73 65 74 20 set info "".set
1e70: 73 69 7a 65 20 34 32 0a 0a 0a 74 65 73 74 20 48 size 42...test H
1e80: 4b 44 46 5f 52 46 43 5f 36 32 33 34 2d 35 2e 34 KDF_RFC_6234-5.4
1e90: 20 7b 41 2e 37 2e 20 20 54 65 73 74 20 43 61 73 {A.7. Test Cas
1ea0: 65 20 37 2c 20 54 65 73 74 20 77 69 74 68 20 53 e 7, Test with S
1eb0: 48 41 2d 31 2c 20 73 61 6c 74 20 6e 6f 74 20 70 HA-1, salt not p
1ec0: 72 6f 76 69 64 65 64 20 28 64 65 66 61 75 6c 74 rovided (default
1ed0: 73 20 74 6f 20 48 61 73 68 4c 65 6e 20 7a 65 72 s to HashLen zer
1ee0: 6f 20 6f 63 74 65 74 73 29 2c 20 7a 65 72 6f 2d o octets), zero-
1ef0: 6c 65 6e 67 74 68 20 69 6e 66 6f 7d 20 2d 62 6f length info} -bo
1f00: 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 dy {..binary enc
1f10: 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a ode hex [::tls::
1f20: 68 6b 64 66 20 2d 64 69 67 65 73 74 20 24 64 69 hkdf -digest $di
1f30: 67 65 73 74 20 2d 70 61 73 73 77 6f 72 64 20 24 gest -password $
1f40: 6b 65 79 20 2d 73 61 6c 74 20 24 73 61 6c 74 20 key -salt $salt
1f50: 2d 69 6e 66 6f 20 24 69 6e 66 6f 20 2d 73 69 7a -info $info -siz
1f60: 65 20 24 73 69 7a 65 5d 0a 20 20 20 20 7d 20 2d e $size]. } -
1f70: 72 65 73 75 6c 74 20 7b 32 63 39 31 31 31 37 32 result {2c911172
1f80: 30 34 64 37 34 35 66 33 35 30 30 64 36 33 36 61 04d745f3500d636a
1f90: 36 32 66 36 34 66 30 61 62 33 62 61 65 35 34 38 62f64f0ab3bae548
1fa0: 61 61 35 33 64 34 32 33 62 30 64 31 66 32 37 65 aa53d423b0d1f27e
1fb0: 62 62 61 36 66 35 65 35 36 37 33 61 30 38 31 64 bba6f5e5673a081d
1fc0: 37 30 63 63 65 37 61 63 66 63 34 38 7d 0a 0a 23 70cce7acfc48}..#
1fd0: 20 53 63 72 79 70 74 20 52 46 43 20 37 39 31 34 Scrypt RFC 7914
1fe0: 0a 0a 0a 74 65 73 74 20 53 63 72 79 70 74 5f 52 ...test Scrypt_R
1ff0: 46 43 5f 37 39 31 34 2d 36 2e 31 20 7b 54 65 73 FC_7914-6.1 {Tes
2000: 74 20 43 61 73 65 20 31 7d 20 2d 62 6f 64 79 20 t Case 1} -body
2010: 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 {..binary encode
2020: 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 73 63 72 hex [::tls::scr
2030: 79 70 74 20 2d 70 61 73 73 77 6f 72 64 20 22 22 ypt -password ""
2040: 20 2d 73 61 6c 74 20 22 22 20 2d 4e 20 31 36 20 -salt "" -N 16
2050: 2d 72 20 31 20 2d 70 20 31 20 2d 73 69 7a 65 20 -r 1 -p 1 -size
2060: 36 34 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 64]. } -resul
2070: 74 20 7b 37 37 64 36 35 37 36 32 33 38 36 35 37 t {77d6576238657
2080: 62 32 30 33 62 31 39 63 61 34 32 63 31 38 61 30 b203b19ca42c18a0
2090: 34 39 37 66 31 36 62 34 38 34 34 65 33 30 37 34 497f16b4844e3074
20a0: 61 65 38 64 66 64 66 66 61 33 66 65 64 65 32 31 ae8dfdffa3fede21
20b0: 34 34 32 66 63 64 30 30 36 39 64 65 64 30 39 34 442fcd0069ded094
20c0: 38 66 38 33 32 36 61 37 35 33 61 30 66 63 38 31 8f8326a753a0fc81
20d0: 66 31 37 65 38 64 33 65 30 66 62 32 65 30 64 33 f17e8d3e0fb2e0d3
20e0: 36 32 38 63 66 33 35 65 32 30 63 33 38 64 31 38 628cf35e20c38d18
20f0: 39 30 36 7d 0a 0a 74 65 73 74 20 53 63 72 79 70 906}..test Scryp
2100: 74 5f 52 46 43 5f 37 39 31 34 2d 36 2e 32 20 7b t_RFC_7914-6.2 {
2110: 54 65 73 74 20 43 61 73 65 20 32 7d 20 2d 62 6f Test Case 2} -bo
2120: 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 dy {..binary enc
2130: 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a ode hex [::tls::
2140: 73 63 72 79 70 74 20 2d 70 61 73 73 77 6f 72 64 scrypt -password
2150: 20 22 70 61 73 73 77 6f 72 64 22 20 2d 73 61 6c "password" -sal
2160: 74 20 22 4e 61 43 6c 22 20 2d 4e 20 31 30 32 34 t "NaCl" -N 1024
2170: 20 2d 72 20 38 20 2d 70 20 31 36 20 2d 73 69 7a -r 8 -p 16 -siz
2180: 65 20 36 34 5d 0a 20 20 20 20 7d 20 2d 72 65 73 e 64]. } -res
2190: 75 6c 74 20 7b 66 64 62 61 62 65 31 63 39 64 33 ult {fdbabe1c9d3
21a0: 34 37 32 30 30 37 38 35 36 65 37 31 39 30 64 30 472007856e7190d0
21b0: 31 65 39 66 65 37 63 36 61 64 37 63 62 63 38 32 1e9fe7c6ad7cbc82
21c0: 33 37 38 33 30 65 37 37 33 37 36 36 33 34 62 33 37830e77376634b3
21d0: 37 33 31 36 32 32 65 61 66 33 30 64 39 32 65 32 731622eaf30d92e2
21e0: 32 61 33 38 38 36 66 66 31 30 39 32 37 39 64 39 2a3886ff109279d9
21f0: 38 33 30 64 61 63 37 32 37 61 66 62 39 34 61 38 830dac727afb94a8
2200: 33 65 65 36 64 38 33 36 30 63 62 64 66 61 32 63 3ee6d8360cbdfa2c
2210: 63 30 36 34 30 7d 0a 0a 74 65 73 74 20 53 63 72 c0640}..test Scr
2220: 79 70 74 5f 52 46 43 5f 37 39 31 34 2d 36 2e 33 ypt_RFC_7914-6.3
2230: 20 7b 54 65 73 74 20 43 61 73 65 20 33 7d 20 2d {Test Case 3} -
2240: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 body {..binary e
2250: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 ncode hex [::tls
2260: 3a 3a 73 63 72 79 70 74 20 2d 70 61 73 73 77 6f ::scrypt -passwo
2270: 72 64 20 22 70 6c 65 61 73 65 6c 65 74 6d 65 69 rd "pleaseletmei
2280: 6e 22 20 2d 73 61 6c 74 20 22 53 6f 64 69 75 6d n" -salt "Sodium
2290: 43 68 6c 6f 72 69 64 65 22 20 2d 4e 20 31 36 33 Chloride" -N 163
22a0: 38 34 20 2d 72 20 38 20 2d 70 20 31 20 2d 73 69 84 -r 8 -p 1 -si
22b0: 7a 65 20 36 34 5d 0a 20 20 20 20 7d 20 2d 72 65 ze 64]. } -re
22c0: 73 75 6c 74 20 7b 37 30 32 33 62 64 63 62 33 61 sult {7023bdcb3a
22d0: 66 64 37 33 34 38 34 36 31 63 30 36 63 64 38 31 fd7348461c06cd81
22e0: 66 64 33 38 65 62 66 64 61 38 66 62 62 61 39 30 fd38ebfda8fbba90
22f0: 34 66 38 65 33 65 61 39 62 35 34 33 66 36 35 34 4f8e3ea9b543f654
2300: 35 64 61 31 66 32 64 35 34 33 32 39 35 35 36 31 5da1f2d543295561
2310: 33 66 30 66 63 66 36 32 64 34 39 37 30 35 32 34 3f0fcf62d4970524
2320: 32 61 39 61 66 39 65 36 31 65 38 35 64 63 30 64 2a9af9e61e85dc0d
2330: 36 35 31 65 34 30 64 66 63 66 30 31 37 62 34 35 651e40dfcf017b45
2340: 35 37 35 38 38 37 7d 0a 0a 74 65 73 74 20 53 63 575887}..test Sc
2350: 72 79 70 74 5f 52 46 43 5f 37 39 31 34 2d 36 2e rypt_RFC_7914-6.
2360: 34 20 7b 54 65 73 74 20 43 61 73 65 20 34 7d 20 4 {Test Case 4}
2370: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 -body {..binary
2380: 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c encode hex [::tl
2390: 73 3a 3a 73 63 72 79 70 74 20 2d 70 61 73 73 77 s::scrypt -passw
23a0: 6f 72 64 20 22 70 6c 65 61 73 65 6c 65 74 6d 65 ord "pleaseletme
23b0: 69 6e 22 20 2d 73 61 6c 74 20 22 53 6f 64 69 75 in" -salt "Sodiu
23c0: 6d 43 68 6c 6f 72 69 64 65 22 20 2d 4e 20 31 30 mChloride" -N 10
23d0: 34 38 35 37 36 20 2d 72 20 38 20 2d 70 20 31 20 48576 -r 8 -p 1
23e0: 2d 73 69 7a 65 20 36 34 5d 0a 20 20 20 20 7d 20 -size 64]. }
23f0: 2d 72 65 73 75 6c 74 20 7b 32 31 30 31 63 62 39 -result {2101cb9
2400: 62 36 61 35 31 31 61 61 65 61 64 64 62 62 65 30 b6a511aaeaddbbe0
2410: 39 63 66 37 30 66 38 38 31 65 63 35 36 38 64 35 9cf70f881ec568d5
2420: 37 34 61 32 66 66 64 34 64 61 62 65 35 65 65 39 74a2ffd4dabe5ee9
2430: 38 32 30 61 64 61 61 34 37 38 65 35 36 66 64 38 820adaa478e56fd8
2440: 66 34 62 61 35 64 30 39 66 66 61 31 63 36 64 39 f4ba5d09ffa1c6d9
2450: 32 37 63 34 30 66 34 63 33 33 37 33 30 34 30 34 27c40f4c33730404
2460: 39 65 38 61 39 35 32 66 62 63 62 66 34 35 63 36 9e8a952fbcbf45c6
2470: 66 61 37 37 61 34 31 61 34 7d 0a 0a 23 20 43 6c fa77a41a4}..# Cl
2480: 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a eanup.::tcltest:
2490: 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72 65 :cleanupTests.re
24a0: 74 75 72 6e 0a turn.