Index: generic/tlsDigest.c ================================================================== --- generic/tlsDigest.c +++ generic/tlsDigest.c @@ -30,10 +30,11 @@ #define HEX_FORMAT 0x02 #define IS_XOF 0x08 #define TYPE_MD 0x10 #define TYPE_HMAC 0x20 #define TYPE_CMAC 0x40 +#define TYPE_MAC 0x80 /* * This structure defines the per-instance state of a digest operation. */ typedef struct DigestState { @@ -980,11 +981,11 @@ int data_len; DigestState *statePtr; /* Get data */ data = Tcl_GetByteArrayFromObj(dataObj, &data_len); - if (data == NULL || data_len == 0) { + if (data == NULL) { Tcl_SetResult(interp, "No data", NULL); return TCL_ERROR; } /* Create state data structure */ @@ -1139,11 +1140,11 @@ } } /* Get options */ for (idx = start; idx < objc; idx++) { - char *opt = Tcl_GetStringFromObj(objv[idx], NULL); + *opt = Tcl_GetStringFromObj(objv[idx], NULL); if (opt[0] != '-') { break; } Index: generic/tlsInfo.c ================================================================== --- generic/tlsInfo.c +++ generic/tlsInfo.c @@ -40,16 +40,13 @@ *------------------------------------------------------------------- */ void NamesCallback(const OBJ_NAME *obj, void *arg) { Tcl_Obj *objPtr = (Tcl_Obj *) arg; - /* Fields: (int) type and alias, (const char*) name and data */ - if (1 || !obj->alias) { - /* Filter out signed digests (a.k.a signature algorithms) */ - if (strstr(obj->name, "rsa") == NULL && strstr(obj->name, "RSA") == NULL) { - Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewStringObj(obj->name,-1)); - } + /* Fields: (int) type and alias, (const char*) name (alias from) and data (alias to) */ + if (strstr(obj->name, "rsa") == NULL && strstr(obj->name, "RSA") == NULL) { + Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewStringObj(obj->name,-1)); } } /*******************************************************************/ Index: tests/digest.csv ================================================================== --- tests/digest.csv +++ tests/digest.csv @@ -13,61 +13,61 @@ command,"set test_file ""md_data.dat""",,,,,,,,, command,"set test_alt_file ""md_alt_data.dat""",,,,,,,,, command,"set test_key ""Example key""",,,,,,,,, command,::tcltest::makeFile $test_data $test_file,,,,,,,,, ,,,,,,,,,, -command,# Test digest short-cut commands,,,,,,,,, +command,# Test short-cut commands,,,,,,,,, Digest Cmds,md4 cmd,,,::tls::md4 $test_data,,,793399f792eca2752c6af3234ba70858,,, Digest Cmds,md5 cmd,,,::tls::md5 $test_data,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Cmds,sha1 cmd,,,::tls::sha1 $test_data,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Cmds,sha256 cmd,,,::tls::sha256 $test_data,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Cmds,sha512 cmd,,,::tls::sha512 $test_data,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, ,,,,,,,,,, -command,# Test digest command for read channel,,,,,,,,, +command,# Test MD command for read channel,,,,,,,,, Digest Chan Read,md4,,,digest_read_chan ::tls::md $test_file -digest md4,,,793399f792eca2752c6af3234ba70858,,, Digest Chan Read,md5,,,digest_read_chan ::tls::md $test_file -digest md5,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Chan Read,sha1,,,digest_read_chan ::tls::md $test_file -digest sha1,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Chan Read,sha256,,,digest_read_chan ::tls::md $test_file -digest sha256,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Chan Read,sha512,,,digest_read_chan ::tls::md $test_file -digest sha512,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, Digest Chan Read,md5 bin,,,binary encode hex [digest_read_chan ::tls::md $test_file -bin -digest md5],,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Chan Read,md5 hex,,,digest_read_chan ::tls::md $test_file -hex -digest md5,,,962bf0803b4232ec23bd8427bb94ea09,,, ,,,,,,,,,, -command,# Test digest command for write channel,,,,,,,,, +command,# Test MD command for write channel,,,,,,,,, Digest Chan Write,md4,,,digest_write_chan ::tls::md $test_alt_file $test_data -digest md4,,,793399f792eca2752c6af3234ba70858,,, Digest Chan Write,md5,,,digest_write_chan ::tls::md $test_alt_file $test_data -digest md5,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Chan Write,sha1,,,digest_write_chan ::tls::md $test_alt_file $test_data -digest sha1,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Chan Write,sha256,,,digest_write_chan ::tls::md $test_alt_file $test_data -digest sha256,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Chan Write,sha512,,,digest_write_chan ::tls::md $test_alt_file $test_data -digest sha512,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, Digest Chan Write,md5 bin,,,binary encode hex [digest_write_chan ::tls::md $test_alt_file $test_data -bin -digest md5],,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Chan Write,md5 hex,,,digest_write_chan ::tls::md $test_alt_file $test_data -hex -digest md5,,,962bf0803b4232ec23bd8427bb94ea09,,, ,,,,,,,,,, -command,# Test digest command for object command,,,,,,,,, +command,# Test MD command for object command,,,,,,,,, Digest Command,md4,,,digest_accumulate $test_data ::tls::md -digest md4,,,793399f792eca2752c6af3234ba70858,,, Digest Command,md5,,,digest_accumulate $test_data ::tls::md -digest md5,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Command,sha1,,,digest_accumulate $test_data ::tls::md -digest sha1,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Command,sha256,,,digest_accumulate $test_data ::tls::md -digest sha256,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Command,sha512,,,digest_accumulate $test_data ::tls::md -digest sha512,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, Digest Command,md5 bin,,,binary encode hex [digest_accumulate $test_data ::tls::md -digest md5 -bin],,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Command,md5 hex,,,digest_accumulate $test_data ::tls::md -digest md5 -hex,,,962bf0803b4232ec23bd8427bb94ea09,,, ,,,,,,,,,, -command,# Test digest command for data shortcut,,,,,,,,, +command,# Test MD command for data shortcut,,,,,,,,, Digest Data,md4,,,::tls::md md4 $test_data,,,793399f792eca2752c6af3234ba70858,,, Digest Data,md5,,,::tls::md md5 $test_data,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Data,sha1,,,::tls::md sha1 $test_data,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Data,sha256,,,::tls::md sha256 $test_data,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Data,sha512,,,::tls::md sha512 $test_data,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, ,,,,,,,,,, -command,# Test digest command for data,,,,,,,,, +command,# Test MD command for data,,,,,,,,, Digest Data,md4,,,::tls::md -digest md4 -data $test_data,,,793399f792eca2752c6af3234ba70858,,, Digest Data,md5,,,::tls::md -digest md5 -data $test_data,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Data,sha1,,,::tls::md -digest sha1 -data $test_data,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest Data,sha256,,,::tls::md -digest sha256 -data $test_data,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest Data,sha512,,,::tls::md -digest sha512 -data $test_data,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, Digest Data,md5 bin,,,binary encode hex [::tls::md -digest md5 -data $test_data -bin],,,962bf0803b4232ec23bd8427bb94ea09,,, Digest Data,md5 hex,,,::tls::md -digest md5 -data $test_data -hex,,,962bf0803b4232ec23bd8427bb94ea09,,, ,,,,,,,,,, -command,# Test digest command for file,,,,,,,,, +command,# Test MD command for file,,,,,,,,, Digest File,md4,,,::tls::md -digest md4 -file $test_file,,,793399f792eca2752c6af3234ba70858,,, Digest File,md5,,,::tls::md -digest md5 -file $test_file,,,962bf0803b4232ec23bd8427bb94ea09,,, Digest File,sha1,,,::tls::md -digest sha1 -file $test_file,,,4fe03b7f2568551dfafb98ca6004e65c4b71aa7d,,, Digest File,sha256,,,::tls::md -digest sha256 -file $test_file,,,9d3578fc138205cf0ee4b4cef35fe101bb4ecac7b1614c18e6fa48b5c7f95e19,,, Digest File,sha512,,,::tls::md -digest sha512 -file $test_file,,,d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1,,, @@ -106,19 +106,20 @@ ,,,,,,,,,, command,# Test MAC command,,,,,,,,, MAC,HMAC,new_api,,::tls::mac -digest sha256 -mac hmac -key $test_key -data $test_data,,,498ef5ef71424f81da7499b2eeae1d0a348dd40b841ea27bdde494f6bc9046ff,,, MAC,CMAC,new_api,,::tls::mac -cipher $test_cipher -digest sha256 -mac cmac -key $test_key -data $test_data,,,498ef5ef71424f81da7499b2eeae1d0a348dd40b841ea27bdde494f6bc9046ff,,, ,,,,,,,,,, -command,# Digest Error Cases,,,,,,,,, +command,# MD Error Cases,,,,,,,,, Digest 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 Digest 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 Digest Errors,Invalid digest,,,::tls::md bogus data,,,"Invalid digest ""bogus""",,,1 Digest Errors,Invalid digest Arg,,,::tls::md -digest bogus -data data,,,"Invalid digest ""bogus""",,,1 Digest Errors,No digest,,,::tls::md -hex -data value,,,No digest specified,,,1 Digest Errors,Invalid option,,,::tls::md -digest sha256 -bogus value,,,"bad option ""-bogus"": must be -bin, -channel, -cipher, -command, -data, -digest, -file, -filename, -hex, -key, or -mac",,,1 Digest Errors,Invalid file,,,::tls::md -digest sha256 -file bogus,,,"couldn't open ""bogus"": no such file or directory",,,1 Digest Errors,Invalid channel,,,::tls::md -digest sha256 -channel bogus,,,"can not find channel named ""bogus""",,,1 +Digest Errors,No operation,,,::tls::md -digest sha256 -bin,,,"No operation specified: Use -channel, -command, -data, or -file option",,,1 ,,,,,,,,,, command,# CMAC Error Cases,,,,,,,,, CMAC Errors,Too few args,,,::tls::cmac,,,"wrong # args: should be ""::tls::cmac ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]""",,,1 CMAC Errors,No cipher,,,::tls::cmac -hex -data value,,,No cipher specified,,,1 CMAC Errors,No key,,,::tls::cmac -cipher $test_cipher -data value,,,No key specified,,,1 @@ -129,93 +130,126 @@ HMAC Errors,No digest,,,::tls::hmac -hex -data value,,,No digest specified,,,1 HMAC Errors,No key,,,::tls::hmac -digest sha256 -data value,,,No key specified,,,1 ,,,,,,,,,, command,# MAC Error Cases,,,,,,,,, MAC Errors,Too few args,new_api,,::tls::mmac,,,"wrong # args: should be ""::tls::mac ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]""",,,1 +MAC Errors,No mac,new_api,,::tls::mac -hex -data value,,,No MAC specified,,,1 MAC Errors,No key,new_api,,::tls::mac -digest sha256 -data value,,,No key specified,,,1 +MAC Errors,Too many args,new_api,,::tls::mac too many command line args to pass the test without an error or failing,,,"wrong # args: should be ""::tls::mac ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]""",,,1 +,,,,,,,,,, +command,# RFC 1321 Message Digest 5,,,,,,,,, +RFC1321-MD5,TC1,,,"::tls::md -digest md5 -data """"",,,d41d8cd98f00b204e9800998ecf8427e,,, +RFC1321-MD5,TC2,,,"::tls::md -digest md5 -data ""a""",,,0cc175b9c0f1b6a831c399e269772661,,, +RFC1321-MD5,TC3,,,"::tls::md -digest md5 -data ""abc""",,,900150983cd24fb0d6963f7d28e17f72,,, +RFC1321-MD5,TC4,,,"::tls::md -digest md5 -data ""message digest""",,,f96b697d7cb7938d525a2f31aaf161d0,,, +RFC1321-MD5,TC5,,,"::tls::md -digest md5 -data ""abcdefghijklmnopqrstuvwxyz""",,,c3fcd3d76192e4007dfb496cca67e13b,,, +RFC1321-MD5,TC6,,,"::tls::md -digest md5 -data ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789""",,,d174ab98d277d9f5a5611c2c9f419d9f,,, +RFC1321-MD5,TC7,,,"::tls::md -digest md5 -data [string repeat ""1234567890"" 8]",,,57edf4a22be3c955ac49da2e2107b67a,,, +,,,,,,,,,, +command,# RFC 6234 SHA1,,,,,,,,, +RFC6234-MD-SHA1,TC1,,,"::tls::md -digest sha1 -data ""abc""",,,a9993e364706816aba3e25717850c26c9cd0d89d,,, +RFC6234-MD-SHA1,TC2_1,,,"::tls::md -digest sha1 -data ""abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq""",,,84983e441c3bd26ebaae4aa1f95129e5e54670f1,,, +RFC6234-MD-SHA1,TC3,,,"::tls::md -digest sha1 -data [string repeat ""a"" 1000000]",,,34aa973cd4c4daa4f61eeb2bdbad27316534016f,,, +RFC6234-MD-SHA1,TC4,,,"::tls::md -digest sha1 -data [string repeat ""01234567"" 80]",,,dea356a2cddd90c7a7ecedc5ebb563934f460452,,, +RFC6234-MD-SHA1,TC6,,,"::tls::md -digest sha1 -data ""\x5e""",,,5e6f80a34a9798cafc6a5db96cc57ba4c4db59c2,,, +RFC6234-MD-SHA1,TC8_1,,,"::tls::md -digest sha1 -data ""\x9a\x7d\xfd\xf1\xec\xea\xd0\x6e\xd6\x46\xaa\x55\xfe\x75\x71\x46""",,,82abff6605dbe1c17def12a394fa22a82b544a35,,, +RFC6234-MD-SHA1,TC10_1,,,"::tls::md -digest sha1 -data ""\xf7\x8f\x92\x14\x1b\xcd\x17\x0a\xe8\x9b\x4f\xba\x15\xa1\xd5\x9f\x3f\xd8\x4d\x22\x3c\x92\x51\xbd\xac\xbb\xae\x61\xd0\x5e\xd1\x15\xa0\x6a\x7c\xe1\x17\xb7\xbe\xea\xd2\x44\x21\xde\xd9\xc3\x25\x92\xbd\x57\xed\xea\xe3\x9c\x39\xfa\x1f\xe8\x94\x6a\x84\xd0\xcf\x1f\x7b\xee\xad\x17\x13\xe2\xe0\x95\x98\x97\x34\x7f\x67\xc8\x0b\x04\x00\xc2\x09\x81\x5d\x6b\x10\xa6\x83\x83\x6f\xd5\x56\x2a\x56\xca\xb1\xa2\x8e\x81\xb6\x57\x66\x54\x63\x1c\xf1\x65\x66\xb8\x6e\x3b\x33\xa1\x08\xb0\x53\x07\xc0\x0a\xff\x14\xa7\x68\xed\x73\x50\x60\x6a\x0f\x85\xe6\xa9\x1d\x39\x6f\x5b\x5c\xbe\x57\x7f\x9b\x38\x80\x7c\x7d\x52\x3d\x6d\x79\x2f\x6e\xbc\x24\xa4\xec\xf2\xb3\xa4\x27\xcd\xbb\xfb""",,,cb0082c8f197d260991ba6a460e76e202bad27b3,,, +,,,,,,,,,, +command,# RFC 6234 SHA256,,,,,,,,, +RFC6234-MD-SHA256,TC1,,,"::tls::md -digest sha256 -data ""abc""",,,ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad,,, +RFC6234-MD-SHA256,TC2_1,,,"::tls::md -digest sha256 -data ""abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq""",,,248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1,,, +RFC6234-MD-SHA256,TC3,,,"::tls::md -digest sha256 -data [string repeat ""a"" 1000000]",,,cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0,,, +RFC6234-MD-SHA256,TC4,,,"::tls::md -digest sha256 -data [string repeat ""01234567"" 80]",,,594847328451bdfa85056225462cc1d867d877fb388df0ce35f25ab5562bfbb5,,, +RFC6234-MD-SHA256,TC6,,,"::tls::md -digest sha256 -data ""\x19""",,,68aa2e2ee5dff96e3355e6c7ee373e3d6a4e17f75f9518d843709c0c9bc3e3d4,,, +RFC6234-MD-SHA256,TC8_256,,,"::tls::md -digest sha256 -data ""\xe3\xd7\x25\x70\xdc\xdd\x78\x7c\xe3\x88\x7a\xb2\xcd\x68\x46\x52""",,,175ee69b02ba9b58e2b0a5fd13819cea573f3940a94f825128cf4209beabb4e8,,, +RFC6234-MD-SHA256,TC10_256,,,"::tls::md -digest sha256 -data ""\x83\x26\x75\x4e\x22\x77\x37\x2f\x4f\xc1\x2b\x20\x52\x7a\xfe\xf0\x4d\x8a\x05\x69\x71\xb1\x1a\xd5\x71\x23\xa7\xc1\x37\x76\x00\x00\xd7\xbe\xf6\xf3\xc1\xf7\xa9\x08\x3a\xa3\x9d\x81\x0d\xb3\x10\x77\x7d\xab\x8b\x1e\x7f\x02\xb8\x4a\x26\xc7\x73\x32\x5f\x8b\x23\x74\xde\x7a\x4b\x5a\x58\xcb\x5c\x5c\xf3\x5b\xce\xe6\xfb\x94\x6e\x5b\xd6\x94\xfa\x59\x3a\x8b\xeb\x3f\x9d\x65\x92\xec\xed\xaa\x66\xca\x82\xa2\x9d\x0c\x51\xbc\xf9\x33\x62\x30\xe5\xd7\x84\xe4\xc0\xa4\x3f\x8d\x79\xa3\x0a\x16\x5c\xba\xbe\x45\x2b\x77\x4b\x9c\x71\x09\xa9\x7d\x13\x8f\x12\x92\x28\x96\x6f\x6c\x0a\xdc\x10\x6a\xad\x5a\x9f\xdd\x30\x82\x57\x69\xb2\xc6\x71\xaf\x67\x59\xdf\x28\xeb\x39\x3d\x54\xd6""",,,97dbca7df46d62c8a422c941dd7e835b8ad3361763f7e9b2d95f4f0da6e1ccbc,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #1,,,,,,,,, command,"set key [binary decode hex [string repeat ""0b"" 20]]",,,,,,,,, command,"set data ""Hi There""",,,,,,,,, -RFC4231 TC1,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22,,, -RFC4231 TC1,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7,,, -RFC4231 TC1,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6,,, -RFC4231 TC1,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854,,, +RFC4231 HMAC TC1,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22,,, +RFC4231 HMAC TC1,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7,,, +RFC4231 HMAC TC1,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6,,, +RFC4231 HMAC TC1,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #2 - Test with a key shorter than the length of the HMAC output.,,,,,,,,, command,"set key ""Jefe""",,,,,,,,, command,"set data ""what do ya want for nothing?""",,,,,,,,, -RFC4231 TC2,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44,,, -RFC4231 TC2,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843,,, -RFC4231 TC2,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649,,, -RFC4231 TC2,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737,,, +RFC4231 HMAC TC2,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44,,, +RFC4231 HMAC TC2,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843,,, +RFC4231 HMAC TC2,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649,,, +RFC4231 HMAC TC2,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #3 - Test with a combined length of key and data that is larger than 64 bytes (= block-size of SHA-224 and SHA-256).,,,,,,,,, command,"set key [binary decode hex [string repeat ""aa"" 20]]",,,,,,,,, command,"set data [binary decode hex [string repeat ""dd"" 50]]",,,,,,,,, -RFC4231 TC3,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea,,, -RFC4231 TC3,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe,,, -RFC4231 TC3,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27,,, -RFC4231 TC3,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb,,, +RFC4231 HMAC TC3,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea,,, +RFC4231 HMAC TC3,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe,,, +RFC4231 HMAC TC3,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27,,, +RFC4231 HMAC TC3,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #4 - Test with a combined length of key and data that is larger than 64 bytes (= block-size of SHA-224 and SHA-256).,,,,,,,,, command,"set key [binary decode hex ""0102030405060708090a0b0c0d0e0f10111213141516171819""]",,,,,,,,, command,"set data [binary decode hex [string repeat ""cd"" 50]]",,,,,,,,, -RFC4231 TC4,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a,,, -RFC4231 TC4,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b,,, -RFC4231 TC4,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb,,, -RFC4231 TC4,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd,,, +RFC4231 HMAC TC4,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a,,, +RFC4231 HMAC TC4,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b,,, +RFC4231 HMAC TC4,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb,,, +RFC4231 HMAC TC4,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #5 - Test with a truncation of output to 128 bits.,,,,,,,,, command,"set key [binary decode hex [string repeat ""0c"" 20]]",,,,,,,,, command,"set data ""Test With Truncation""",,,,,,,,, -RFC4231 TC5,sha224,,,string range [::tls::hmac -digest sha224 -key $key -data $data] 0 31,,,0e2aea68a90c8d37c988bcdb9fca6fa8,,, -RFC4231 TC5,sha256,,,string range [::tls::hmac -digest sha256 -key $key -data $data] 0 31,,,a3b6167473100ee06e0c796c2955552b,,, -RFC4231 TC5,sha384,,,string range [::tls::hmac -digest sha384 -key $key -data $data] 0 31,,,3abf34c3503b2a23a46efc619baef897,,, -RFC4231 TC5,sha512,,,string range [::tls::hmac -digest sha512 -key $key -data $data] 0 31,,,415fad6271580a531d4179bc891d87a6,,, +RFC4231 HMAC TC5,sha224,,,string range [::tls::hmac -digest sha224 -key $key -data $data] 0 31,,,0e2aea68a90c8d37c988bcdb9fca6fa8,,, +RFC4231 HMAC TC5,sha256,,,string range [::tls::hmac -digest sha256 -key $key -data $data] 0 31,,,a3b6167473100ee06e0c796c2955552b,,, +RFC4231 HMAC TC5,sha384,,,string range [::tls::hmac -digest sha384 -key $key -data $data] 0 31,,,3abf34c3503b2a23a46efc619baef897,,, +RFC4231 HMAC TC5,sha512,,,string range [::tls::hmac -digest sha512 -key $key -data $data] 0 31,,,415fad6271580a531d4179bc891d87a6,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #6 - Test with a key larger than 128 bytes (= block-size of SHA-384 and SHA-512).,,,,,,,,, command,"set key [binary decode hex [string repeat ""aa"" 131]]",,,,,,,,, command,"set data ""Test Using Larger Than Block-Size Key - Hash Key First""",,,,,,,,, -RFC4231 TC6,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e,,, -RFC4231 TC6,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54,,, -RFC4231 TC6,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952,,, -RFC4231 TC6,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598,,, +RFC4231 HMAC TC6,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e,,, +RFC4231 HMAC TC6,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54,,, +RFC4231 HMAC TC6,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952,,, +RFC4231 HMAC TC6,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598,,, ,,,,,,,,,, command,# RFC 4231 HMAC Examples Test Case #7 - Test with a key and data that is larger than 128 bytes (= block-size of SHA-384 and SHA-512).,,,,,,,,, command,"set key [binary decode hex [string repeat ""aa"" 131]]",,,,,,,,, command,"set data ""This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.""",,,,,,,,, -RFC4231 TC7,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1,,, -RFC4231 TC7,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2,,, -RFC4231 TC7,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e,,, -RFC4231 TC7,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58,,, +RFC4231 HMAC TC7,sha224,,,::tls::hmac -digest sha224 -key $key -data $data,,,3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1,,, +RFC4231 HMAC TC7,sha256,,,::tls::hmac -digest sha256 -key $key -data $data,,,9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2,,, +RFC4231 HMAC TC7,sha384,,,::tls::hmac -digest sha384 -key $key -data $data,,,6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e,,, +RFC4231 HMAC TC7,sha512,,,::tls::hmac -digest sha512 -key $key -data $data,,,e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58,,, ,,,,,,,,,, command,# NIST 800-38b Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication,,,,,,,,, command,# AES-128,,,,,,,,, command,"set key [binary decode hex ""2b7e151628aed2a6abf7158809cf4f3c""]",,,,,,,,, +NIST800-38b-AES128,len=0,,,"::tls::cmac -cipher aes-128-cbc -key $key -data """"",,,bb1d6929e95937287fa37d129b756746,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172a""]",,,,,,,,, NIST800-38b-AES128,len=128,,,::tls::cmac -cipher aes-128-cbc -key $key -data $data,,,070a16b46b4d4144f79bdd9dd04a287c,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411""]",,,,,,,,, NIST800-38b-AES128,len=320,,,::tls::cmac -cipher aes-128-cbc -key $key -data $data,,,dfa66747de9ae63030ca32611497c827,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710""]",,,,,,,,, NIST800-38b-AES128,len=512,,,::tls::cmac -cipher aes-128-cbc -key $key -data $data,,,51f0bebf7e3b9d92fc49741779363cfe,,, ,,,,,,,,,, command,# AES-192,,,,,,,,, command,"set key [binary decode hex ""8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b""]",,,,,,,,, +NIST800-38b-AES-192,len=0,,,"::tls::cmac -cipher aes-192-cbc -key $key -data """"",,,d17ddf46adaacde531cac483de7a9367,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172a""]",,,,,,,,, NIST800-38b-AES-192,len=128,,,::tls::cmac -cipher aes-192-cbc -key $key -data $data,,,9e99a7bf31e710900662f65e617c5184,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411""]",,,,,,,,, NIST800-38b-AES-192,len=320,,,::tls::cmac -cipher aes-192-cbc -key $key -data $data,,,8a1de5be2eb31aad089a82e6ee908b0e,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710""]",,,,,,,,, NIST800-38b-AES-192,len=512,,,::tls::cmac -cipher aes-192-cbc -key $key -data $data,,,a1d5df0eed790f794d77589659f39a11,,, ,,,,,,,,,, command,# AES-256,,,,,,,,, command,"set key [binary decode hex ""603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4""]",,,,,,,,, +NIST800-38b-AES-256,len=0,,,"::tls::cmac -cipher aes-256-cbc -key $key -data """"",,,028962f61b7bf89efc6b551f4667d983,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172a""]",,,,,,,,, NIST800-38b-AES-256,len=128,,,::tls::cmac -cipher aes-256-cbc -key $key -data $data,,,28a7023f452e8f82bd4bf28d8c37c35c,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411""]",,,,,,,,, NIST800-38b-AES-256,len=320,,,::tls::cmac -cipher aes-256-cbc -key $key -data $data,,,aaf3d8f1de5640c232f5b169b9c911e6,,, command,"set data [binary decode hex ""6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710""]",,,,,,,,, NIST800-38b-AES-256,len=512,,,::tls::cmac -cipher aes-256-cbc -key $key -data $data,,,e1992190549f6ed5696a2c056c315410,,, ,,,,,,,,,, command,# Cleanup,,,,,,,,, -command,::tcltest::removeFile $test_file $test_alt_file,,,,,,,,, +command,::tcltest::removeFile $test_file,,,,,,,,, +command,::tcltest::removeFile $test_alt_file,,,,,,,,, Index: tests/digest.test ================================================================== --- tests/digest.test +++ tests/digest.test @@ -41,11 +41,11 @@ set test_file "md_data.dat" set test_alt_file "md_alt_data.dat" set test_key "Example key" ::tcltest::makeFile $test_data $test_file -# Test digest short-cut commands +# Test short-cut commands test Digest_Cmds-1.1 {md4 cmd} -body { ::tls::md4 $test_data } -result {793399f792eca2752c6af3234ba70858} @@ -64,11 +64,11 @@ test Digest_Cmds-1.5 {sha512 cmd} -body { ::tls::sha512 $test_data } -result {d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1} -# Test digest command for read channel +# Test MD command for read channel test Digest_Chan_Read-2.1 {md4} -body { digest_read_chan ::tls::md $test_file -digest md4 } -result {793399f792eca2752c6af3234ba70858} @@ -95,11 +95,11 @@ test Digest_Chan_Read-2.7 {md5 hex} -body { digest_read_chan ::tls::md $test_file -hex -digest md5 } -result {962bf0803b4232ec23bd8427bb94ea09} -# Test digest command for write channel +# Test MD command for write channel test Digest_Chan_Write-3.1 {md4} -body { digest_write_chan ::tls::md $test_alt_file $test_data -digest md4 } -result {793399f792eca2752c6af3234ba70858} @@ -126,11 +126,11 @@ test Digest_Chan_Write-3.7 {md5 hex} -body { digest_write_chan ::tls::md $test_alt_file $test_data -hex -digest md5 } -result {962bf0803b4232ec23bd8427bb94ea09} -# Test digest command for object command +# Test MD command for object command test Digest_Command-4.1 {md4} -body { digest_accumulate $test_data ::tls::md -digest md4 } -result {793399f792eca2752c6af3234ba70858} @@ -157,11 +157,11 @@ test Digest_Command-4.7 {md5 hex} -body { digest_accumulate $test_data ::tls::md -digest md5 -hex } -result {962bf0803b4232ec23bd8427bb94ea09} -# Test digest command for data shortcut +# Test MD command for data shortcut test Digest_Data-5.1 {md4} -body { ::tls::md md4 $test_data } -result {793399f792eca2752c6af3234ba70858} @@ -180,11 +180,11 @@ test Digest_Data-5.5 {sha512} -body { ::tls::md sha512 $test_data } -result {d178e759dc59127071588d2fad173c06238d87e800a6403c0a30daa4faaf05d0e7ce04916afaa6a58a30cbeb597dacb01c62f9fb9d89bab9da630c699e4816f1} -# Test digest command for data +# Test MD command for data test Digest_Data-5.6 {md4} -body { ::tls::md -digest md4 -data $test_data } -result {793399f792eca2752c6af3234ba70858} @@ -210,11 +210,11 @@ test Digest_Data-5.12 {md5 hex} -body { ::tls::md -digest md5 -data $test_data -hex } -result {962bf0803b4232ec23bd8427bb94ea09} -# Test digest command for file +# Test MD command for file test Digest_File-6.1 {md4} -body { ::tls::md -digest md4 -file $test_file } -result {793399f792eca2752c6af3234ba70858} @@ -346,11 +346,11 @@ test MAC-11.2 {CMAC} -constraints {new_api} -body { ::tls::mac -cipher $test_cipher -digest sha256 -mac cmac -key $test_key -data $test_data } -result {498ef5ef71424f81da7499b2eeae1d0a348dd40b841ea27bdde494f6bc9046ff} -# Digest Error Cases +# MD Error Cases test Digest_Errors-12.1 {Too few args} -body { ::tls::md } -result {wrong # args: should be "::tls::md ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]"} -returnCodes {1} @@ -381,10 +381,14 @@ test Digest_Errors-12.8 {Invalid channel} -body { ::tls::md -digest sha256 -channel bogus } -result {can not find channel named "bogus"} -returnCodes {1} +test Digest_Errors-12.9 {No operation} -body { + ::tls::md -digest sha256 -bin + } -result {No operation specified: Use -channel, -command, -data, or -file option} -returnCodes {1} + # CMAC Error Cases test CMAC_Errors-13.1 {Too few args} -body { ::tls::cmac @@ -422,220 +426,334 @@ test MAC_Errors-15.1 {Too few args} -constraints {new_api} -body { ::tls::mmac } -result {wrong # args: should be "::tls::mac ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]"} -returnCodes {1} -test MAC_Errors-15.2 {No key} -constraints {new_api} -body { +test MAC_Errors-15.2 {No mac} -constraints {new_api} -body { + ::tls::mac -hex -data value + } -result {No MAC specified} -returnCodes {1} + +test MAC_Errors-15.3 {No key} -constraints {new_api} -body { ::tls::mac -digest sha256 -data value } -result {No key specified} -returnCodes {1} +test MAC_Errors-15.4 {Too many args} -constraints {new_api} -body { + ::tls::mac too many command line args to pass the test without an error or failing + } -result {wrong # args: should be "::tls::mac ?-bin|-hex? ?-cipher name? ?-digest name? ?-key key? ?-mac name? [-channel chan | -command cmdName | -file filename | ?-data? data]"} -returnCodes {1} + +# RFC 1321 Message Digest 5 + + +test RFC1321-MD5-16.1 {TC1} -body { + ::tls::md -digest md5 -data "" + } -result {d41d8cd98f00b204e9800998ecf8427e} + +test RFC1321-MD5-16.2 {TC2} -body { + ::tls::md -digest md5 -data "a" + } -result {0cc175b9c0f1b6a831c399e269772661} + +test RFC1321-MD5-16.3 {TC3} -body { + ::tls::md -digest md5 -data "abc" + } -result {900150983cd24fb0d6963f7d28e17f72} + +test RFC1321-MD5-16.4 {TC4} -body { + ::tls::md -digest md5 -data "message digest" + } -result {f96b697d7cb7938d525a2f31aaf161d0} + +test RFC1321-MD5-16.5 {TC5} -body { + ::tls::md -digest md5 -data "abcdefghijklmnopqrstuvwxyz" + } -result {c3fcd3d76192e4007dfb496cca67e13b} + +test RFC1321-MD5-16.6 {TC6} -body { + ::tls::md -digest md5 -data "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + } -result {d174ab98d277d9f5a5611c2c9f419d9f} + +test RFC1321-MD5-16.7 {TC7} -body { + ::tls::md -digest md5 -data [string repeat "1234567890" 8] + } -result {57edf4a22be3c955ac49da2e2107b67a} + +# RFC 6234 SHA1 + + +test RFC6234-MD-SHA1-17.1 {TC1} -body { + ::tls::md -digest sha1 -data "abc" + } -result {a9993e364706816aba3e25717850c26c9cd0d89d} + +test RFC6234-MD-SHA1-17.2 {TC2_1} -body { + ::tls::md -digest sha1 -data "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" + } -result {84983e441c3bd26ebaae4aa1f95129e5e54670f1} + +test RFC6234-MD-SHA1-17.3 {TC3} -body { + ::tls::md -digest sha1 -data [string repeat "a" 1000000] + } -result {34aa973cd4c4daa4f61eeb2bdbad27316534016f} + +test RFC6234-MD-SHA1-17.4 {TC4} -body { + ::tls::md -digest sha1 -data [string repeat "01234567" 80] + } -result {dea356a2cddd90c7a7ecedc5ebb563934f460452} + +test RFC6234-MD-SHA1-17.5 {TC6} -body { + ::tls::md -digest sha1 -data "\x5e" + } -result {5e6f80a34a9798cafc6a5db96cc57ba4c4db59c2} + +test RFC6234-MD-SHA1-17.6 {TC8_1} -body { + ::tls::md -digest sha1 -data "\x9a\x7d\xfd\xf1\xec\xea\xd0\x6e\xd6\x46\xaa\x55\xfe\x75\x71\x46" + } -result {82abff6605dbe1c17def12a394fa22a82b544a35} + +test RFC6234-MD-SHA1-17.7 {TC10_1} -body { + ::tls::md -digest sha1 -data "\xf7\x8f\x92\x14\x1b\xcd\x17\x0a\xe8\x9b\x4f\xba\x15\xa1\xd5\x9f\x3f\xd8\x4d\x22\x3c\x92\x51\xbd\xac\xbb\xae\x61\xd0\x5e\xd1\x15\xa0\x6a\x7c\xe1\x17\xb7\xbe\xea\xd2\x44\x21\xde\xd9\xc3\x25\x92\xbd\x57\xed\xea\xe3\x9c\x39\xfa\x1f\xe8\x94\x6a\x84\xd0\xcf\x1f\x7b\xee\xad\x17\x13\xe2\xe0\x95\x98\x97\x34\x7f\x67\xc8\x0b\x04\x00\xc2\x09\x81\x5d\x6b\x10\xa6\x83\x83\x6f\xd5\x56\x2a\x56\xca\xb1\xa2\x8e\x81\xb6\x57\x66\x54\x63\x1c\xf1\x65\x66\xb8\x6e\x3b\x33\xa1\x08\xb0\x53\x07\xc0\x0a\xff\x14\xa7\x68\xed\x73\x50\x60\x6a\x0f\x85\xe6\xa9\x1d\x39\x6f\x5b\x5c\xbe\x57\x7f\x9b\x38\x80\x7c\x7d\x52\x3d\x6d\x79\x2f\x6e\xbc\x24\xa4\xec\xf2\xb3\xa4\x27\xcd\xbb\xfb" + } -result {cb0082c8f197d260991ba6a460e76e202bad27b3} + +# RFC 6234 SHA256 + + +test RFC6234-MD-SHA256-18.1 {TC1} -body { + ::tls::md -digest sha256 -data "abc" + } -result {ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad} + +test RFC6234-MD-SHA256-18.2 {TC2_1} -body { + ::tls::md -digest sha256 -data "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" + } -result {248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1} + +test RFC6234-MD-SHA256-18.3 {TC3} -body { + ::tls::md -digest sha256 -data [string repeat "a" 1000000] + } -result {cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0} + +test RFC6234-MD-SHA256-18.4 {TC4} -body { + ::tls::md -digest sha256 -data [string repeat "01234567" 80] + } -result {594847328451bdfa85056225462cc1d867d877fb388df0ce35f25ab5562bfbb5} + +test RFC6234-MD-SHA256-18.5 {TC6} -body { + ::tls::md -digest sha256 -data "\x19" + } -result {68aa2e2ee5dff96e3355e6c7ee373e3d6a4e17f75f9518d843709c0c9bc3e3d4} + +test RFC6234-MD-SHA256-18.6 {TC8_256} -body { + ::tls::md -digest sha256 -data "\xe3\xd7\x25\x70\xdc\xdd\x78\x7c\xe3\x88\x7a\xb2\xcd\x68\x46\x52" + } -result {175ee69b02ba9b58e2b0a5fd13819cea573f3940a94f825128cf4209beabb4e8} + +test RFC6234-MD-SHA256-18.7 {TC10_256} -body { + ::tls::md -digest sha256 -data "\x83\x26\x75\x4e\x22\x77\x37\x2f\x4f\xc1\x2b\x20\x52\x7a\xfe\xf0\x4d\x8a\x05\x69\x71\xb1\x1a\xd5\x71\x23\xa7\xc1\x37\x76\x00\x00\xd7\xbe\xf6\xf3\xc1\xf7\xa9\x08\x3a\xa3\x9d\x81\x0d\xb3\x10\x77\x7d\xab\x8b\x1e\x7f\x02\xb8\x4a\x26\xc7\x73\x32\x5f\x8b\x23\x74\xde\x7a\x4b\x5a\x58\xcb\x5c\x5c\xf3\x5b\xce\xe6\xfb\x94\x6e\x5b\xd6\x94\xfa\x59\x3a\x8b\xeb\x3f\x9d\x65\x92\xec\xed\xaa\x66\xca\x82\xa2\x9d\x0c\x51\xbc\xf9\x33\x62\x30\xe5\xd7\x84\xe4\xc0\xa4\x3f\x8d\x79\xa3\x0a\x16\x5c\xba\xbe\x45\x2b\x77\x4b\x9c\x71\x09\xa9\x7d\x13\x8f\x12\x92\x28\x96\x6f\x6c\x0a\xdc\x10\x6a\xad\x5a\x9f\xdd\x30\x82\x57\x69\xb2\xc6\x71\xaf\x67\x59\xdf\x28\xeb\x39\x3d\x54\xd6" + } -result {97dbca7df46d62c8a422c941dd7e835b8ad3361763f7e9b2d95f4f0da6e1ccbc} + # RFC 4231 HMAC Examples Test Case #1 set key [binary decode hex [string repeat "0b" 20]] set data "Hi There" -test RFC4231_TC1-16.1 {sha224} -body { +test RFC4231_HMAC_TC1-19.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22} -test RFC4231_TC1-16.2 {sha256} -body { +test RFC4231_HMAC_TC1-19.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7} -test RFC4231_TC1-16.3 {sha384} -body { +test RFC4231_HMAC_TC1-19.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6} -test RFC4231_TC1-16.4 {sha512} -body { +test RFC4231_HMAC_TC1-19.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854} # RFC 4231 HMAC Examples Test Case #2 - Test with a key shorter than the length of the HMAC output. set key "Jefe" set data "what do ya want for nothing?" -test RFC4231_TC2-17.1 {sha224} -body { +test RFC4231_HMAC_TC2-20.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44} -test RFC4231_TC2-17.2 {sha256} -body { +test RFC4231_HMAC_TC2-20.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843} -test RFC4231_TC2-17.3 {sha384} -body { +test RFC4231_HMAC_TC2-20.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649} -test RFC4231_TC2-17.4 {sha512} -body { +test RFC4231_HMAC_TC2-20.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737} # RFC 4231 HMAC Examples Test Case #3 - Test with a combined length of key and data that is larger than 64 bytes (= block-size of SHA-224 and SHA-256). set key [binary decode hex [string repeat "aa" 20]] set data [binary decode hex [string repeat "dd" 50]] -test RFC4231_TC3-18.1 {sha224} -body { +test RFC4231_HMAC_TC3-21.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea} -test RFC4231_TC3-18.2 {sha256} -body { +test RFC4231_HMAC_TC3-21.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe} -test RFC4231_TC3-18.3 {sha384} -body { +test RFC4231_HMAC_TC3-21.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27} -test RFC4231_TC3-18.4 {sha512} -body { +test RFC4231_HMAC_TC3-21.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb} # RFC 4231 HMAC Examples Test Case #4 - Test with a combined length of key and data that is larger than 64 bytes (= block-size of SHA-224 and SHA-256). set key [binary decode hex "0102030405060708090a0b0c0d0e0f10111213141516171819"] set data [binary decode hex [string repeat "cd" 50]] -test RFC4231_TC4-19.1 {sha224} -body { +test RFC4231_HMAC_TC4-22.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a} -test RFC4231_TC4-19.2 {sha256} -body { +test RFC4231_HMAC_TC4-22.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b} -test RFC4231_TC4-19.3 {sha384} -body { +test RFC4231_HMAC_TC4-22.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb} -test RFC4231_TC4-19.4 {sha512} -body { +test RFC4231_HMAC_TC4-22.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd} # RFC 4231 HMAC Examples Test Case #5 - Test with a truncation of output to 128 bits. set key [binary decode hex [string repeat "0c" 20]] set data "Test With Truncation" -test RFC4231_TC5-20.1 {sha224} -body { +test RFC4231_HMAC_TC5-23.1 {sha224} -body { string range [::tls::hmac -digest sha224 -key $key -data $data] 0 31 } -result {0e2aea68a90c8d37c988bcdb9fca6fa8} -test RFC4231_TC5-20.2 {sha256} -body { +test RFC4231_HMAC_TC5-23.2 {sha256} -body { string range [::tls::hmac -digest sha256 -key $key -data $data] 0 31 } -result {a3b6167473100ee06e0c796c2955552b} -test RFC4231_TC5-20.3 {sha384} -body { +test RFC4231_HMAC_TC5-23.3 {sha384} -body { string range [::tls::hmac -digest sha384 -key $key -data $data] 0 31 } -result {3abf34c3503b2a23a46efc619baef897} -test RFC4231_TC5-20.4 {sha512} -body { +test RFC4231_HMAC_TC5-23.4 {sha512} -body { string range [::tls::hmac -digest sha512 -key $key -data $data] 0 31 } -result {415fad6271580a531d4179bc891d87a6} # RFC 4231 HMAC Examples Test Case #6 - Test with a key larger than 128 bytes (= block-size of SHA-384 and SHA-512). set key [binary decode hex [string repeat "aa" 131]] set data "Test Using Larger Than Block-Size Key - Hash Key First" -test RFC4231_TC6-21.1 {sha224} -body { +test RFC4231_HMAC_TC6-24.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e} -test RFC4231_TC6-21.2 {sha256} -body { +test RFC4231_HMAC_TC6-24.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54} -test RFC4231_TC6-21.3 {sha384} -body { +test RFC4231_HMAC_TC6-24.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952} -test RFC4231_TC6-21.4 {sha512} -body { +test RFC4231_HMAC_TC6-24.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598} # RFC 4231 HMAC Examples Test Case #7 - Test with a key and data that is larger than 128 bytes (= block-size of SHA-384 and SHA-512). set key [binary decode hex [string repeat "aa" 131]] set data "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm." -test RFC4231_TC7-22.1 {sha224} -body { +test RFC4231_HMAC_TC7-25.1 {sha224} -body { ::tls::hmac -digest sha224 -key $key -data $data } -result {3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1} -test RFC4231_TC7-22.2 {sha256} -body { +test RFC4231_HMAC_TC7-25.2 {sha256} -body { ::tls::hmac -digest sha256 -key $key -data $data } -result {9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2} -test RFC4231_TC7-22.3 {sha384} -body { +test RFC4231_HMAC_TC7-25.3 {sha384} -body { ::tls::hmac -digest sha384 -key $key -data $data } -result {6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e} -test RFC4231_TC7-22.4 {sha512} -body { +test RFC4231_HMAC_TC7-25.4 {sha512} -body { ::tls::hmac -digest sha512 -key $key -data $data } -result {e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58} # NIST 800-38b Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication # AES-128 set key [binary decode hex "2b7e151628aed2a6abf7158809cf4f3c"] + + +test NIST800-38b-AES128-26.1 {len=0} -body { + ::tls::cmac -cipher aes-128-cbc -key $key -data "" + } -result {bb1d6929e95937287fa37d129b756746} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172a"] - -test NIST800-38b-AES128-23.1 {len=128} -body { +test NIST800-38b-AES128-26.2 {len=128} -body { ::tls::cmac -cipher aes-128-cbc -key $key -data $data } -result {070a16b46b4d4144f79bdd9dd04a287c} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411"] -test NIST800-38b-AES128-23.2 {len=320} -body { +test NIST800-38b-AES128-26.3 {len=320} -body { ::tls::cmac -cipher aes-128-cbc -key $key -data $data } -result {dfa66747de9ae63030ca32611497c827} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710"] -test NIST800-38b-AES128-23.3 {len=512} -body { +test NIST800-38b-AES128-26.4 {len=512} -body { ::tls::cmac -cipher aes-128-cbc -key $key -data $data } -result {51f0bebf7e3b9d92fc49741779363cfe} # AES-192 set key [binary decode hex "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b"] + + +test NIST800-38b-AES-192-27.1 {len=0} -body { + ::tls::cmac -cipher aes-192-cbc -key $key -data "" + } -result {d17ddf46adaacde531cac483de7a9367} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172a"] - -test NIST800-38b-AES-192-24.1 {len=128} -body { +test NIST800-38b-AES-192-27.2 {len=128} -body { ::tls::cmac -cipher aes-192-cbc -key $key -data $data } -result {9e99a7bf31e710900662f65e617c5184} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411"] -test NIST800-38b-AES-192-24.2 {len=320} -body { +test NIST800-38b-AES-192-27.3 {len=320} -body { ::tls::cmac -cipher aes-192-cbc -key $key -data $data } -result {8a1de5be2eb31aad089a82e6ee908b0e} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710"] -test NIST800-38b-AES-192-24.3 {len=512} -body { +test NIST800-38b-AES-192-27.4 {len=512} -body { ::tls::cmac -cipher aes-192-cbc -key $key -data $data } -result {a1d5df0eed790f794d77589659f39a11} # AES-256 set key [binary decode hex "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4"] + + +test NIST800-38b-AES-256-28.1 {len=0} -body { + ::tls::cmac -cipher aes-256-cbc -key $key -data "" + } -result {028962f61b7bf89efc6b551f4667d983} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172a"] - -test NIST800-38b-AES-256-25.1 {len=128} -body { +test NIST800-38b-AES-256-28.2 {len=128} -body { ::tls::cmac -cipher aes-256-cbc -key $key -data $data } -result {28a7023f452e8f82bd4bf28d8c37c35c} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411"] -test NIST800-38b-AES-256-25.2 {len=320} -body { +test NIST800-38b-AES-256-28.3 {len=320} -body { ::tls::cmac -cipher aes-256-cbc -key $key -data $data } -result {aaf3d8f1de5640c232f5b169b9c911e6} set data [binary decode hex "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710"] -test NIST800-38b-AES-256-25.3 {len=512} -body { +test NIST800-38b-AES-256-28.4 {len=512} -body { ::tls::cmac -cipher aes-256-cbc -key $key -data $data } -result {e1992190549f6ed5696a2c056c315410} # Cleanup -::tcltest::removeFile $test_file $test_alt_file +::tcltest::removeFile $test_file +::tcltest::removeFile $test_alt_file # Cleanup ::tcltest::cleanupTests return Index: tests/info.csv ================================================================== --- tests/info.csv +++ tests/info.csv @@ -72,9 +72,11 @@ command,# Test show version,,,,,,,,, Version,All,,,::tls::version,,glob,*,,, Version,OpenSSL,OpenSSL,,::tls::version,,glob,OpenSSL*,,, ,,,,,,,,,, command,# Error Cases,,,,,,,,, -Error Cases,Digests Too many args,,,::tls::digests too many args,,,"wrong # args: should be ""::tls::digests""",,,1 +Error Cases,Cipher Too few args,,,::tls::cipher,,,"wrong # args: should be ""::tls::cipher name""",,,1 +Error Cases,Cipher Too many args,,,::tls::cipher too many args,,,"wrong # args: should be ""::tls::cipher name""",,,1 +Error Cases,Digests Too many args,,,::tls::digests too many args,,,"wrong # args: should be ""::tls::digests ?name?""",,,1 Error Cases,MACs Too many args,,,::tls::macs too many args,,,"wrong # args: should be ""::tls::macs""",,,1 Error Cases,Protocols Too many args,,,::tls::protocols too many args,,,"wrong # args: should be ""::tls::protocols""",,,1 Error Cases,Version Too many args,,,::tls::version too many args,,,"wrong # args: should be ""::tls::version""",,,1 Index: tests/info.test ================================================================== --- tests/info.test +++ tests/info.test @@ -214,23 +214,31 @@ } -match {glob} -result {OpenSSL*} # Error Cases -test Error_Cases-12.1 {Digests Too many args} -body { +test Error_Cases-12.1 {Cipher Too few args} -body { + ::tls::cipher + } -result {wrong # args: should be "::tls::cipher name"} -returnCodes {1} + +test Error_Cases-12.2 {Cipher Too many args} -body { + ::tls::cipher too many args + } -result {wrong # args: should be "::tls::cipher name"} -returnCodes {1} + +test Error_Cases-12.3 {Digests Too many args} -body { ::tls::digests too many args - } -result {wrong # args: should be "::tls::digests"} -returnCodes {1} + } -result {wrong # args: should be "::tls::digests ?name?"} -returnCodes {1} -test Error_Cases-12.2 {MACs Too many args} -body { +test Error_Cases-12.4 {MACs Too many args} -body { ::tls::macs too many args } -result {wrong # args: should be "::tls::macs"} -returnCodes {1} -test Error_Cases-12.3 {Protocols Too many args} -body { +test Error_Cases-12.5 {Protocols Too many args} -body { ::tls::protocols too many args } -result {wrong # args: should be "::tls::protocols"} -returnCodes {1} -test Error_Cases-12.4 {Version Too many args} -body { +test Error_Cases-12.6 {Version Too many args} -body { ::tls::version too many args } -result {wrong # args: should be "::tls::version"} -returnCodes {1} # Cleanup ::tcltest::cleanupTests