Index: tests/digest.csv ================================================================== --- tests/digest.csv +++ tests/digest.csv @@ -33,11 +33,11 @@ set cmd [{*}$args -command dcmd] $cmd update [string range $string 0 20] $cmd update [string range $string 21 end] return [$cmd finalize] } -",,,,,,,, +",,,,,,,,, ,,,,,,,,,, command,"set test_data ""Example string for message digest tests.\n""",,,,,,,,, command,"set test_file ""md_data.dat""",,,,,,,,, command,"set test_alt_file ""md_alt_data.dat""",,,,,,,,, command,"set test_key ""Example key""",,,,,,,,, @@ -107,11 +107,11 @@ MD Errors,Too few args,,,::tls::md,,,"wrong # args: should be ""::tls::md ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]""",,,1 MD Errors,Too many args,,,::tls::md too many command line args to pass the test without an error or failing,,,"wrong # args: should be ""::tls::md ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]""",,,1 MD Errors,Invalid digest,,,::tls::md bogus data,,,"invalid digest ""bogus""",,,1 MD Errors,Invalid digest Arg,,,::tls::md -digest bogus -data data,,,"invalid digest ""bogus""",,,1 MD Errors,No digest,,,::tls::md -hex -data value,,,no digest,,,1 -MD Errors,Invalid option,,,::tls::md -digest sha256 -bogus value,,,"bad option ""-bogus"": must be -bin, -binary, -hex, -hexadecimal, -chan, -channel, -cipher, -command, -data, -digest, -file, -filename, -hash, -key, or -mac",,,1 +MD Errors,Invalid option,,,::tls::md -digest sha256 -bogus value,,,"bad option ""-bogus"": must be -bin, -binary, -hex, -hexadecimal, -chan, -channel, -cipher, -command, -data, -digest, -file, -filename, -hash, -key, -length, -mac, or -size",,,1 MD Errors,Invalid file,,,::tls::md -digest sha256 -file bogus,,,"couldn't open ""bogus"": no such file or directory",,,1 MD Errors,Invalid channel,,,::tls::md -digest sha256 -channel bogus,,,"can not find channel named ""bogus""",,,1 MD Errors,No operation,,,::tls::md -digest sha256 -bin,,,"No operation: Use -channel, -command, -data, or -file option",,,1 ,,,,,,,,,, ,,,,,,,,,, Index: tests/digest.test ================================================================== --- tests/digest.test +++ tests/digest.test @@ -277,11 +277,11 @@ ::tls::md -hex -data value } -result {no digest} -returnCodes {1} test MD_Errors-8.6 {Invalid option} -body { ::tls::md -digest sha256 -bogus value - } -result {bad option "-bogus": must be -bin, -binary, -hex, -hexadecimal, -chan, -channel, -cipher, -command, -data, -digest, -file, -filename, -hash, -key, or -mac} -returnCodes {1} + } -result {bad option "-bogus": must be -bin, -binary, -hex, -hexadecimal, -chan, -channel, -cipher, -command, -data, -digest, -file, -filename, -hash, -key, -length, -mac, or -size} -returnCodes {1} test MD_Errors-8.7 {Invalid file} -body { ::tls::md -digest sha256 -file bogus } -result {couldn't open "bogus": no such file or directory} -returnCodes {1} Index: tests/test_vectors/Hash/SHAKE128.test ================================================================== --- tests/test_vectors/Hash/SHAKE128.test +++ tests/test_vectors/Hash/SHAKE128.test @@ -7,23 +7,23 @@ catch {tls::provider legacy} tcltest::test Hash_SHAKE128-1.1 {SHAKE128} \ -constraints SHAKE128 \ -setup {set data ""} \ - -body {tls::digest -digest SHAKE128 -data $data} \ + -body {tls::digest -digest SHAKE128 -data $data -length 32} \ -match exact -result 7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26 tcltest::test Hash_SHAKE128-1.2 {SHAKE128} \ -constraints SHAKE128 \ -setup {set data "The quick brown fox jumps over the lazy dog"} \ - -body {tls::digest -digest SHAKE128 -data $data} \ + -body {tls::digest -digest SHAKE128 -data $data -length 32} \ -match exact -result f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e tcltest::test Hash_SHAKE128-1.3 {SHAKE128} \ -constraints SHAKE128 \ -setup {set data [binary decode hex [string repeat a3 200]]} \ - -body {tls::digest -digest SHAKE128 -data $data} \ + -body {tls::digest -digest SHAKE128 -data $data -length 32} \ -match exact -result 131ab8d2b594946b9c81333f9bb6e0ce75c3b93104fa3469d3917457385da037 # Cleanup ::tcltest::cleanupTests return Index: tests/test_vectors/Hash/SHAKE128.txt ================================================================== --- tests/test_vectors/Hash/SHAKE128.txt +++ tests/test_vectors/Hash/SHAKE128.txt @@ -5,14 +5,17 @@ [L = 32] Len = 0 Msg = "" MD = 7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26 +Length = 32 Len = 43 Msg = "The quick brown fox jumps over the lazy dog" MD = f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e +Length = 32 Len = 200 Repeat = 200 Msg = a3 MD = 131ab8d2b594946b9c81333f9bb6e0ce75c3b93104fa3469d3917457385da037 +Length = 32 Index: tests/test_vectors/Hash/SHAKE256.test ================================================================== --- tests/test_vectors/Hash/SHAKE256.test +++ tests/test_vectors/Hash/SHAKE256.test @@ -7,23 +7,23 @@ catch {tls::provider legacy} tcltest::test Hash_SHAKE256-1.1 {SHAKE256} \ -constraints SHAKE256 \ -setup {set data ""} \ - -body {tls::digest -digest SHAKE256 -data $data} \ + -body {tls::digest -digest SHAKE256 -data $data -length 64} \ -match exact -result 46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be tcltest::test Hash_SHAKE256-1.2 {SHAKE256} \ -constraints SHAKE256 \ -setup {set data "The quick brown fox jumps over the lazy dog"} \ - -body {tls::digest -digest SHAKE256 -data $data} \ + -body {tls::digest -digest SHAKE256 -data $data -length 64} \ -match exact -result 2f671343d9b2e1604dc9dcf0753e5fe15c7c64a0d283cbbf722d411a0e36f6ca1d01d1369a23539cd80f7c054b6e5daf9c962cad5b8ed5bd11998b40d5734442 tcltest::test Hash_SHAKE256-1.3 {SHAKE256} \ -constraints SHAKE256 \ -setup {set data [binary decode hex [string repeat a3 200]]} \ - -body {tls::digest -digest SHAKE256 -data $data} \ + -body {tls::digest -digest SHAKE256 -data $data -length 64} \ -match exact -result cd8a920ed141aa0407a22d59288652e9d9f1a7ee0c1e7c1ca699424da84a904d2d700caae7396ece96604440577da4f3aa22aeb8857f961c4cd8e06f0ae6610b # Cleanup ::tcltest::cleanupTests return Index: tests/test_vectors/Hash/SHAKE256.txt ================================================================== --- tests/test_vectors/Hash/SHAKE256.txt +++ tests/test_vectors/Hash/SHAKE256.txt @@ -5,14 +5,17 @@ [L = 64] Len = 0 Msg = "" MD = 46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be +Length = 64 Len = 43 Msg = "The quick brown fox jumps over the lazy dog" MD = 2f671343d9b2e1604dc9dcf0753e5fe15c7c64a0d283cbbf722d411a0e36f6ca1d01d1369a23539cd80f7c054b6e5daf9c962cad5b8ed5bd11998b40d5734442 +Length = 64 Len = 200 Repeat = 200 Msg = a3 MD = cd8a920ed141aa0407a22d59288652e9d9f1a7ee0c1e7c1ca699424da84a904d2d700caae7396ece96604440577da4f3aa22aeb8857f961c4cd8e06f0ae6610b +Length = 64 Index: tests/test_vectors/Hash/make_test.tcl ================================================================== --- tests/test_vectors/Hash/make_test.tcl +++ tests/test_vectors/Hash/make_test.tcl @@ -4,11 +4,11 @@ # # Create test case and output to test file # proc do_test {group tail file_num tc digest params} { - array set config [list Msg "" Repeat 1] + array set config [list Msg "" Repeat 1 Length ""] array set config $params # Test info set line [format "tcltest::test %s-%d.%d {%s}" $group $file_num $tc $tail] append line " \\\n\t" @@ -33,13 +33,19 @@ append line [format {-setup {set data [binary decode hex %s]}} $data] } else { append line [format {-setup {set data %s}} $data] } append line " \\\n\t" + + if {$config(Length) ne ""} { + set opts [format " -length %d" $config(Length)] + } else { + set opts "" + } # Test body - append line [format {-body {tls::digest -digest %s -data $data}} $digest] + append line [format {-body {tls::digest -digest %s -data $data%s}} $digest $opts] append line " \\\n\t" # Test cleanup # Test result