Skip to content

Instantly share code, notes, and snippets.

@ocheron
Created January 16, 2019 06:05
Show Gist options
  • Save ocheron/387ae8562ee2ea31ceb82911e6ab70f3 to your computer and use it in GitHub Desktop.
Save ocheron/387ae8562ee2ea31ceb82911e6ab70f3 to your computer and use it in GitHub Desktop.
Additional RSA-PSS test vectors
commit 048b2dbb670f78af5736fd67e69c625e94058a37
Author: Olivier Chéron <olivier.cheron@gmail.com>
Date: Sat Jan 12 14:14:18 2019 +0100
Other RSASSA-PSS examples
diff --git a/tests/KAT_PubKey/PSS.hs b/tests/KAT_PubKey/PSS.hs
index 551ac61..29ada07 100644
--- a/tests/KAT_PubKey/PSS.hs
+++ b/tests/KAT_PubKey/PSS.hs
@@ -268,6 +268,238 @@ vectorsKey3 =
}
]
+-- ==================================
+-- Example 4: A 1027-bit RSA Key Pair
+-- ==================================
+
+rsaKey4 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0x054adb7886447efe6f57e0368f06cf52b0a3370760d161cef126b91be7f89c421b62a6ec1da3c311d75ed50e0ab5fff3fd338acc3aa8a4e77ee26369acb81ba900fa83f5300cf9bb6c53ad1dc8a178b815db4235a9a9da0c06de4e615ea1277ce559e9c108de58c14a81aa77f5a6f8d1335494498848c8b95940740be7bf7c3705
+ , public_e = 0x010001
+ , public_size = 129
+ }
+ , private_d = 0xfa041f8cd9697ceed38ec8caa275523b4dd72b09a301d3541d72f5d31c05cbce2d6983b36183af10690bd46c46131e35789431a556771dd0049b57461bf060c1f68472e8a67c25f357e5b6b4738fa541a730346b4a07649a2dfa806a69c975b6aba64678acc7f5913e89c622f2d8abb1e3e32554e39df94ba60c002e387d9011
+ , private_p = 0x029232336d2838945dba9dd7723f4e624a05f7375b927a87abe6a893a1658fd49f47f6c7b0fa596c65fa68a23f0ab432962d18d4343bd6fd671a5ea8d148413995
+ , private_q = 0x020ef5efe7c5394aed2272f7e81a74f4c02d145894cb1b3cab23a9a0710a2afc7e3329acbb743d01f680c4d02afb4c8fde7e20930811bb2b995788b5e872c20bb1
+ , private_dP = 0x026e7e28010ecf2412d9523ad704647fb4fe9b66b1a681581b0e15553a89b1542828898f27243ebab45ff5e1acb9d4df1b051fbc62824dbc6f6c93261a78b9a759
+ , private_dQ = 0x012ddcc86ef655998c39ddae11718669e5e46cf1495b07e13b1014cd69b3af68304ad2a6b64321e78bf3bbca9bb494e91d451717e2d97564c6549465d0205cf421
+ , private_qinv = 0x010600c4c21847459fe576703e2ebecae8a5094ee63f536bf4ac68d3c13e5e4f12ac5cc10ab6a2d05a199214d1824747d551909636b774c22cac0b837599abcc75
+ }
+
+vectorsKey4 =
+ [
+ -- Example 4.1
+ VectorPSS
+ { message = "\x9f\xb0\x3b\x82\x7c\x82\x17\xd9"
+ , salt = "\xed\x7c\x98\xc9\x5f\x30\x97\x4f\xbe\x4f\xbd\xdc\xf0\xf2\x8d\x60\x21\xc0\xe9\x1d"
+ , signature = "\x03\x23\xd5\xb7\xbf\x20\xba\x45\x39\x28\x9a\xe4\x52\xae\x42\x97\x08\x0f\xef\xf4\x51\x84\x23\xff\x48\x11\xa8\x17\x83\x7e\x7d\x82\xf1\x83\x6c\xdf\xab\x54\x51\x4f\xf0\x88\x7b\xdd\xee\xbf\x40\xbf\x99\xb0\x47\xab\xc3\xec\xfa\x6a\x37\xa3\xef\x00\xf4\xa0\xc4\xa8\x8a\xae\x09\x04\xb7\x45\xc8\x46\xc4\x10\x7e\x87\x97\x72\x3e\x8a\xc8\x10\xd9\xe3\xd9\x5d\xfa\x30\xff\x49\x66\xf4\xd7\x5d\x13\x76\x8d\x20\x85\x7f\x2b\x14\x06\xf2\x64\xcf\xe7\x5e\x27\xd7\x65\x2f\x4b\x5e\xd3\x57\x5f\x28\xa7\x02\xf8\xc4\xed\x9c\xf9\xb2\xd4\x49\x48"
+ }
+ -- Example 4.2
+ , VectorPSS
+ { message = "\x0c\xa2\xad\x77\x79\x7e\xce\x86\xde\x5b\xf7\x68\x75\x0d\xdb\x5e\xd6\xa3\x11\x6a\xd9\x9b\xbd\x17\xed\xf7\xf7\x82\xf0\xdb\x1c\xd0\x5b\x0f\x67\x74\x68\xc5\xea\x42\x0d\xc1\x16\xb1\x0e\x80\xd1\x10\xde\x2b\x04\x61\xea\x14\xa3\x8b\xe6\x86\x20\x39\x2e\x7e\x89\x3c\xb4\xea\x93\x93\xfb\x88\x6c\x20\xff\x79\x06\x42\x30\x5b\xf3\x02\x00\x38\x92\xe5\x4d\xf9\xf6\x67\x50\x9d\xc5\x39\x20\xdf\x58\x3f\x50\xa3\xdd\x61\xab\xb6\xfa\xb7\x5d\x60\x03\x77\xe3\x83\xe6\xac\xa6\x71\x0e\xee\xa2\x71\x56\xe0\x67\x52\xc9\x4c\xe2\x5a\xe9\x9f\xcb\xf8\x59\x2d\xbe\x2d\x7e\x27\x45\x3c\xb4\x4d\xe0\x71\x00\xeb\xb1\xa2\xa1\x98\x11\xa4\x78\xad\xbe\xab\x27\x0f\x94\xe8\xfe\x36\x9d\x90\xb3\xca\x61\x2f\x9f"
+ , salt = "\x22\xd7\x1d\x54\x36\x3a\x42\x17\xaa\x55\x11\x3f\x05\x9b\x33\x84\xe3\xe5\x7e\x44"
+ , signature = "\x04\x9d\x01\x85\x84\x5a\x26\x4d\x28\xfe\xb1\xe6\x9e\xda\xec\x09\x06\x09\xe8\xe4\x6d\x93\xab\xb3\x83\x71\xce\x51\xf4\xaa\x65\xa5\x99\xbd\xaa\xa8\x1d\x24\xfb\xa6\x6a\x08\xa1\x16\xcb\x64\x4f\x3f\x1e\x65\x3d\x95\xc8\x9d\xb8\xbb\xd5\xda\xac\x27\x09\xc8\x98\x40\x00\x17\x84\x10\xa7\xc6\xaa\x86\x67\xdd\xc3\x8c\x74\x1f\x71\x0e\xc8\x66\x5a\xa9\x05\x2b\xe9\x29\xd4\xe3\xb1\x67\x82\xc1\x66\x21\x14\xc5\x41\x4b\xb0\x35\x34\x55\xc3\x92\xfc\x28\xf3\xdb\x59\x05\x4b\x5f\x36\x5c\x49\xe1\xd1\x56\xf8\x76\xee\x10\xcb\x4f\xd7\x05\x98"
+ }
+ -- Example 4.3
+ , VectorPSS
+ { message = "\x28\x80\x62\xaf\xc0\x8f\xcd\xb7\xc5\xf8\x65\x0b\x29\x83\x73\x00\x46\x1d\xd5\x67\x6c\x17\xa2\x0a\x3c\x8f\xb5\x14\x89\x49\xe3\xf7\x3d\x66\xb3\xae\x82\xc7\x24\x0e\x27\xc5\xb3\xec\x43\x28\xee\x7d\x6d\xdf\x6a\x6a\x0c\x9b\x5b\x15\xbc\xda\x19\x6a\x9d\x0c\x76\xb1\x19\xd5\x34\xd8\x5a\xbd\x12\x39\x62\xd5\x83\xb7\x6c\xe9\xd1\x80\xbc\xe1\xca"
+ , salt = "\x4a\xf8\x70\xfb\xc6\x51\x60\x12\xca\x91\x6c\x70\xba\x86\x2a\xc7\xe8\x24\x36\x17"
+ , signature = "\x03\xfb\xc4\x10\xa2\xce\xd5\x95\x00\xfb\x99\xf9\xe2\xaf\x27\x81\xad\xa7\x4e\x13\x14\x56\x24\x60\x27\x82\xe2\x99\x48\x13\xee\xfc\xa0\x51\x9e\xcd\x25\x3b\x85\x5f\xb6\x26\xa9\x0d\x77\x1e\xae\x02\x8b\x0c\x47\xa1\x99\xcb\xd9\xf8\xe3\x26\x97\x34\xaf\x41\x63\x59\x90\x90\x71\x3a\x3f\xa9\x10\xfa\x09\x60\x65\x27\x21\x43\x2b\x97\x10\x36\xa7\x18\x1a\x2b\xc0\xca\xb4\x3b\x0b\x59\x8b\xc6\x21\x74\x61\xd7\xdb\x30\x5f\xf7\xe9\x54\xc5\xb5\xbb\x23\x1c\x39\xe7\x91\xaf\x6b\xcf\xa7\x6b\x14\x7b\x08\x13\x21\xf7\x26\x41\x48\x2a\x2a\xad"
+ }
+ -- Example 4.4
+ , VectorPSS
+ { message = "\x6f\x4f\x9a\xb9\x50\x11\x99\xce\xf5\x5c\x6c\xf4\x08\xfe\x7b\x36\xc5\x57\xc4\x9d\x42\x0a\x47\x63\xd2\x46\x3c\x8a\xd4\x4b\x3c\xfc\x5b\xe2\x74\x2c\x0e\x7d\x9b\x0f\x66\x08\xf0\x8c\x7f\x47\xb6\x93\xee"
+ , salt = "\x40\xd2\xe1\x80\xfa\xe1\xea\xc4\x39\xc1\x90\xb5\x6c\x2c\x0e\x14\xdd\xf9\xa2\x26"
+ , signature = "\x04\x86\x64\x4b\xc6\x6b\xf7\x5d\x28\x33\x5a\x61\x79\xb1\x08\x51\xf4\x3f\x09\xbd\xed\x9f\xac\x1a\xf3\x32\x52\xbb\x99\x53\xba\x42\x98\xcd\x64\x66\xb2\x75\x39\xa7\x0a\xda\xa3\xf8\x9b\x3d\xb3\xc7\x4a\xb6\x35\xd1\x22\xf4\xee\x7c\xe5\x57\xa6\x1e\x59\xb8\x2f\xfb\x78\x66\x30\xe5\xf9\xdb\x53\xc7\x7d\x9a\x0c\x12\xfa\xb5\x95\x8d\x4c\x2c\xe7\xda\xa8\x07\xcd\x89\xba\x2c\xc7\xfc\xd0\x2f\xf4\x70\xca\x67\xb2\x29\xfc\xce\x81\x4c\x85\x2c\x73\xcc\x93\xbe\xa3\x5b\xe6\x84\x59\xce\x47\x8e\x9d\x46\x55\xd1\x21\xc8\x47\x2f\x37\x1d\x4f"
+ }
+ -- Example 4.5
+ , VectorPSS
+ { message = "\xe1\x7d\x20\x38\x5d\x50\x19\x55\x82\x3c\x3f\x66\x62\x54\xc1\xd3\xdd\x36\xad\x51\x68\xb8\xf1\x8d\x28\x6f\xdc\xf6\x7a\x7d\xad\x94\x09\x70\x85\xfa\xb7\xed\x86\xfe\x21\x42\xa2\x87\x71\x71\x79\x97\xef\x1a\x7a\x08\x88\x4e\xfc\x39\x35\x6d\x76\x07\x7a\xaf\x82\x45\x9a\x7f\xad\x45\x84\x88\x75\xf2\x81\x9b\x09\x89\x37\xfe\x92\x3b\xcc\x9d\xc4\x42\xd7\x2d\x75\x4d\x81\x20\x25\x09\x0c\x9b\xc0\x3d\xb3\x08\x0c\x13\x8d\xd6\x3b\x35\x5d\x0b\x4b\x85\xd6\x68\x8a\xc1\x9f\x4d\xe1\x50\x84\xa0\xba\x4e\x37\x3b\x93\xef\x4a\x55\x50\x96\x69\x19\x15\xdc\x23\xc0\x0e\x95\x4c\xde\xb2\x0a\x47\xcd\x55\xd1\x6c\x3d\x86\x81\xd4\x6e\xd7\xf2\xed\x5e\xa4\x27\x95\xbe\x17\xba\xed\x25\xf0\xf4\xd1\x13\xb3\x63\x6a\xdd\xd5\x85\xf1\x6a\x8b\x5a\xec\x0c\x8f\xa9\xc5\xf0\x3c\xbf\x3b\x9b\x73"
+ , salt = "\x24\x97\xdc\x2b\x46\x15\xdf\xae\x5a\x66\x3d\x49\xff\xd5\x6b\xf7\xef\xc1\x13\x04"
+ , signature = "\x02\x2a\x80\x04\x53\x53\x90\x4c\xb3\x0c\xbb\x54\x2d\x7d\x49\x90\x42\x1a\x6e\xec\x16\xa8\x02\x9a\x84\x22\xad\xfd\x22\xd6\xaf\xf8\xc4\xcc\x02\x94\xaf\x11\x0a\x0c\x06\x7e\xc8\x6a\x7d\x36\x41\x34\x45\x9b\xb1\xae\x8f\xf8\x36\xd5\xa8\xa2\x57\x98\x40\x99\x6b\x32\x0b\x19\xf1\x3a\x13\xfa\xd3\x78\xd9\x31\xa6\x56\x25\xda\xe2\x73\x9f\x0c\x53\x67\x0b\x35\xd9\xd3\xcb\xac\x08\xe7\x33\xe4\xec\x2b\x83\xaf\x4b\x91\x96\xd6\x3e\x7c\x4f\xf1\xdd\xea\xe2\xa1\x22\x79\x1a\x12\x5b\xfe\xa8\xde\xb0\xde\x8c\xcf\x1f\x4f\xfa\xf6\xe6\xfb\x0a"
+ }
+ -- Example 4.6
+ , VectorPSS
+ { message = "\xaf\xbc\x19\xd4\x79\x24\x90\x18\xfd\xf4\xe0\x9f\x61\x87\x26\x44\x04\x95\xde\x11\xdd\xee\xe3\x88\x72\xd7\x75\xfc\xea\x74\xa2\x38\x96\xb5\x34\x3c\x9c\x38\xd4\x6a\xf0\xdb\xa2\x24\xd0\x47\x58\x0c\xc6\x0a\x65\xe9\x39\x1c\xf9\xb5\x9b\x36\xa8\x60\x59\x8d\x4e\x82\x16\x72\x2f\x99\x3b\x91\xcf\xae\x87\xbc\x25\x5a\xf8\x9a\x6a\x19\x9b\xca\x4a\x39\x1e\xad\xbc\x3a\x24\x90\x3c\x0b\xd6\x67\x36\x8f\x6b\xe7\x8e\x3f\xea\xbf\xb4\xff\xd4\x63\x12\x27\x63\x74\x0f\xfb\xbe\xfe\xab\x9a\x25\x56\x4b\xc5\xd1\xc2\x4c\x93\xe4\x22\xf7\x50\x73\xe2\xad\x72\xbf\x45\xb1\x0d\xf0\x0b\x52\xa1\x47\x12\x8e\x73\xfe\xe3\x3f\xa3\xf0\x57\x7d\x77\xf8\x0f\xbc\x2d\xf1\xbe\xd3\x13\x29\x0c\x12\x77\x7f\x50"
+ , salt = "\xa3\x34\xdb\x6f\xae\xbf\x11\x08\x1a\x04\xf8\x7c\x2d\x62\x1c\xde\xc7\x93\x0b\x9b"
+ , signature = "\x00\x93\x8d\xcb\x6d\x58\x30\x46\x06\x5f\x69\xc7\x8d\xa7\xa1\xf1\x75\x70\x66\xa7\xfa\x75\x12\x5a\x9d\x29\x29\xf0\xb7\x9a\x60\xb6\x27\xb0\x82\xf1\x1f\x5b\x19\x6f\x28\xeb\x9d\xaa\x6f\x21\xc0\x5e\x51\x40\xf6\xae\xf1\x73\x7d\x20\x23\x07\x5c\x05\xec\xf0\x4a\x02\x8c\x68\x6a\x2a\xb3\xe7\xd5\xa0\x66\x4f\x29\x5c\xe1\x29\x95\xe8\x90\x90\x8b\x6a\xd2\x1f\x08\x39\xeb\x65\xb7\x03\x93\xa7\xb5\xaf\xd9\x87\x1d\xe0\xca\xa0\xce\xde\xc5\xb8\x19\x62\x67\x56\x20\x9d\x13\xab\x1e\x7b\xb9\x54\x6a\x26\xff\x37\xe9\xa5\x1a\xf9\xfd\x56\x2e"
+ }
+ ]
+
+-- ==================================
+-- Example 5: A 1028-bit RSA Key Pair
+-- ==================================
+
+rsaKey5 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0x0d10f661f29940f5ed39aa260966deb47843679d2b6fb25b3de370f3ac7c19916391fd25fb527ebfa6a4b4df45a1759d996c4bb4ebd18828c44fc52d0191871740525f47a4b0cc8da325ed8aa676b0d0f626e0a77f07692170acac8082f42faa7dc7cd123e730e31a87985204cabcbe6670d43a2dd2b2ddef5e05392fc213bc507
+ , public_e = 0x010001
+ , public_size = 129
+ }
+ , private_d = 0x03ce08b104fff396a979bd3e4e46925b6319ddb63acbcfd819f17d16b8077b3a87101ff34b77fe48b8b205a96e9151ba8ecea64d0cce7b23c3e6a6b83058bc49dae816ae736db5a4708e2ad435232b567f9096ce59ff28061e79ab1c02d717e6b23cea6db8eb5192fa7c1eab227dba74621c45601896eef13792c8440beb15aac1
+ , private_p = 0x03f2f331f4142d4f24b43aa10279a89652d4e7537221a1a7b2a25deb551e5de9ac497411c227a94e45f91c2d1c13cc046cf4ce14e32d058734210d44a87ee1b73f
+ , private_q = 0x034f090d73b55803030cf0361a5d8081bfb79f851523feac0a2124d08d4013ff08487771a870d0479dc0686c62f7718dfecf024b17c9267678059171339cc00839
+ , private_dP = 0x02aa663adbf51ab887a018cb426e78bc2fe182dcb2f7bcb50441d17fdf0f06798b5071c6e2f5feb4d54ad8182311c1ef62d4c49f18d1f51f54b2d2cffba4da1be5
+ , private_dQ = 0x02bbe706078b5c0b391512d411db1b199b5a5664b84042ead37fe994ae72b9532dfbfb3e9e6981a0fbb806513141b7c2163fe56c395e4bfaee57e3833f9b918df9
+ , private_qinv = 0x0242b6cd00d30a767aee9a898ead453c8eaea63d500b7d1e00713edae51ce36b23b664df26e63e266ec8f76e6e63ed1ba41eb033b120f7ea5212ae21a98fbc16
+ }
+
+vectorsKey5 =
+ [
+ -- Example 5.1
+ VectorPSS
+ { message = "\x30\xc7\xd5\x57\x45\x8b\x43\x6d\xec\xfd\xc1\x4d\x06\xcb\x7b\x96\xb0\x67\x18\xc4\x8d\x7d\xe5\x74\x82\xa8\x68\xae\x7f\x06\x58\x70\xa6\x21\x65\x06\xd1\x1b\x77\x93\x23\xdf\xdf\x04\x6c\xf5\x77\x51\x29\x13\x4b\x4d\x56\x89\xe4\xd9\xc0\xce\x1e\x12\xd7\xd4\xb0\x6c\xb5\xfc\x58\x20\xde\xcf\xa4\x1b\xaf\x59\xbf\x25\x7b\x32\xf0\x25\xb7\x67\x9b\x44\x5b\x94\x99\xc9\x25\x55\x14\x58\x85\x99\x2f\x1b\x76\xf8\x48\x91\xee\x4d\x3b\xe0\xf5\x15\x0f\xd5\x90\x1e\x3a\x4c\x8e\xd4\x3f\xd3\x6b\x61\xd0\x22\xe6\x5a\xd5\x00\x8d\xbf\x33\x29\x3c\x22\xbf\xbf\xd0\x73\x21\xf0\xf1\xd5\xfa\x9f\xdf\x00\x14\xc2\xfc\xb0\x35\x8a\xad\x0e\x35\x4b\x0d\x29"
+ , salt = "\x08\x1b\x23\x3b\x43\x56\x77\x50\xbd\x6e\x78\xf3\x96\xa8\x8b\x9f\x6a\x44\x51\x51"
+ , signature = "\x0b\xa3\x73\xf7\x6e\x09\x21\xb7\x0a\x8f\xbf\xe6\x22\xf0\xbf\x77\xb2\x8a\x3d\xb9\x8e\x36\x10\x51\xc3\xd7\xcb\x92\xad\x04\x52\x91\x5a\x4d\xe9\xc0\x17\x22\xf6\x82\x3e\xeb\x6a\xdf\x7e\x0c\xa8\x29\x0f\x5d\xe3\xe5\x49\x89\x0a\xc2\xa3\xc5\x95\x0a\xb2\x17\xba\x58\x59\x08\x94\x95\x2d\xe9\x6f\x8d\xf1\x11\xb2\x57\x52\x15\xda\x6c\x16\x15\x90\xc7\x45\xbe\x61\x24\x76\xee\x57\x8e\xd3\x84\xab\x33\xe3\xec\xe9\x74\x81\xa2\x52\xf5\xc7\x9a\x98\xb5\x53\x2a\xe0\x0c\xdd\x62\xf2\xec\xc0\xcd\x1b\xae\xfe\x80\xd8\x0b\x96\x21\x93\xec\x1d"
+ }
+ -- Example 5.2
+ , VectorPSS
+ { message = "\xe7\xb3\x2e\x15\x56\xea\x1b\x27\x95\x04\x6a\xc6\x97\x39\xd2\x2a\xc8\x96\x6b\xf1\x1c\x11\x6f\x61\x4b\x16\x67\x40\xe9\x6b\x90\x65\x3e\x57\x50\x94\x5f\xcf\x77\x21\x86\xc0\x37\x90\xa0\x7f\xda\x32\x3e\x1a\x61\x91\x6b\x06\xee\x21\x57\xdb\x3d\xff\x80\xd6\x7d\x5e\x39\xa5\x3a\xe2\x68\xc8\xf0\x9e\xd9\x9a\x73\x20\x05\xb0\xbc\x6a\x04\xaf\x4e\x08\xd5\x7a\x00\xe7\x20\x1b\x30\x60\xef\xaa\xdb\x73\x11\x3b\xfc\x08\x7f\xd8\x37\x09\x3a\xa2\x52\x35\xb8\xc1\x49\xf5\x62\x15\xf0\x31\xc2\x4a\xd5\xbd\xe7\xf2\x99\x60\xdf\x7d\x52\x40\x70\xf7\x44\x9c\x6f\x78\x50\x84\xbe\x1a\x0f\x73\x30\x47\xf3\x36\xf9\x15\x47\x38\x67\x45\x47\xdb\x02\xa9\xf4\x4d\xfc\x6e\x60\x30\x10\x81\xe1\xce\x99\x84\x7f\x3b\x5b\x60\x1f\xf0\x6b\x4d\x57\x76\xa9\x74\x0b\x9a\xa0\xd3\x40\x58\xfd\x3b\x90\x6e\x4f\x78\x59\xdf\xb0\x7d\x71\x73\xe5\xe6\xf6\x35\x0a\xda\xc2\x1f\x27\xb2\x30\x74\x69"
+ , salt = "\xbd\x0c\xe1\x95\x49\xd0\x70\x01\x20\xcb\xe5\x10\x77\xdb\xbb\xb0\x0a\x8d\x8b\x09"
+ , signature = "\x08\x18\x0d\xe8\x25\xe4\xb8\xb0\x14\xa3\x2d\xa8\xba\x76\x15\x55\x92\x12\x04\xf2\xf9\x0d\x5f\x24\xb7\x12\x90\x8f\xf8\x4f\x3e\x22\x0a\xd1\x79\x97\xc0\xdd\x6e\x70\x66\x30\xba\x3e\x84\xad\xd4\xd5\xe7\xab\x00\x4e\x58\x07\x4b\x54\x97\x09\x56\x5d\x43\xad\x9e\x97\xb5\xa7\xa1\xa2\x9e\x85\xb9\xf9\x0f\x4a\xaf\xcd\xf5\x83\x21\xde\x8c\x59\x74\xef\x9a\xbf\x2d\x52\x6f\x33\xc0\xf2\xf8\x2e\x95\xd1\x58\xea\x6b\x81\xf1\x73\x6d\xb8\xd1\xaf\x3d\x6a\xc6\xa8\x3b\x32\xd1\x8b\xae\x0f\xf1\xb2\xfe\x27\xde\x4c\x76\xed\x8c\x79\x80\xa3\x4e"
+ }
+ -- Example 5.3
+ , VectorPSS
+ { message = "\x8d\x83\x96\xe3\x65\x07\xfe\x1e\xf6\xa1\x90\x17\x54\x8e\x0c\x71\x66\x74\xc2\xfe\xc2\x33\xad\xb2\xf7\x75\x66\x5e\xc4\x1f\x2b\xd0\xba\x39\x6b\x06\x1a\x9d\xaa\x7e\x86\x6f\x7c\x23\xfd\x35\x31\x95\x43\x00\xa3\x42\xf9\x24\x53\x5e\xa1\x49\x8c\x48\xf6\xc8\x79\x93\x28\x65\xfc\x02\x00\x0c\x52\x87\x23\xb7\xad\x03\x35\x74\x5b\x51\x20\x9a\x0a\xfe\xd9\x32\xaf\x8f\x08\x87\xc2\x19\x00\x4d\x2a\xbd\x89\x4e\xa9\x25\x59\xee\x31\x98\xaf\x3a\x73\x4f\xe9\xb9\x63\x8c\x26\x3a\x72\x8a\xd9\x5a\x5a\xe8\xce\x3e\xb1\x58\x39\xf3\xaa\x78\x52\xbb\x39\x07\x06\xe7\x76\x0e\x43\xa7\x12\x91\xa2\xe3\xf8\x27\x23\x7d\xed\xa8\x51\x87\x4c\x51\x76\x65\xf5\x45\xf2\x72\x38\xdf\x86\x55\x7f\x37\x5d\x09\xcc\xd8\xbd\x15\xd8\xcc\xf6\x1f\x5d\x78\xca\x5c\x7f\x5c\xde\x78\x2e\x6b\xf5\xd0\x05\x70\x56\xd4\xba\xd9\x8b\x3d\x2f\x95\x75\xe8\x24\xab\x7a\x33\xff\x57\xb0\xac\x10\x0a\xb0\xd6\xea\xd7\xaa\x0b\x50\xf6\xe4\xd3\xe5\xec\x0b\x96\x6b"
+ , salt = "\x81\x57\x79\xa9\x1b\x3a\x8b\xd0\x49\xbf\x2a\xeb\x92\x01\x42\x77\x22\x22\xc9\xca"
+ , signature = "\x05\xe0\xfd\xbd\xf6\xf7\x56\xef\x73\x31\x85\xcc\xfa\x8c\xed\x2e\xb6\xd0\x29\xd9\xd5\x6e\x35\x56\x1b\x5d\xb8\xe7\x02\x57\xee\x6f\xd0\x19\xd2\xf0\xbb\xf6\x69\xfe\x9b\x98\x21\xe7\x8d\xf6\xd4\x1e\x31\x60\x8d\x58\x28\x0f\x31\x8e\xe3\x4f\x55\x99\x41\xc8\xdf\x13\x28\x75\x74\xba\xc0\x00\xb7\xe5\x8d\xc4\xf4\x14\xba\x49\xfb\x12\x7f\x9d\x0f\x89\x36\x63\x8c\x76\xe8\x53\x56\xc9\x94\xf7\x97\x50\xf7\xfa\x3c\xf4\xfd\x48\x2d\xf7\x5e\x3f\xb9\x97\x8c\xd0\x61\xf7\xab\xb1\x75\x72\xe6\xe6\x3e\x0b\xde\x12\xcb\xdc\xf1\x8c\x68\xb9\x79"
+ }
+ -- Example 5.4
+ , VectorPSS
+ { message = "\x32\x8c\x65\x9e\x0a\x64\x37\x43\x3c\xce\xb7\x3c\x14"
+ , salt = "\x9a\xec\x4a\x74\x80\xd5\xbb\xc4\x29\x20\xd7\xca\x23\x5d\xb6\x74\x98\x9c\x9a\xac"
+ , signature = "\x0b\xc9\x89\x85\x3b\xc2\xea\x86\x87\x32\x71\xce\x18\x3a\x92\x3a\xb6\x5e\x8a\x53\x10\x0e\x6d\xf5\xd8\x7a\x24\xc4\x19\x4e\xb7\x97\x81\x3e\xe2\xa1\x87\xc0\x97\xdd\x87\x2d\x59\x1d\xa6\x0c\x56\x86\x05\xdd\x7e\x74\x2d\x5a\xf4\xe3\x3b\x11\x67\x8c\xcb\x63\x90\x32\x04\xa3\xd0\x80\xb0\x90\x2c\x89\xab\xa8\x86\x8f\x00\x9c\x0f\x1c\x0c\xb8\x58\x10\xbb\xdd\x29\x12\x1a\xbb\x84\x71\xff\x2d\x39\xe4\x9f\xd9\x2d\x56\xc6\x55\xc8\xe0\x37\xad\x18\xfa\xfb\xdc\x92\xc9\x58\x63\xf7\xf6\x1e\xa9\xef\xa2\x8f\xea\x40\x13\x69\xd1\x9d\xae\xa1"
+ }
+ -- Example 5.5
+ , VectorPSS
+ { message = "\xf3\x7b\x96\x23\x79\xa4\x7d\x41\x5a\x37\x6e\xec\x89\x73\x15\x0b\xcb\x34\xed\xd5\xab\x65\x40\x41\xb6\x14\x30\x56\x0c\x21\x44\x58\x2b\xa1\x33\xc8\x67\xd8\x52\xd6\xb8\xe2\x33\x21\x90\x13\x02\xec\xb4\x5b\x09\xec\x88\xb1\x52\x71\x78\xfa\x04\x32\x63\xf3\x06\x7d\x9f\xfe\x97\x30\x32\xa9\x9f\x4c\xb0\x8a\xd2\xc7\xe0\xa2\x45\x6c\xdd\x57\xa7\xdf\x56\xfe\x60\x53\x52\x7a\x5a\xeb\x67\xd7\xe5\x52\x06\x3c\x1c\xa9\x7b\x1b\xef\xfa\x7b\x39\xe9\x97\xca\xf2\x78\x78\xea\x0f\x62\xcb\xeb\xc8\xc2\x1d\xf4\xc8\x89\xa2\x02\x85\x1e\x94\x90\x88\x49\x0c\x24\x9b\x6e\x9a\xcf\x1d\x80\x63\xf5\xbe\x23\x43\x98\x9b\xf9\x5c\x4d\xa0\x1a\x2b\xe7\x8b\x4a\xb6\xb3\x78\x01\x5b\xc3\x79\x57\xf7\x69\x48\xb5\xe5\x8e\x44\x0c\x28\x45\x3d\x40\xd7\xcf\xd5\x7e\x7d\x69\x06\x00\x47\x4a\xb5\xe7\x59\x73\xb1\xea\x0c\x5f\x1e\x45\xd1\x41\x90\xaf\xe2\xf4\xeb\x6d\x3b\xdf\x71\xf1\xd2\xf8\xbb\x15\x6a\x1c\x29\x5d\x04\xaa\xeb\x9d\x68\x9d\xce\x79\xed\x62\xbc\x44\x3e"
+ , salt = "\xe2\x0c\x1e\x98\x78\x51\x2c\x39\x97\x0f\x58\x37\x5e\x15\x49\xa6\x8b\x64\xf3\x1d"
+ , signature = "\x0a\xef\xa9\x43\xb6\x98\xb9\x60\x9e\xdf\x89\x8a\xd2\x27\x44\xac\x28\xdc\x23\x94\x97\xce\xa3\x69\xcb\xbd\x84\xf6\x5c\x95\xc0\xad\x77\x6b\x59\x47\x40\x16\x4b\x59\xa7\x39\xc6\xff\x7c\x2f\x07\xc7\xc0\x77\xa8\x6d\x95\x23\x8f\xe5\x1e\x1f\xcf\x33\x57\x4a\x4a\xe0\x68\x4b\x42\xa3\xf6\xbf\x67\x7d\x91\x82\x0c\xa8\x98\x74\x46\x7b\x2c\x23\xad\xd7\x79\x69\xc8\x07\x17\x43\x0d\x0e\xfc\x1d\x36\x95\x89\x2c\xe8\x55\xcb\x7f\x70\x11\x63\x0f\x4d\xf2\x6d\xef\x8d\xdf\x36\xfc\x23\x90\x5f\x57\xfa\x62\x43\xa4\x85\xc7\x70\xd5\x68\x1f\xcd"
+ }
+ -- Example 5.6
+ , VectorPSS
+ { message = "\xc6\x10\x3c\x33\x0c\x1e\xf7\x18\xc1\x41\xe4\x7b\x8f\xa8\x59\xbe\x4d\x5b\x96\x25\x9e\x7d\x14\x20\x70\xec\xd4\x85\x83\x9d\xba\x5a\x83\x69\xc1\x7c\x11\x14\x03\x5e\x53\x2d\x19\x5c\x74\xf4\x4a\x04\x76\xa2\xd3\xe8\xa4\xda\x21\x00\x16\xca\xce\xd0\xe3\x67\xcb\x86\x77\x10\xa4\xb5\xaa\x2d\xf2\xb8\xe5\xda\xf5\xfd\xc6\x47\x80\x7d\x4d\x5e\xbb\x6c\x56\xb9\x76\x3c\xcd\xae\x4d\xea\x33\x08\xeb\x0a\xc2\xa8\x95\x01\xcb\x20\x9d\x26\x39\xfa\x5b\xf8\x7c\xe7\x90\x74\x7d\x3c\xb2\xd2\x95\xe8\x45\x64\xf2\xf6\x37\x82\x4f\x0c\x13\x02\x81\x29\xb0\xaa\x4a\x42\x2d\x16\x22\x82"
+ , salt = "\x23\x29\x1e\x4a\x33\x07\xe8\xbb\xb7\x76\x62\x3a\xb3\x4e\x4a\x5f\x4c\xc8\xa8\xdb"
+ , signature = "\x02\x80\x2d\xcc\xfa\x8d\xfa\xf5\x27\x9b\xf0\xb4\xa2\x9b\xa1\xb1\x57\x61\x1f\xae\xaa\xf4\x19\xb8\x91\x9d\x15\x94\x19\x00\xc1\x33\x9e\x7e\x92\xe6\xfa\xe5\x62\xc5\x3e\x6c\xc8\xe8\x41\x04\xb1\x10\xbc\xe0\x3a\xd1\x85\x25\xe3\xc4\x9a\x0e\xad\xad\x5d\x3f\x28\xf2\x44\xa8\xed\x89\xed\xba\xfb\xb6\x86\x27\x7c\xfa\x8a\xe9\x09\x71\x4d\x6b\x28\xf4\xbf\x8e\x29\x3a\xa0\x4c\x41\xef\xe7\xc0\xa8\x12\x66\xd5\xc0\x61\xe2\x57\x5b\xe0\x32\xaa\x46\x46\x74\xff\x71\x62\x62\x19\xbd\x74\xcc\x45\xf0\xe7\xed\x4e\x3f\xf9\x6e\xee\x75\x8e\x8f"
+ }
+ ]
+
+-- ==================================
+-- Example 6: A 1029-bit RSA Key Pair
+-- ==================================
+
+rsaKey6 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0x164ca31cff609f3a0e7101b039f2e4fe6dd37519ab98598d179e174996598071f47d3a04559158d7be373cf1aa53f0aa6ef09039e5678c2a4c63900514c8c4f8aaed5de12a5f10b09c311af8c0ffb5b7a297f2efc63b8d6b0510931f0b98e48bf5fc6ec4e7b8db1ffaeb08c38e02adb8f03a48229c99e969431f61cb8c4dc698d1
+ , public_e = 0x010001
+ , public_size = 129
+ }
+ , private_d = 0x03b664ee3b7566723fc6eaf28abb430a3980f1126c81de8ad709eab39ac9dcd0b1550b3729d87068e952009df544534c1f50829a78f4591eb8fd57140426a6bb0405b6a6f51a57d9267b7bbc653391a699a2a90dac8ae226bcc60fa8cd934c73c7b03b1f6b818158631838a8612e6e6ea92be24f8324faf5b1fd8587225267ba6f
+ , private_p = 0x04f0548c9626ab1ebf1244934741d99a06220efa2a5856aa0e75730b2ec96adc86be894fa2803b53a5e85d276acbd29ab823f80a7391bb54a5051672fb04eeb543
+ , private_q = 0x0483e0ae47915587743ff345362b555d3962d98bb6f15f848b4c92b1771ca8ed107d8d3ee65ec44517dd0faa481a387e902f7a2e747c269e7ea44480bc538b8e5b
+ , private_dP = 0x03a8e8aea9920c1aa3b2f0d846e4b850d81ca306a51c83544f949f64f90dcf3f8e2661f07e561220a180388fbe273e70e2e5dca83a0e1348dd6490c731d6ece1ab
+ , private_dQ = 0x0135bdcdb60bf2197c436ed34b32cd8b4fc77778832ba76703551fb242b301699593af77fd8fc394a8526ad23cc41a03806bd897fe4b0ea646558aaddcc99e8a25
+ , private_qinv = 0x0304c03d9c736503a984abbd9ba22301407c4a2ab1dd85766481b60d45401152e692be14f4121d9aa3fd6e0b4d1d3a973538a31d42ee6e1e5ef620231a2bbaf35f
+ }
+
+vectorsKey6 =
+ [
+ -- Example 6.1
+ VectorPSS
+ { message = "\x0a\x20\xb7\x74\xad\xdc\x2f\xa5\x12\x45\xed\x7c\xb9\xda\x60\x9e\x50\xca\xc6\x63\x6a\x52\x54\x3f\x97\x45\x8e\xed\x73\x40\xf8\xd5\x3f\xfc\x64\x91\x8f\x94\x90\x78\xee\x03\xef\x60\xd4\x2b\x5f\xec\x24\x60\x50\xbd\x55\x05\xcd\x8c\xb5\x97\xba\xd3\xc4\xe7\x13\xb0\xef\x30\x64\x4e\x76\xad\xab\xb0\xde\x01\xa1\x56\x1e\xfb\x25\x51\x58\xc7\x4f\xc8\x01\xe6\xe9\x19\xe5\x81\xb4\x6f\x0f\x0d\xdd\x08\xe4\xf3\x4c\x78\x10\xb5\xed\x83\x18\xf9\x1d\x7c\x8c"
+ , salt = "\x5b\x4e\xa2\xef\x62\x9c\xc2\x2f\x3b\x53\x8e\x01\x69\x04\xb4\x7b\x1e\x40\xbf\xd5"
+ , signature = "\x04\xc0\xcf\xac\xec\x04\xe5\xba\xdb\xec\xe1\x59\xa5\xa1\x10\x3f\x69\xb3\xf3\x2b\xa5\x93\xcb\x4c\xc4\xb1\xb7\xab\x45\x59\x16\xa9\x6a\x27\xcd\x26\x78\xea\x0f\x46\xba\x37\xf7\xfc\x9c\x86\x32\x5f\x29\x73\x3b\x38\x9f\x1d\x97\xf4\x3e\x72\x01\xc0\xf3\x48\xfc\x45\xfe\x42\x89\x23\x35\x36\x2e\xee\x01\x8b\x5b\x16\x1f\x2f\x93\x93\x03\x12\x25\xc7\x13\x01\x2a\x57\x6b\xc8\x8e\x23\x05\x24\x89\x86\x8d\x90\x10\xcb\xf0\x33\xec\xc5\x68\xe8\xbc\x15\x2b\xdc\x59\xd5\x60\xe4\x12\x91\x91\x5d\x28\x56\x52\x08\xe2\x2a\xee\xc9\xef\x85\xd1"
+ }
+ -- Example 6.2
+ , VectorPSS
+ { message = "\x2a\xaf\xf6\x63\x1f\x62\x1c\xe6\x15\x76\x0a\x9e\xbc\xe9\x4b\xb3\x33\x07\x7a\xd8\x64\x88\xc8\x61\xd4\xb7\x6d\x29\xc1\xf4\x87\x46\xc6\x11\xae\x1e\x03\xce\xd4\x44\x5d\x7c\xfa\x1f\xe5\xf6\x2e\x1b\x3f\x08\x45\x2b\xde\x3b\x6e\xf8\x19\x73\xba\xfb\xb5\x7f\x97\xbc\xee\xf8\x73\x98\x53\x95\xb8\x26\x05\x89\xaa\x88\xcb\x7d\xb5\x0a\xb4\x69\x26\x2e\x55\x1b\xdc\xd9\xa5\x6f\x27\x5a\x0a\xc4\xfe\x48\x47\x00\xc3\x5f\x3d\xbf\x2b\x46\x9e\xde\x86\x47\x41\xb8\x6f\xa5\x91\x72\xa3\x60\xba\x95\xa0\x2e\x13\x9b\xe5\x0d\xdf\xb7\xcf\x0b\x42\xfa\xea\xbb\xfb\xba\xa8\x6a\x44\x97\x69\x9c\x4f\x2d\xfd\x5b\x08\x40\x6a\xf7\xe1\x41\x44\x42\x7c\x25\x3e\xc0\xef\xa2\x0e\xaf\x9a\x8b\xe8\xcd\x49\xce\x1f\x1b\xc4\xe9\x3e\x61\x9c\xf2\xaa\x8e\xd4\xfb\x39\xbc\x85\x90\xd0\xf7\xb9\x64\x88\xf7\x31\x7a\xc9\xab\xf7\xbe\xe4\xe3\xa0\xe7\x15"
+ , salt = "\x83\x14\x6a\x9e\x78\x27\x22\xc2\x8b\x01\x4f\x98\xb4\x26\x7b\xda\x2a\xc9\x50\x4f"
+ , signature = "\x0a\x23\x14\x25\x0c\xf5\x2b\x6e\x4e\x90\x8d\xe5\xb3\x56\x46\xbc\xaa\x24\x36\x1d\xa8\x16\x0f\xb0\xf9\x25\x75\x90\xab\x3a\xce\x42\xb0\xdc\x3e\x77\xad\x2d\xb7\xc2\x03\xa2\x0b\xd9\x52\xfb\xb5\x6b\x15\x67\x04\x6e\xcf\xaa\x93\x3d\x7b\x10\x00\xc3\xde\x9f\xf0\x5b\x7d\x98\x9b\xa4\x6f\xd4\x3b\xc4\xc2\xd0\xa3\x98\x6b\x7f\xfa\x13\x47\x1d\x37\xeb\x5b\x47\xd6\x47\x07\xbd\x29\x0c\xfd\x6a\x9f\x39\x3a\xd0\x8e\xc1\xe3\xbd\x71\xbb\x57\x92\x61\x50\x35\xcd\xaf\x2d\x89\x29\xae\xd3\xbe\x09\x83\x79\x37\x7e\x77\x7c\xe7\x9a\xaa\x47\x73"
+ }
+ -- Example 6.3
+ , VectorPSS
+ { message = "\x0f\x61\x95\xd0\x4a\x6e\x6f\xc7\xe2\xc9\x60\x0d\xbf\x84\x0c\x39\xea\x8d\x4d\x62\x4f\xd5\x35\x07\x01\x6b\x0e\x26\x85\x8a\x5e\x0a\xec\xd7\xad\xa5\x43\xae\x5c\x0a\xb3\xa6\x25\x99\xcb\xa0\xa5\x4e\x6b\xf4\x46\xe2\x62\xf9\x89\x97\x8f\x9d\xdf\x5e\x9a\x41"
+ , salt = "\xa8\x7b\x8a\xed\x07\xd7\xb8\xe2\xda\xf1\x4d\xdc\xa4\xac\x68\xc4\xd0\xaa\xbf\xf8"
+ , signature = "\x08\x6d\xf6\xb5\x00\x09\x8c\x12\x0f\x24\xff\x84\x23\xf7\x27\xd9\xc6\x1a\x5c\x90\x07\xd3\xb6\xa3\x1c\xe7\xcf\x8f\x3c\xbe\xc1\xa2\x6b\xb2\x0e\x2b\xd4\xa0\x46\x79\x32\x99\xe0\x3e\x37\xa2\x1b\x40\x19\x4f\xb0\x45\xf9\x0b\x18\xbf\x20\xa4\x79\x92\xcc\xd7\x99\xcf\x9c\x05\x9c\x29\x9c\x05\x26\x85\x49\x54\xaa\xde\x8a\x6a\xd9\xd9\x7e\xc9\x1a\x11\x45\x38\x3f\x42\x46\x8b\x23\x1f\x4d\x72\xf2\x37\x06\xd9\x85\x3c\x3f\xa4\x3c\xe8\xac\xe8\xbf\xe7\x48\x49\x87\xa1\xec\x6a\x16\xc8\xda\xf8\x1f\x7c\x8b\xf4\x27\x74\x70\x7a\x9d\xf4\x56"
+ }
+ -- Example 6.4
+ , VectorPSS
+ { message = "\x33\x7d\x25\xfe\x98\x10\xeb\xca\x0d\xe4\xd4\x65\x8d\x3c\xeb\x8e\x0f\xe4\xc0\x66\xab\xa3\xbc\xc4\x8b\x10\x5d\x3b\xf7\xe0\x25\x7d\x44\xfe\xce\xa6\x59\x6f\x4d\x0c\x59\xa0\x84\x02\x83\x36\x78\xf7\x06\x20\xf9\x13\x8d\xfe\xb7\xde\xd9\x05\xe4\xa6\xd5\xf0\x5c\x47\x3d\x55\x93\x66\x52\xe2\xa5\xdf\x43\xc0\xcf\xda\x7b\xac\xaf\x30\x87\xf4\x52\x4b\x06\xcf\x42\x15\x7d\x01\x53\x97\x39\xf7\xfd\xde\xc9\xd5\x81\x25\xdf\x31\xa3\x2e\xab\x06\xc1\x9b\x71\xf1\xd5\xbf"
+ , salt = "\xa3\x79\x32\xf8\xa7\x49\x4a\x94\x2d\x6f\x76\x74\x38\xe7\x24\xd6\xd0\xc0\xef\x18"
+ , signature = "\x0b\x5b\x11\xad\x54\x98\x63\xff\xa9\xc5\x1a\x14\xa1\x10\x6c\x2a\x72\xcc\x8b\x64\x6e\x5c\x72\x62\x50\x97\x86\x10\x5a\x98\x47\x76\x53\x4c\xa9\xb5\x4c\x1c\xc6\x4b\xf2\xd5\xa4\x4f\xd7\xe8\xa6\x9d\xb6\x99\xd5\xea\x52\x08\x7a\x47\x48\xfd\x2a\xbc\x1a\xfe\xd1\xe5\xd6\xf7\xc8\x90\x25\x53\x0b\xda\xa2\x21\x3d\x7e\x03\x0f\xa5\x5d\xf6\xf3\x4b\xcf\x1c\xe4\x6d\x2e\xdf\x4e\x3a\xe4\xf3\xb0\x18\x91\xa0\x68\xc9\xe3\xa4\x4b\xbc\x43\x13\x3e\xda\xd6\xec\xb9\xf3\x54\x00\xc4\x25\x2a\x57\x62\xd6\x57\x44\xb9\x9c\xb9\xf4\xc5\x59\x32\x9f"
+ }
+ -- Example 6.5
+ , VectorPSS
+ { message = "\x84\xec\x50\x2b\x07\x2e\x82\x87\x78\x9d\x8f\x92\x35\x82\x9e\xa3\xb1\x87\xaf\xd4\xd4\xc7\x85\x61\x1b\xda\x5f\x9e\xb3\xcb\x96\x71\x7e\xfa\x70\x07\x22\x7f\x1c\x08\xcb\xcb\x97\x2e\x66\x72\x35\xe0\xfb\x7d\x43\x1a\x65\x70\x32\x6d\x2e\xcc\xe3\x5a\xdb\x37\x3d\xc7\x53\xb3\xbe\x5f\x82\x9b\x89\x17\x54\x93\x19\x3f\xab\x16\xba\xdb\x41\x37\x1b\x3a\xac\x0a\xe6\x70\x07\x6f\x24\xbe\xf4\x20\xc1\x35\xad\xd7\xce\xe8\xd3\x5f\xbc\x94\x4d\x79\xfa\xfb\x9e\x30\x7a\x13\xb0\xf5\x56\xcb\x65\x4a\x06\xf9\x73\xed\x22\x67\x23\x30\x19\x7e\xf5\xa7\x48\xbf\x82\x6a\x5d\xb2\x38\x3a\x25\x36\x4b\x68\x6b\x93\x72\xbb\x23\x39\xae\xb1\xac\x9e\x98\x89\x32\x7d\x01\x6f\x16\x70\x77\x6d\xb0\x62\x01\xad\xbd\xca\xf8\xa5\xe3\xb7\x4e\x10\x8b\x73"
+ , salt = "\x7b\x79\x0c\x1d\x62\xf7\xb8\x4e\x94\xdf\x6a\xf2\x89\x17\xcf\x57\x10\x18\x11\x0e"
+ , signature = "\x02\xd7\x1f\xa9\xb5\x3e\x46\x54\xfe\xfb\x7f\x08\x38\x5c\xf6\xb0\xae\x3a\x81\x79\x42\xeb\xf6\x6c\x35\xac\x67\xf0\xb0\x69\x95\x2a\x3c\xe9\xc7\xe1\xf1\xb0\x2e\x48\x0a\x95\x00\x83\x6d\xe5\xd6\x4c\xdb\x7e\xcd\xe0\x45\x42\xf7\xa7\x99\x88\x78\x7e\x24\xc2\xba\x05\xf5\xfd\x48\x2c\x02\x3e\xd5\xc3\x0e\x04\x83\x9d\xc4\x4b\xed\x2a\x3a\x3a\x4f\xee\x01\x11\x3c\x89\x1a\x47\xd3\x2e\xb8\x02\x5c\x28\xcb\x05\x0b\x5c\xdb\x57\x6c\x70\xfe\x76\xef\x52\x34\x05\xc0\x84\x17\xfa\xf3\x50\xb0\x37\xa4\x3c\x37\x93\x39\xfc\xb1\x8d\x3a\x35\x6b"
+ }
+ -- Example 6.6
+ , VectorPSS
+ { message = "\x99\x06\xd8\x9f\x97\xa9\xfd\xed\xd3\xcc\xd8\x24\xdb\x68\x73\x26\xf3\x0f\x00\xaa\x25\xa7\xfc\xa2\xaf\xcb\x3b\x0f\x86\xcd\x41\xe7\x3f\x0e\x8f\xf7\xd2\xd8\x3f\x59\xe2\x8e\xd3\x1a\x5a\x0d\x55\x15\x23\x37\x4d\xe2\x2e\x4c\x7e\x8f\xf5\x68\xb3\x86\xee\x3d\xc4\x11\x63\xf1\x0b\xf6\x7b\xb0\x06\x26\x1c\x90\x82\xf9\xaf\x90\xbf\x1d\x90\x49\xa6\xb9\xfa\xe7\x1c\x7f\x84\xfb\xe6\xe5\x5f\x02\x78\x9d\xe7\x74\xf2\x30\xf1\x15\x02\x6a\x4b\x4e\x96\xc5\x5b\x04\xa9\x5d\xa3\xaa\xcb\xb2\xce\xce\x8f\x81\x76\x4a\x1f\x1c\x99\x51\x54\x11\x08\x7c\xf7\xd3\x4a\xed\xed\x09\x32\xc1\x83"
+ , salt = "\xfb\xbe\x05\x90\x25\xb6\x9b\x89\xfb\x14\xae\x22\x89\xe7\xaa\xaf\xe6\x0c\x0f\xcd"
+ , signature = "\x0a\x40\xa1\x6e\x2f\xe2\xb3\x8d\x1d\xf9\x05\x46\x16\x7c\xf9\x46\x9c\x9e\x3c\x36\x81\xa3\x44\x2b\x4b\x2c\x2f\x58\x1d\xeb\x38\x5c\xe9\x9f\xc6\x18\x8b\xb0\x2a\x84\x1d\x56\xe7\x6d\x30\x18\x91\xe2\x45\x60\x55\x0f\xcc\x2a\x26\xb5\x5f\x4c\xcb\x26\xd8\x37\xd3\x50\xa1\x54\xbc\xac\xa8\x39\x2d\x98\xfa\x67\x95\x9e\x97\x27\xb7\x8c\xad\x03\x26\x9f\x56\x96\x8f\xc5\x6b\x68\xbd\x67\x99\x26\xd8\x3c\xc9\xcb\x21\x55\x50\x64\x5c\xcd\xa3\x1c\x76\x0f\xf3\x58\x88\x94\x3d\x2d\x8a\x1d\x35\x1e\x81\xe5\xd0\x7b\x86\x18\x2e\x75\x10\x81\xef"
+ }
+ ]
+
+-- ==================================
+-- Example 7: A 1030-bit RSA Key Pair
+-- ==================================
+
+rsaKey7 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0x37c9da4a66c8c408b8da27d0c9d79f8ccb1eafc1d2fe48746d940b7c4ef5dee18ad12647cefaa0c4b3188b221c515386759b93f02024b25ab9242f8357d8f3fd49640ee5e643eaf6c64deefa7089727c8ff03993333915c6ef21bf5975b6e50d118b51008ec33e9f01a0a545a10a836a43ddbca9d8b5c5d3548022d7064ea29ab3
+ , public_e = 0x010001
+ , public_size = 129
+ }
+ , private_d = 0x3bed999052d957bc06d651eef6e3a98094b1621bd38b5449bd6c4aea3de7e084679a4484ded25be0f0826cf3377825414b14d4d61db14de626fbb80e5f4faec956f9a0a2d24f99576380f084eb62e46a57d554278b535626193ce02060575eb66c5798d36f6c5d40fb00d809b42a73102c1c74ee95bd71420fffef6318b52c29
+ , private_p = 0x07eefb424b0e3a40e4208ee5afb280b22317308114dde0b4b64f730184ec68da6ce2867a9f48ed7726d5e2614ed04a5410736c8c714ee702474298c6292af07535
+ , private_q = 0x070830dbf947eac0228de26314b59b66994cc60e8360e75d3876298f8f8a7d141da064e5ca026a973e28f254738cee669c721b034cb5f8e244dadd7cd1e159d547
+ , private_dP = 0x0524d20c3d95cff75af2313483227d8702717aa576de155f960515501adb1d70e1c04de91b75b161dbf0398356127ededa7bbc19a32dc1621cc9f53c265d0ce331
+ , private_dQ = 0x05f984a1f23c938d6a0e89724bcf3dd93f9946926037fe7c6b13a29e5284855f89089591d440975627bf5c9e3a8b5ca79c772ad273e40d321af4a6c97dfded78d3
+ , private_qinv = 0xddd918adada29dcab981ff9acba4257023c09a3801ccce098ce268f855d0df570cd6e7b9b14bd9a5a9254cbc315be6f8ba1e2546ddd569c5ea19eed8353bde5e
+ }
+
+vectorsKey7 =
+ [
+ -- Example 7.1
+ VectorPSS
+ { message = "\x9e\xad\x0e\x01\x94\x56\x40\x67\x4e\xb4\x1c\xad\x43\x5e\x23\x74\xea\xef\xa8\xad\x71\x97\xd9\x79\x13\xc4\x49\x57\xd8\xd8\x3f\x40\xd7\x6e\xe6\x0e\x39\xbf\x9c\x0f\x9e\xaf\x30\x21\x42\x1a\x07\x4d\x1a\xde\x96\x2c\x6e\x9d\x3d\xc3\xbb\x17\x4f\xe4\xdf\xe6\x52\xb0\x91\x15\x49\x5b\x8f\xd2\x79\x41\x74\x02\x0a\x06\x02\xb5\xca\x51\x84\x8c\xfc\x96\xce\x5e\xb5\x7f\xc0\xa2\xad\xc1\xdd\xa3\x6a\x7c\xc4\x52\x64\x1a\x14\x91\x1b\x37\xe4\x5b\xfa\x11\xda\xa5\xc7\xec\xdb\x74\xf6\xd0\x10\x0d\x1d\x3e\x39\xe7\x52\x80\x0e\x20\x33\x97\xde\x02\x33\x07\x7b\x9a\x88\x85\x55\x37\xfa\xe9\x27\xf9\x24\x38\x0d\x78\x0f\x98\xe1\x8d\xcf\xf3\x9c\x5e\xa7\x41\xb1\x7d\x6f\xdd\x18\x85\xbc\x9d\x58\x14\x82\xd7\x71\xce\xb5\x62\xd7\x8a\x8b\xf8\x8f\x0c\x75\xb1\x13\x63\xe5\xe3\x6c\xd4\x79\xce\xb0\x54\x5f\x9d\xa8\x42\x03\xe0\xe6\xe5\x08\x37\x5c\xc9\xe8\x44\xb8\x8b\x7a\xc7\xa0\xa2\x01\xea\x0f\x1b\xee\x9a\x2c\x57\x79\x20\xca\x02\xc0\x1b\x9d\x83\x20\xe9\x74\xa5\x6f\x4e\xfb\x57\x63\xb9\x62\x55\xab\xbf\x80\x37\xbf\x18\x02\xcf\x01\x8f\x56\x37\x94\x93\xe5\x69\xa9"
+ , salt = "\xb7\x86\x7a\x59\x95\x8c\xb5\x43\x28\xf8\x77\x5e\x65\x46\xec\x06\xd2\x7e\xaa\x50"
+ , signature = "\x18\x7f\x39\x07\x23\xc8\x90\x25\x91\xf0\x15\x4b\xae\x6d\x4e\xcb\xff\xe0\x67\xf0\xe8\xb7\x95\x47\x6e\xa4\xf4\xd5\x1c\xcc\x81\x05\x20\xbb\x3c\xa9\xbc\xa7\xd0\xb1\xf2\xea\x8a\x17\xd8\x73\xfa\x27\x57\x0a\xcd\x64\x2e\x38\x08\x56\x1c\xb9\xe9\x75\xcc\xfd\x80\xb2\x3d\xc5\x77\x1c\xdb\x33\x06\xa5\xf2\x31\x59\xda\xcb\xd3\xaa\x2d\xb9\x3d\x46\xd7\x66\xe0\x9e\xd1\x5d\x90\x0a\xd8\x97\xa8\xd2\x74\xdc\x26\xb4\x7e\x99\x4a\x27\xe9\x7e\x22\x68\xa7\x66\x53\x3a\xe4\xb5\xe4\x2a\x2f\xca\xf7\x55\xc1\xc4\x79\x4b\x29\x4c\x60\x55\x58\x23"
+ }
+ -- Example 7.2
+ , VectorPSS
+ { message = "\x8d\x80\xd2\xd0\x8d\xbd\x19\xc1\x54\xdf\x3f\x14\x67\x3a\x14\xbd\x03\x73\x52\x31\xf2\x4e\x86\xbf\x15\x3d\x0e\x69\xe7\x4c\xbf\xf7\xb1\x83\x6e\x66\x4d\xe8\x3f\x68\x01\x24\x37\x0f\xc0\xf9\x6c\x9b\x65\xc0\x7a\x36\x6b\x64\x4c\x4a\xb3"
+ , salt = "\x0c\x09\x58\x22\x66\xdf\x08\x63\x10\x82\x1b\xa7\xe1\x8d\xf6\x4d\xfe\xe6\xde\x09"
+ , signature = "\x10\xfd\x89\x76\x8a\x60\xa6\x77\x88\xab\xb5\x85\x6a\x78\x7c\x85\x61\xf3\xed\xcf\x9a\x83\xe8\x98\xf7\xdc\x87\xab\x8c\xce\x79\x42\x9b\x43\xe5\x69\x06\x94\x1a\x88\x61\x94\xf1\x37\xe5\x91\xfe\x7c\x33\x95\x55\x36\x1f\xbb\xe1\xf2\x4f\xeb\x2d\x4b\xcd\xb8\x06\x01\xf3\x09\x6b\xc9\x13\x2d\xee\xa6\x0a\xe1\x30\x82\xf4\x4f\x9a\xd4\x1c\xd6\x28\x93\x6a\x4d\x51\x17\x6e\x42\xfc\x59\xcb\x76\xdb\x81\x5c\xe5\xab\x4d\xb9\x9a\x10\x4a\xaf\xea\x68\xf5\xd3\x30\x32\x9e\xbf\x25\x8d\x4e\xde\x16\x06\x4b\xd1\xd0\x03\x93\xd5\xe1\x57\x0e\xb8"
+ }
+ -- Example 7.3
+ , VectorPSS
+ { message = "\x80\x84\x05\xcd\xfc\x1a\x58\xb9\xbb\x03\x97\xc7\x20\x72\x2a\x81\xff\xfb\x76\x27\x8f\x33\x59\x17\xef\x9c\x47\x38\x14\xb3\xe0\x16\xba\x29\x73\xcd\x27\x65\xf8\xf3\xf8\x2d\x6c\xc3\x8a\xa7\xf8\x55\x18\x27\xfe\x8d\x1e\x38\x84\xb7\xe6\x1c\x94\x68\x3b\x8f\x82\xf1\x84\x3b\xda\xe2\x25\x7e\xee\xc9\x81\x2a\xd4\xc2\xcf\x28\x3c\x34\xe0\xb0\xae\x0f\xe3\xcb\x99\x0c\xf8\x8f\x2e\xf9"
+ , salt = "\x28\x03\x9d\xcf\xe1\x06\xd3\xb8\x29\x66\x11\x25\x8c\x4a\x56\x65\x1c\x9e\x92\xdd"
+ , signature = "\x2b\x31\xfd\xe9\x98\x59\xb9\x77\xaa\x09\x58\x6d\x8e\x27\x46\x62\xb2\x5a\x2a\x64\x06\x40\xb4\x57\xf5\x94\x05\x1c\xb1\xe7\xf7\xa9\x11\x86\x54\x55\x24\x29\x26\xcf\x88\xfe\x80\xdf\xa3\xa7\x5b\xa9\x68\x98\x44\xa1\x1e\x63\x4a\x82\xb0\x75\xaf\xbd\x69\xc1\x2a\x0d\xf9\xd2\x5f\x84\xad\x49\x45\xdf\x3d\xc8\xfe\x90\xc3\xce\xfd\xf2\x6e\x95\xf0\x53\x43\x04\xb5\xbd\xba\x20\xd3\xe5\x64\x0a\x2e\xbf\xb8\x98\xaa\xc3\x5a\xe4\x0f\x26\xfc\xe5\x56\x3c\x2f\x9f\x24\xf3\x04\x2a\xf7\x6f\x3c\x70\x72\xd6\x87\xbb\xfb\x95\x9a\x88\x46\x0a\xf1"
+ }
+ -- Example 7.4
+ , VectorPSS
+ { message = "\xf3\x37\xb9\xba\xd9\x37\xde\x22\xa1\xa0\x52\xdf\xf1\x11\x34\xa8\xce\x26\x97\x62\x02\x98\x19\x39\xb9\x1e\x07\x15\xae\x5e\x60\x96\x49\xda\x1a\xdf\xce\xf3\xf4\xcc\xa5\x9b\x23\x83\x60\xe7\xd1\xe4\x96\xc7\xbf\x4b\x20\x4b\x5a\xcf\xf9\xbb\xd6\x16\x6a\x1d\x87\xa3\x6e\xf2\x24\x73\x73\x75\x10\x39\xf8\xa8\x00\xb8\x39\x98\x07\xb3\xa8\x5f\x44\x89\x34\x97\xc0\xd0\x5f\xb7\x01\x7b\x82\x22\x81\x52\xde\x6f\x25\xe6\x11\x6d\xcc\x75\x03\xc7\x86\xc8\x75\xc2\x8f\x3a\xa6\x07\xe9\x4a\xb0\xf1\x98\x63\xab\x1b\x50\x73\x77\x0b\x0c\xd5\xf5\x33\xac\xde\x30\xc6\xfb\x95\x3c\xf3\xda\x68\x02\x64\xe3\x0f\xc1\x1b\xff\x9a\x19\xbf\xfa\xb4\x77\x9b\x62\x23\xc3\xfb\x3f\xe0\xf7\x1a\xba\xde\x4e\xb7\xc0\x9c\x41\xe2\x4c\x22\xd2\x3f\xa1\x48\xe6\xa1\x73\xfe\xb6\x39\x84\xd1\xbc\x6e\xe3\xa0\x2d\x91\x5b\x75\x2c\xea\xf9\x2a\x30\x15\xec\xeb\x38\xca\x58\x6c\x68\x01\xb3\x7c\x34\xce\xfb\x2c\xff\x25\xea\x23\xc0\x86\x62\xdc\xab\x26\xa7\xa9\x3a\x28\x5d\x05\xd3\x04\x4c"
+ , salt = "\xa7\x78\x21\xeb\xbb\xef\x24\x62\x8e\x4e\x12\xe1\xd0\xea\x96\xde\x39\x8f\x7b\x0f"
+ , signature = "\x32\xc7\xca\x38\xff\x26\x94\x9a\x15\x00\x0c\x4b\xa0\x4b\x2b\x13\xb3\x5a\x38\x10\xe5\x68\x18\x4d\x7e\xca\xba\xa1\x66\xb7\xff\xab\xdd\xf2\xb6\xcf\x4b\xa0\x71\x24\x92\x37\x90\xf2\xe5\xb1\xa5\xbe\x04\x0a\xea\x36\xfe\x13\x2e\xc1\x30\xe1\xf1\x05\x67\x98\x2d\x17\xac\x3e\x89\xb8\xd2\x6c\x30\x94\x03\x4e\x76\x2d\x2e\x03\x12\x64\xf0\x11\x70\xbe\xec\xb3\xd1\x43\x9e\x05\x84\x6f\x25\x45\x83\x67\xa7\xd9\xc0\x20\x60\x44\x46\x72\x67\x1e\x64\xe8\x77\x86\x45\x59\xca\x19\xb2\x07\x4d\x58\x8a\x28\x1b\x58\x04\xd2\x37\x72\xfb\xbe\x19"
+ }
+ -- Example 7.5
+ , VectorPSS
+ { message = "\x45\x01\x3c\xeb\xaf\xd9\x60\xb2\x55\x47\x6a\x8e\x25\x98\xb9\xaa\x32\xef\xbe\x6d\xc1\xf3\x4f\x4a\x49\x8d\x8c\xf5\xa2\xb4\x54\x8d\x08\xc5\x5d\x5f\x95\xf7\xbc\xc9\x61\x91\x63\x05\x6f\x2d\x58\xb5\x2f\xa0\x32"
+ , salt = "\x9d\x5a\xd8\xeb\x45\x21\x34\xb6\x5d\xc3\xa9\x8b\x6a\x73\xb5\xf7\x41\x60\x9c\xd6"
+ , signature = "\x07\xeb\x65\x1d\x75\xf1\xb5\x2b\xc2\x63\xb2\xe1\x98\x33\x6e\x99\xfb\xeb\xc4\xf3\x32\x04\x9a\x92\x2a\x10\x81\x56\x07\xee\x2d\x98\x9d\xb3\xa4\x49\x5b\x7d\xcc\xd3\x8f\x58\xa2\x11\xfb\x7e\x19\x31\x71\xa3\xd8\x91\x13\x24\x37\xeb\xca\x44\xf3\x18\xb2\x80\x50\x9e\x52\xb5\xfa\x98\xfc\xce\x82\x05\xd9\x69\x7c\x8e\xe4\xb7\xff\x59\xd4\xc5\x9c\x79\x03\x8a\x19\x70\xbd\x2a\x0d\x45\x1e\xcd\xc5\xef\x11\xd9\x97\x9c\x9d\x35\xf8\xc7\x0a\x61\x63\x71\x76\x07\x89\x0d\x58\x6a\x7c\x6d\xc0\x1c\x79\xf8\x6a\x8f\x28\xe8\x52\x35\xf8\xc2\xf1"
+ }
+ -- Example 7.6
+ , VectorPSS
+ { message = "\x23\x58\x09\x70\x86\xc8\x99\x32\x3e\x75\xd9\xc9\x0d\x0c\x09\xf1\x2d\x9d\x54\xed\xfb\xdf\x70\xa9\xc2\xeb\x5a\x04\xd8\xf3\x6b\x9b\x2b\xdf\x2a\xab\xe0\xa5\xbd\xa1\x96\x89\x37\xf9\xd6\xeb\xd3\xb6\xb2\x57\xef\xb3\x13\x6d\x41\x31\xf9\xac\xb5\x9b\x85\xe2\x60\x2c\x2a\x3f\xcd\xc8\x35\x49\x4a\x1f\x4e\x5e\xc1\x8b\x22\x6c\x80\x23\x2b\x36\xa7\x5a\x45\xfd\xf0\x9a\x7e\xa9\xe9\x8e\xfb\xde\x14\x50\xd1\x19\x4b\xf1\x2e\x15\xa4\xc5\xf9\xeb\x5c\x0b\xce\x52\x69\xe0\xc3\xb2\x8c\xfa\xb6\x55\xd8\x1a\x61\xa2\x0b\x4b\xe2\xf5\x44\x59\xbb\x25\xa0\xdb\x94\xc5\x22\x18\xbe\x10\x9a\x74\x26\xde\x83\x01\x44\x24\x78\x9a\xaa\x90\xe5\x05\x6e\x63\x2a\x69\x81\x15\xe2\x82\xc1\xa5\x64\x10\xf2\x6c\x20\x72\xf1\x93\x48\x1a\x9d\xcd\x88\x05\x72\x00\x5e\x64\xf4\x08\x2e\xcf"
+ , salt = "\x3f\x2e\xfc\x59\x58\x80\xa7\xd4\x7f\xcf\x3c\xba\x04\x98\x3e\xa5\x4c\x4b\x73\xfb"
+ , signature = "\x18\xda\x3c\xdc\xfe\x79\xbf\xb7\x7f\xd9\xc3\x2f\x37\x7a\xd3\x99\x14\x6f\x0a\x8e\x81\x06\x20\x23\x32\x71\xa6\xe3\xed\x32\x48\x90\x3f\x5c\xdc\x92\xdc\x79\xb5\x5d\x3e\x11\x61\x5a\xa0\x56\xa7\x95\x85\x37\x92\xa3\x99\x8c\x34\x9c\xa5\xc4\x57\xe8\xca\x7d\x29\xd7\x96\xaa\x24\xf8\x34\x91\x70\x9b\xef\xcf\xb1\x51\x0e\xa5\x13\xc9\x28\x29\xa3\xf0\x0b\x10\x4f\x65\x56\x34\xf3\x20\x75\x2e\x13\x0e\xc0\xcc\xf6\x75\x4f\xf8\x93\xdb\x30\x29\x32\xbb\x02\x5e\xb6\x0e\x87\x82\x25\x98\xfc\x61\x9e\x0e\x98\x17\x37\xa9\xa4\xc4\x15\x2d\x33"
+ }
+ ]
+
-- ==================================
-- Example 8: A 1031-bit RSA Key Pair
-- ==================================
@@ -326,6 +558,122 @@ vectorsKey8 =
}
]
+-- ==================================
+-- Example 9: A 1536-bit RSA Key Pair
+-- ==================================
+
+rsaKey9 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0xe6bd692ac96645790403fdd0f5beb8b9bf92ed10007fc365046419dd06c05c5b5b2f48ecf989e4ce269109979cbb40b4a0ad24d22483d1ee315ad4ccb1534268352691c524f6dd8e6c29d224cf246973aec86c5bf6b1401a850d1b9ad1bb8cbcec47b06f0f8c7f45d3fc8f319299c5433ddbc2b3053b47ded2ecd4a4caefd614833dc8bb622f317ed076b8057fe8de3f84480ad5e83e4a61904a4f248fb397027357e1d30e463139815c6fd4fd5ac5b8172a45230ecb6318a04f1455d84e5a8b
+ , public_e = 0x010001
+ , public_size = 192
+ }
+ , private_d = 0x6a7fd84fb85fad073b34406db74f8d61a6abc12196a961dd79565e9da6e5187bce2d980250f7359575359270d91590bb0e427c71460b55d51410b191bcf309fea131a92c8e702738fa719f1e0041f52e40e91f229f4d96a1e6f172e15596b4510a6daec26105f2bebc53316b87bdf21311666070e8dfee69d52c71a976caae79c72b68d28580dc686d9f5129d225f82b3d615513a882b3db91416b48ce08888213e37eeb9af800d81cab328ce420689903c00c7b5fd31b75503a6d419684d629
+ , private_p = 0xf8eb97e98df12664eefdb761596a69ddcd0e76daece6ed4bf5a1b50ac086f7928a4d2f8726a77e515b74da41988f220b1cc87aa1fc810ce99a82f2d1ce821edced794c6941f42c7a1a0b8c4d28c75ec60b652279f6154a762aed165d47dee367
+ , private_q = 0xed4d71d0a6e24b93c2e5f6b4bbe05f5fb0afa042d204fe3378d365c2f288b6a8dad7efe45d153eef40cacc7b81ff934002d108994b94a5e4728cd9c963375ae49965bda55cbf0efed8d6553b4027f2d86208a6e6b489c176128092d629e49d3d
+ , private_dP = 0x2bb68bddfb0c4f56c8558bffaf892d8043037841e7fa81cfa61a38c5e39b901c8ee71122a5da2227bd6cdeeb481452c12ad3d61d5e4f776a0ab556591befe3e59e5a7fddb8345e1f2f35b9f4cee57c32414c086aec993e9353e480d9eec6289f
+ , private_dQ = 0x4ff897709fad079746494578e70fd8546130eeab5627c49b080f05ee4ad9f3e4b7cba9d6a5dff113a41c3409336833f190816d8a6bc42e9bec56b7567d0f3c9c696db619b245d901dd856db7c8092e77e9a1cccd56ee4dba42c5fdb61aec2669
+ , private_qinv = 0x77b9d1137b50404a982729316efafc7dfe66d34e5a182600d5f30a0a8512051c560d081d4d0a1835ec3d25a60f4e4d6aa948b2bf3dbb5b124cbbc3489255a3a948372f6978496745f943e1db4f18382ceaa505dfc65757bb3f857a58dce52156
+ }
+
+vectorsKey9 =
+ [
+ -- Example 9.1
+ VectorPSS
+ { message = "\xa8\x8e\x26\x58\x55\xe9\xd7\xca\x36\xc6\x87\x95\xf0\xb3\x1b\x59\x1c\xd6\x58\x7c\x71\xd0\x60\xa0\xb3\xf7\xf3\xea\xef\x43\x79\x59\x22\x02\x8b\xc2\xb6\xad\x46\x7c\xfc\x2d\x7f\x65\x9c\x53\x85\xaa\x70\xba\x36\x72\xcd\xde\x4c\xfe\x49\x70\xcc\x79\x04\x60\x1b\x27\x88\x72\xbf\x51\x32\x1c\x4a\x97\x2f\x3c\x95\x57\x0f\x34\x45\xd4\xf5\x79\x80\xe0\xf2\x0d\xf5\x48\x46\xe6\xa5\x2c\x66\x8f\x12\x88\xc0\x3f\x95\x00\x6e\xa3\x2f\x56\x2d\x40\xd5\x2a\xf9\xfe\xb3\x2f\x0f\xa0\x6d\xb6\x5b\x58\x8a\x23\x7b\x34\xe5\x92\xd5\x5c\xf9\x79\xf9\x03\xa6\x42\xef\x64\xd2\xed\x54\x2a\xa8\xc7\x7d\xc1\xdd\x76\x2f\x45\xa5\x93\x03\xed\x75\xe5\x41\xca\x27\x1e\x2b\x60\xca\x70\x9e\x44\xfa\x06\x61\x13\x1e\x8d\x5d\x41\x63\xfd\x8d\x39\x85\x66\xce\x26\xde\x87\x30\xe7\x2f\x9c\xca\x73\x76\x41\xc2\x44\x15\x94\x20\x63\x70\x28\xdf\x0a\x18\x07\x9d\x62\x08\xea\x8b\x47\x11\xa2\xc7\x50\xf5"
+ , salt = "\xc0\xa4\x25\x31\x3d\xf8\xd7\x56\x4b\xd2\x43\x4d\x31\x15\x23\xd5\x25\x7e\xed\x80"
+ , signature = "\x58\x61\x07\x22\x6c\x3c\xe0\x13\xa7\xc8\xf0\x4d\x1a\x6a\x29\x59\xbb\x4b\x8e\x20\x5b\xa4\x3a\x27\xb5\x0f\x12\x41\x11\xbc\x35\xef\x58\x9b\x03\x9f\x59\x32\x18\x7c\xb6\x96\xd7\xd9\xa3\x2c\x0c\x38\x30\x0a\x5c\xdd\xa4\x83\x4b\x62\xd2\xeb\x24\x0a\xf3\x3f\x79\xd1\x3d\xfb\xf0\x95\xbf\x59\x9e\x0d\x96\x86\x94\x8c\x19\x64\x74\x7b\x67\xe8\x9c\x9a\xba\x5c\xd8\x50\x16\x23\x6f\x56\x6c\xc5\x80\x2c\xb1\x3e\xad\x51\xbc\x7c\xa6\xbe\xf3\xb9\x4d\xcb\xdb\xb1\xd5\x70\x46\x97\x71\xdf\x0e\x00\xb1\xa8\xa0\x67\x77\x47\x2d\x23\x16\x27\x9e\xda\xe8\x64\x74\x66\x8d\x4e\x1e\xff\xf9\x5f\x1d\xe6\x1c\x60\x20\xda\x32\xae\x92\xbb\xf1\x65\x20\xfe\xf3\xcf\x4d\x88\xf6\x11\x21\xf2\x4b\xbd\x9f\xe9\x1b\x59\xca\xf1\x23\x5b\x2a\x93\xff\x81\xfc\x40\x3a\xdd\xf4\xeb\xde\xa8\x49\x34\xa9\xcd\xaf\x8e\x1a\x9e"
+ }
+ -- Example 9.2
+ , VectorPSS
+ { message = "\xc8\xc9\xc6\xaf\x04\xac\xda\x41\x4d\x22\x7e\xf2\x3e\x08\x20\xc3\x73\x2c\x50\x0d\xc8\x72\x75\xe9\x5b\x0d\x09\x54\x13\x99\x3c\x26\x58\xbc\x1d\x98\x85\x81\xba\x87\x9c\x2d\x20\x1f\x14\xcb\x88\xce\xd1\x53\xa0\x19\x69\xa7\xbf\x0a\x7b\xe7\x9c\x84\xc1\x48\x6b\xc1\x2b\x3f\xa6\xc5\x98\x71\xb6\x82\x7c\x8c\xe2\x53\xca\x5f\xef\xa8\xa8\xc6\x90\xbf\x32\x6e\x8e\x37\xcd\xb9\x6d\x90\xa8\x2e\xba\xb6\x9f\x86\x35\x0e\x18\x22\xe8\xbd\x53\x6a\x2e"
+ , salt = "\xb3\x07\xc4\x3b\x48\x50\xa8\xda\xc2\xf1\x5f\x32\xe3\x78\x39\xef\x8c\x5c\x0e\x91"
+ , signature = "\x80\xb6\xd6\x43\x25\x52\x09\xf0\xa4\x56\x76\x38\x97\xac\x9e\xd2\x59\xd4\x59\xb4\x9c\x28\x87\xe5\x88\x2e\xcb\x44\x34\xcf\xd6\x6d\xd7\xe1\x69\x93\x75\x38\x1e\x51\xcd\x7f\x55\x4f\x2c\x27\x17\x04\xb3\x99\xd4\x2b\x4b\xe2\x54\x0a\x0e\xca\x61\x95\x1f\x55\x26\x7f\x7c\x28\x78\xc1\x22\x84\x2d\xad\xb2\x8b\x01\xbd\x5f\x8c\x02\x5f\x7e\x22\x84\x18\xa6\x73\xc0\x3d\x6b\xc0\xc7\x36\xd0\xa2\x95\x46\xbd\x67\xf7\x86\xd9\xd6\x92\xcc\xea\x77\x8d\x71\xd9\x8c\x20\x63\xb7\xa7\x10\x92\x18\x7a\x4d\x35\xaf\x10\x81\x11\xd8\x3e\x83\xea\xe4\x6c\x46\xaa\x34\x27\x7e\x06\x04\x45\x89\x90\x37\x88\xf1\xd5\xe7\xce\xe2\x5f\xb4\x85\xe9\x29\x49\x11\x88\x14\xd6\xf2\xc3\xee\x36\x14\x89\x01\x6f\x32\x7f\xb5\xbc\x51\x7e\xb5\x04\x70\xbf\xfa\x1a\xfa\x5f\x4c\xe9\xaa\x0c\xe5\xb8\xee\x19\xbf\x55\x01\xb9\x58"
+ }
+ -- Example 9.3
+ , VectorPSS
+ { message = "\x0a\xfa\xd4\x2c\xcd\x4f\xc6\x06\x54\xa5\x50\x02\xd2\x28\xf5\x2a\x4a\x5f\xe0\x3b\x8b\xbb\x08\xca\x82\xda\xca\x55\x8b\x44\xdb\xe1\x26\x6e\x50\xc0\xe7\x45\xa3\x6d\x9d\x29\x04\xe3\x40\x8a\xbc\xd1\xfd\x56\x99\x94\x06\x3f\x4a\x75\xcc\x72\xf2\xfe\xe2\xa0\xcd\x89\x3a\x43\xaf\x1c\x5b\x8b\x48\x7d\xf0\xa7\x16\x10\x02\x4e\x4f\x6d\xdf\x9f\x28\xad\x08\x13\xc1\xaa\xb9\x1b\xcb\x3c\x90\x64\xd5\xff\x74\x2d\xef\xfe\xa6\x57\x09\x41\x39\x36\x9e\x5e\xa6\xf4\xa9\x63\x19\xa5\xcc\x82\x24\x14\x5b\x54\x50\x62\x75\x8f\xef\xd1\xfe\x34\x09\xae\x16\x92\x59\xc6\xcd\xfd\x6b\x5f\x29\x58\xe3\x14\xfa\xec\xbe\x69\xd2\xca\xce\x58\xee\x55\x17\x9a\xb9\xb3\xe6\xd1\xec\xc1\x4a\x55\x7c\x5f\xeb\xe9\x88\x59\x52\x64\xfc\x5d\xa1\xc5\x71\x46\x2e\xca\x79\x8a\x18\xa1\xa4\x94\x0c\xda\xb4\xa3\xe9\x20\x09\xcc\xd4\x2e\x1e\x94\x7b\x13\x14\xe3\x22\x38\xa2\xde\xce\x7d\x23\xa8\x9b\x5b\x30\xc7\x51\xfd\x0a\x4a\x43\x0d\x2c\x54\x85\x94"
+ , salt = "\x9a\x2b\x00\x7e\x80\x97\x8b\xbb\x19\x2c\x35\x4e\xb7\xda\x9a\xed\xfc\x74\xdb\xf5"
+ , signature = "\x48\x44\x08\xf3\x89\x8c\xd5\xf5\x34\x83\xf8\x08\x19\xef\xbf\x27\x08\xc3\x4d\x27\xa8\xb2\xa6\xfa\xe8\xb3\x22\xf9\x24\x02\x37\xf9\x81\x81\x7a\xca\x18\x46\xf1\x08\x4d\xaa\x6d\x7c\x07\x95\xf6\xe5\xbf\x1a\xf5\x9c\x38\xe1\x85\x84\x37\xce\x1f\x7e\xc4\x19\xb9\x8c\x87\x36\xad\xf6\xdd\x9a\x00\xb1\x80\x6d\x2b\xd3\xad\x0a\x73\x77\x5e\x05\xf5\x2d\xfe\xf3\xa5\x9a\xb4\xb0\x81\x43\xf0\xdf\x05\xcd\x1a\xd9\xd0\x4b\xec\xec\xa6\xda\xa4\xa2\x12\x98\x03\xe2\x00\xcb\xc7\x77\x87\xca\xf4\xc1\xd0\x66\x3a\x6c\x59\x87\xb6\x05\x95\x20\x19\x78\x2c\xaf\x2e\xc1\x42\x6d\x68\xfb\x94\xed\x1d\x4b\xe8\x16\xa7\xed\x08\x1b\x77\xe6\xab\x33\x0b\x3f\xfc\x07\x38\x20\xfe\xcd\xe3\x72\x7f\xcb\xe2\x95\xee\x61\xa0\x50\xa3\x43\x65\x86\x37\xc3\xfd\x65\x9c\xfb\x63\x73\x6d\xe3\x2d\x9f\x90\xd3\xc2\xf6\x3e\xca"
+ }
+ -- Example 9.4
+ , VectorPSS
+ { message = "\x1d\xfd\x43\xb4\x6c\x93\xdb\x82\x62\x9b\xda\xe2\xbd\x0a\x12\xb8\x82\xea\x04\xc3\xb4\x65\xf5\xcf\x93\x02\x3f\x01\x05\x96\x26\xdb\xbe\x99\xf2\x6b\xb1\xbe\x94\x9d\xdd\xd1\x6d\xc7\xf3\xde\xbb\x19\xa1\x94\x62\x7f\x0b\x22\x44\x34\xdf\x7d\x87\x00\xe9\xe9\x8b\x06\xe3\x60\xc1\x2f\xdb\xe3\xd1\x9f\x51\xc9\x68\x4e\xb9\x08\x9e\xcb\xb0\xa2\xf0\x45\x03\x99\xd3\xf5\x9e\xac\x72\x94\x08\x5d\x04\x4f\x53\x93\xc6\xce\x73\x74\x23\xd8\xb8\x6c\x41\x53\x70\xd3\x89\xe3\x0b\x9f\x0a\x3c\x02\xd2\x5d\x00\x82\xe8\xad\x6f\x3f\x1e\xf2\x4a\x45\xc3\xcf\x82\xb3\x83\x36\x70\x63\xa4\xd4\x61\x3e\x42\x64\xf0\x1b\x2d\xac\x2e\x5a\xa4\x20\x43\xf8\xfb\x5f\x69\xfa\x87\x1d\x14\xfb\x27\x3e\x76\x7a\x53\x1c\x40\xf0\x2f\x34\x3b\xc2\xfb\x45\xa0\xc7\xe0\xf6\xbe\x25\x61\x92\x3a\x77\x21\x1d\x66\xa6\xe2\xdb\xb4\x3c\x36\x63\x50\xbe\xae\x22\xda\x3a\xc2\xc1\xf5\x07\x70\x96\xfc\xb5\xc4\xbf\x25\x5f\x75\x74\x35\x1a\xe0\xb1\xe1\xf0\x36\x32\x81\x7c\x08\x56\xd4\xa8\xba\x97\xaf\xbd\xc8\xb8\x58\x55\x40\x2b\xc5\x69\x26\xfc\xec\x20\x9f\x9e\xa8"
+ , salt = "\x70\xf3\x82\xbd\xdf\x4d\x5d\x2d\xd8\x8b\x3b\xc7\xb7\x30\x8b\xe6\x32\xb8\x40\x45"
+ , signature = "\x84\xeb\xeb\x48\x1b\xe5\x98\x45\xb4\x64\x68\xba\xfb\x47\x1c\x01\x12\xe0\x2b\x23\x5d\x84\xb5\xd9\x11\xcb\xd1\x92\x6e\xe5\x07\x4a\xe0\x42\x44\x95\xcb\x20\xe8\x23\x08\xb8\xeb\xb6\x5f\x41\x9a\x03\xfb\x40\xe7\x2b\x78\x98\x1d\x88\xaa\xd1\x43\x05\x36\x85\x17\x2c\x97\xb2\x9c\x8b\x7b\xf0\xae\x73\xb5\xb2\x26\x3c\x40\x3d\xa0\xed\x2f\x80\xff\x74\x50\xaf\x78\x28\xeb\x8b\x86\xf0\x02\x8b\xd2\xa8\xb1\x76\xa4\xd2\x28\xcc\xce\xa1\x83\x94\xf2\x38\xb0\x9f\xf7\x58\xcc\x00\xbc\x04\x30\x11\x52\x35\x57\x42\xf2\x82\xb5\x4e\x66\x3a\x91\x9e\x70\x9d\x8d\xa2\x4a\xde\x55\x00\xa7\xb9\xaa\x50\x22\x6e\x0c\xa5\x29\x23\xe6\xc2\xd8\x60\xec\x50\xff\x48\x0f\xa5\x74\x77\xe8\x2b\x05\x65\xf4\x37\x9f\x79\xc7\x72\xd5\xc2\xda\x80\xaf\x9f\xbf\x32\x5e\xce\x6f\xc2\x0b\x00\x96\x16\x14\xbe\xe8\x9a\x18\x3e"
+ }
+ -- Example 9.5
+ , VectorPSS
+ { message = "\x1b\xdc\x6e\x7c\x98\xfb\x8c\xf5\x4e\x9b\x09\x7b\x66\xa8\x31\xe9\xcf\xe5\x2d\x9d\x48\x88\x44\x8e\xe4\xb0\x97\x80\x93\xba\x1d\x7d\x73\xae\x78\xb3\xa6\x2b\xa4\xad\x95\xcd\x28\x9c\xcb\x9e\x00\x52\x26\xbb\x3d\x17\x8b\xcc\xaa\x82\x1f\xb0\x44\xa4\xe2\x1e\xe9\x76\x96\xc1\x4d\x06\x78\xc9\x4c\x2d\xae\x93\xb0\xad\x73\x92\x22\x18\x55\x3d\xaa\x7e\x44\xeb\xe5\x77\x25\xa7\xa4\x5c\xc7\x2b\x9b\x21\x38\xa6\xb1\x7c\x8d\xb4\x11\xce\x82\x79\xee\x12\x41\xaf\xf0\xa8\xbe\xc6\xf7\x7f\x87\xed\xb0\xc6\x9c\xb2\x72\x36\xe3\x43\x5a\x80\x0b\x19\x2e\x4f\x11\xe5\x19\xe3\xfe\x30\xfc\x30\xea\xcc\xca\x4f\xbb\x41\x76\x90\x29\xbf\x70\x8e\x81\x7a\x9e\x68\x38\x05\xbe\x67\xfa\x10\x09\x84\x68\x3b\x74\x83\x8e\x3b\xcf\xfa\x79\x36\x6e\xed\x1d\x48\x1c\x76\x72\x91\x18\x83\x8f\x31\xba\x8a\x04\x8a\x93\xc1\xbe\x44\x24\x59\x8e\x8d\xf6\x32\x8b\x7a\x77\x88\x0a\x3f\x9c\x7e\x2e\x8d\xfc\xa8\xeb\x5a\x26\xfb\x86\xbd\xc5\x56\xd4\x2b\xbe\x01\xd9\xfa\x6e\xd8\x06\x46\x49\x1c\x93\x41"
+ , salt = "\xd6\x89\x25\x7a\x86\xef\xfa\x68\x21\x2c\x5e\x0c\x61\x9e\xca\x29\x5f\xb9\x1b\x67"
+ , signature = "\x82\x10\x2d\xf8\xcb\x91\xe7\x17\x99\x19\xa0\x4d\x26\xd3\x35\xd6\x4f\xbc\x2f\x87\x2c\x44\x83\x39\x43\x24\x1d\xe8\x45\x48\x10\x27\x4c\xdf\x3d\xb5\xf4\x2d\x42\x3d\xb1\x52\xaf\x71\x35\xf7\x01\x42\x0e\x39\xb4\x94\xa6\x7c\xbf\xd1\x9f\x91\x19\xda\x23\x3a\x23\xda\x5c\x64\x39\xb5\xba\x0d\x2b\xc3\x73\xee\xe3\x50\x70\x01\x37\x8d\x4a\x40\x73\x85\x6b\x7f\xe2\xab\xa0\xb5\xee\x93\xb2\x7f\x4a\xfe\xc7\xd4\xd1\x20\x92\x1c\x83\xf6\x06\x76\x5b\x02\xc1\x9e\x4d\x6a\x1a\x3b\x95\xfa\x4c\x42\x29\x51\xbe\x4f\x52\x13\x10\x77\xef\x17\x17\x97\x29\xcd\xdf\xbd\xb5\x69\x50\xdb\xac\xee\xfe\x78\xcb\x16\x64\x0a\x09\x9e\xa5\x6d\x24\x38\x9e\xef\x10\xf8\xfe\xcb\x31\xba\x3e\xa3\xb2\x27\xc0\xa8\x66\x98\xbb\x89\xe3\xe9\x36\x39\x05\xbf\x22\x77\x7b\x2a\x3a\xa5\x21\xb6\x5b\x4c\xef\x76\xd8\x3b\xde\x4c"
+ }
+ -- Example 9.6
+ , VectorPSS
+ { message = "\x88\xc7\xa9\xf1\x36\x04\x01\xd9\x0e\x53\xb1\x01\xb6\x1c\x53\x25\xc3\xc7\x5d\xb1\xb4\x11\xfb\xeb\x8e\x83\x0b\x75\xe9\x6b\x56\x67\x0a\xd2\x45\x40\x4e\x16\x79\x35\x44\xee\x35\x4b\xc6\x13\xa9\x0c\xc9\x84\x87\x15\xa7\x3d\xb5\x89\x3e\x7f\x6d\x27\x98\x15\xc0\xc1\xde\x83\xef\x8e\x29\x56\xe3\xa5\x6e\xd2\x6a\x88\x8d\x7a\x9c\xdc\xd0\x42\xf4\xb1\x6b\x7f\xa5\x1e\xf1\xa0\x57\x36\x62\xd1\x6a\x30\x2d\x0e\xc5\xb2\x85\xd2\xe0\x3a\xd9\x65\x29\xc8\x7b\x3d\x37\x4d\xb3\x72\xd9\x5b\x24\x43\xd0\x61\xb6\xb1\xa3\x50\xba\x87\x80\x7e\xd0\x83\xaf\xd1\xeb\x05\xc3\xf5\x2f\x4e\xba\x5e\xd2\x22\x77\x14\xfd\xb5\x0b\x9d\x9d\x9d\xd6\x81\x4f\x62\xf6\x27\x2f\xcd\x5c\xdb\xce\x7a\x9e\xf7\x97"
+ , salt = "\xc2\x5f\x13\xbf\x67\xd0\x81\x67\x1a\x04\x81\xa1\xf1\x82\x0d\x61\x3b\xba\x22\x76"
+ , signature = "\xa7\xfd\xb0\xd2\x59\x16\x5c\xa2\xc8\x8d\x00\xbb\xf1\x02\x8a\x86\x7d\x33\x76\x99\xd0\x61\x19\x3b\x17\xa9\x64\x8e\x14\xcc\xbb\xaa\xde\xac\xaa\xcd\xec\x81\x5e\x75\x71\x29\x4e\xbb\x8a\x11\x7a\xf2\x05\xfa\x07\x8b\x47\xb0\x71\x2c\x19\x9e\x3a\xd0\x51\x35\xc5\x04\xc2\x4b\x81\x70\x51\x15\x74\x08\x02\x48\x79\x92\xff\xd5\x11\xd4\xaf\xc6\xb8\x54\x49\x1e\xb3\xf0\xdd\x52\x31\x39\x54\x2f\xf1\x5c\x31\x01\xee\x85\x54\x35\x17\xc6\xa3\xc7\x94\x17\xc6\x7e\x2d\xd9\xaa\x74\x1e\x9a\x29\xb0\x6d\xcb\x59\x3c\x23\x36\xb3\x67\x0a\xe3\xaf\xba\xc7\xc3\xe7\x6e\x21\x54\x73\xe8\x66\xe3\x38\xca\x24\x4d\xe0\x0b\x62\x62\x4d\x6b\x94\x26\x82\x2c\xea\xe9\xf8\xcc\x46\x08\x95\xf4\x12\x50\x07\x3f\xd4\x5c\x5a\x1e\x7b\x42\x5c\x20\x4a\x42\x3a\x69\x91\x59\xf6\x90\x3e\x71\x0b\x37\xa7\xbb\x2b\xc8\x04\x9f"
+ }
+ ]
+
+-- ===================================
+-- Example 10: A 2048-bit RSA Key Pair
+-- ===================================
+
+rsaKey10 = PrivateKey
+ { private_pub = PublicKey
+ { public_n = 0xa5dd867ac4cb02f90b9457d48c14a770ef991c56c39c0ec65fd11afa8937cea57b9be7ac73b45c0017615b82d622e318753b6027c0fd157be12f8090fee2a7adcd0eef759f88ba4997c7a42d58c9aa12cb99ae001fe521c13bb5431445a8d5ae4f5e4c7e948ac227d3604071f20e577e905fbeb15dfaf06d1de5ae6253d63a6a2120b31a5da5dabc9550600e20f27d3739e2627925fea3cc509f21dff04e6eea4549c540d6809ff9307eede91fff58733d8385a237d6d3705a33e391900992070df7adf1357cf7e3700ce3667de83f17b8df1778db381dce09cb4ad058a511001a738198ee27cf55a13b754539906582ec8b174bd58d5d1f3d767c613721ae05
+ , public_e = 0x010001
+ , public_size = 256
+ }
+ , private_d = 0x2d2ff567b3fe74e06191b7fded6de112290c670692430d5969184047da234c9693deed1673ed429539c969d372c04d6b47e0f5b8cee0843e5c22835dbd3b05a0997984ae6058b11bc4907cbf67ed84fa9ae252dfb0d0cd49e618e35dfdfe59bca3ddd66c33cebbc77ad441aa695e13e324b518f01c60f5a85c994ad179f2a6b5fbe93402b11767be01bf073444d6ba1dd2bca5bd074d4a5fae3531ad1303d84b30d897318cbbba04e03c2e66de6d91f82f96ea1d4bb54a5aae102d594657f5c9789553512b296dea29d8023196357e3e3a6e958f39e3c2344038ea604b31edc6f0f7ff6e7181a57c92826a268f86768e96f878562fc71d85d69e448612f7048f
+ , private_p = 0xcfd50283feeeb97f6f08d73cbc7b3836f82bbcd499479f5e6f76fdfcb8b38c4f71dc9e88bd6a6f76371afd65d2af1862b32afb34a95f71b8b132043ffebe3a952baf7592448148c03f9c69b1d68e4ce5cf32c86baf46fed301ca1ab403069b32f456b91f71898ab081cd8c4252ef5271915c9794b8f295851da7510f99cb73eb
+ , private_q = 0xcc4e90d2a1b3a065d3b2d1f5a8fce31b544475664eab561d2971b99fb7bef844e8ec1f360b8c2ac8359692971ea6a38f723fcc211f5dbcb177a0fdac5164a1d4ff7fbb4e829986353cb983659a148cdd420c7d31ba3822ea90a32be46c030e8c17e1fa0ad37859e06b0aa6fa3b216d9cbe6c0e22339769c0a615913e5da719cf
+ , private_dP = 0x1c2d1fc32f6bc4004fd85dfde0fbbf9a4c38f9c7c4e41dea1aa88234a201cd92f3b7da526583a98ad85bb360fb983b711e23449d561d1778d7a515486bcbf47b46c9e9e1a3a1f77000efbeb09a8afe47e5b857cda99cb16d7fff9b712e3bd60ca96d9c7973d616d46934a9c050281c004399ceff1db7dda78766a8a9b9cb0873
+ , private_dQ = 0xcb3b3c04caa58c60be7d9b2debb3e39643f4f57397be08236a1e9eafaa706536e71c3acfe01cc651f23c9e05858fee13bb6a8afc47df4edc9a4ba30bcecb73d0157852327ee789015c2e8dee7b9f05a0f31ac94eb6173164740c5c95147cd5f3b5ae2cb4a83787f01d8ab31f27c2d0eea2dd8a11ab906aba207c43c6ee125331
+ , private_qinv = 0x12f6b2cf1374a736fad05616050f96ab4b61d1177c7f9d525a29f3d180e77667e99d99abf0525d0758660f3752655b0f25b8df8431d9a8ff77c16c12a0a5122a9f0bf7cfd5a266a35c159f991208b90316ff444f3e0b6bd0e93b8a7a2448e957e3dda6cfcf2266b106013ac46808d3b3887b3b00344baac9530b4ce708fc32b6
+ }
+
+vectorsKey10 =
+ [
+ -- Example 10.1
+ VectorPSS
+ { message = "\x88\x31\x77\xe5\x12\x6b\x9b\xe2\xd9\xa9\x68\x03\x27\xd5\x37\x0c\x6f\x26\x86\x1f\x58\x20\xc4\x3d\xa6\x7a\x3a\xd6\x09"
+ , salt = "\x04\xe2\x15\xee\x6f\xf9\x34\xb9\xda\x70\xd7\x73\x0c\x87\x34\xab\xfc\xec\xde\x89"
+ , signature = "\x82\xc2\xb1\x60\x09\x3b\x8a\xa3\xc0\xf7\x52\x2b\x19\xf8\x73\x54\x06\x6c\x77\x84\x7a\xbf\x2a\x9f\xce\x54\x2d\x0e\x84\xe9\x20\xc5\xaf\xb4\x9f\xfd\xfd\xac\xe1\x65\x60\xee\x94\xa1\x36\x96\x01\x14\x8e\xba\xd7\xa0\xe1\x51\xcf\x16\x33\x17\x91\xa5\x72\x7d\x05\xf2\x1e\x74\xe7\xeb\x81\x14\x40\x20\x69\x35\xd7\x44\x76\x5a\x15\xe7\x9f\x01\x5c\xb6\x6c\x53\x2c\x87\xa6\xa0\x59\x61\xc8\xbf\xad\x74\x1a\x9a\x66\x57\x02\x28\x94\x39\x3e\x72\x23\x73\x97\x96\xc0\x2a\x77\x45\x5d\x0f\x55\x5b\x0e\xc0\x1d\xdf\x25\x9b\x62\x07\xfd\x0f\xd5\x76\x14\xce\xf1\xa5\x57\x3b\xaa\xff\x4e\xc0\x00\x69\x95\x16\x59\xb8\x5f\x24\x30\x0a\x25\x16\x0c\xa8\x52\x2d\xc6\xe6\x72\x7e\x57\xd0\x19\xd7\xe6\x36\x29\xb8\xfe\x5e\x89\xe2\x5c\xc1\x5b\xeb\x3a\x64\x75\x77\x55\x92\x99\x28\x0b\x9b\x28\xf7\x9b\x04\x09\x00\x0b\xe2\x5b\xbd\x96\x40\x8b\xa3\xb4\x3c\xc4\x86\x18\x4d\xd1\xc8\xe6\x25\x53\xfa\x1a\xf4\x04\x0f\x60\x66\x3d\xe7\xf5\xe4\x9c\x04\x38\x8e\x25\x7f\x1c\xe8\x9c\x95\xda\xb4\x8a\x31\x5d\x9b\x66\xb1\xb7\x62\x82\x33\x87\x6f\xf2\x38\x52\x30\xd0\x70\xd0\x7e\x16\x66"
+ }
+ -- Example 10.2
+ , VectorPSS
+ { message = "\xdd\x67\x0a\x01\x46\x58\x68\xad\xc9\x3f\x26\x13\x19\x57\xa5\x0c\x52\xfb\x77\x7c\xdb\xaa\x30\x89\x2c\x9e\x12\x36\x11\x64\xec\x13\x97\x9d\x43\x04\x81\x18\xe4\x44\x5d\xb8\x7b\xee\x58\xdd\x98\x7b\x34\x25\xd0\x20\x71\xd8\xdb\xae\x80\x70\x8b\x03\x9d\xbb\x64\xdb\xd1\xde\x56\x57\xd9\xfe\xd0\xc1\x18\xa5\x41\x43\x74\x2e\x0f\xf3\xc8\x7f\x74\xe4\x58\x57\x64\x7a\xf3\xf7\x9e\xb0\xa1\x4c\x9d\x75\xea\x9a\x1a\x04\xb7\xcf\x47\x8a\x89\x7a\x70\x8f\xd9\x88\xf4\x8e\x80\x1e\xdb\x0b\x70\x39\xdf\x8c\x23\xbb\x3c\x56\xf4\xe8\x21\xac"
+ , salt = "\x8b\x2b\xdd\x4b\x40\xfa\xf5\x45\xc7\x78\xdd\xf9\xbc\x1a\x49\xcb\x57\xf9\xb7\x1b"
+ , signature = "\x14\xae\x35\xd9\xdd\x06\xba\x92\xf7\xf3\xb8\x97\x97\x8a\xed\x7c\xd4\xbf\x5f\xf0\xb5\x85\xa4\x0b\xd4\x6c\xe1\xb4\x2c\xd2\x70\x30\x53\xbb\x90\x44\xd6\x4e\x81\x3d\x8f\x96\xdb\x2d\xd7\x00\x7d\x10\x11\x8f\x6f\x8f\x84\x96\x09\x7a\xd7\x5e\x1f\xf6\x92\x34\x1b\x28\x92\xad\x55\xa6\x33\xa1\xc5\x5e\x7f\x0a\x0a\xd5\x9a\x0e\x20\x3a\x5b\x82\x78\xae\xc5\x4d\xd8\x62\x2e\x28\x31\xd8\x71\x74\xf8\xca\xff\x43\xee\x6c\x46\x44\x53\x45\xd8\x4a\x59\x65\x9b\xfb\x92\xec\xd4\xc8\x18\x66\x86\x95\xf3\x47\x06\xf6\x68\x28\xa8\x99\x59\x63\x7f\x2b\xf3\xe3\x25\x1c\x24\xbd\xba\x4d\x4b\x76\x49\xda\x00\x22\x21\x8b\x11\x9c\x84\xe7\x9a\x65\x27\xec\x5b\x8a\x5f\x86\x1c\x15\x99\x52\xe2\x3e\xc0\x5e\x1e\x71\x73\x46\xfa\xef\xe8\xb1\x68\x68\x25\xbd\x2b\x26\x2f\xb2\x53\x10\x66\xc0\xde\x09\xac\xde\x2e\x42\x31\x69\x07\x28\xb5\xd8\x5e\x11\x5a\x2f\x6b\x92\xb7\x9c\x25\xab\xc9\xbd\x93\x99\xff\x8b\xcf\x82\x5a\x52\xea\x1f\x56\xea\x76\xdd\x26\xf4\x3b\xaa\xfa\x18\xbf\xa9\x2a\x50\x4c\xbd\x35\x69\x9e\x26\xd1\xdc\xc5\xa2\x88\x73\x85\xf3\xc6\x32\x32\xf0\x6f\x32\x44\xc3"
+ }
+ -- Example 10.3
+ , VectorPSS
+ { message = "\x48\xb2\xb6\xa5\x7a\x63\xc8\x4c\xea\x85\x9d\x65\xc6\x68\x28\x4b\x08\xd9\x6b\xdc\xaa\xbe\x25\x2d\xb0\xe4\xa9\x6c\xb1\xba\xc6\x01\x93\x41\xdb\x6f\xbe\xfb\x8d\x10\x6b\x0e\x90\xed\xa6\xbc\xc6\xc6\x26\x2f\x37\xe7\xea\x9c\x7e\x5d\x22\x6b\xd7\xdf\x85\xec\x5e\x71\xef\xff\x2f\x54\xc5\xdb\x57\x7f\xf7\x29\xff\x91\xb8\x42\x49\x1d\xe2\x74\x1d\x0c\x63\x16\x07\xdf\x58\x6b\x90\x5b\x23\xb9\x1a\xf1\x3d\xa1\x23\x04\xbf\x83\xec\xa8\xa7\x3e\x87\x1f\xf9\xdb"
+ , salt = "\x4e\x96\xfc\x1b\x39\x8f\x92\xb4\x46\x71\x01\x0c\x0d\xc3\xef\xd6\xe2\x0c\x2d\x73"
+ , signature = "\x6e\x3e\x4d\x7b\x6b\x15\xd2\xfb\x46\x01\x3b\x89\x00\xaa\x5b\xbb\x39\x39\xcf\x2c\x09\x57\x17\x98\x70\x42\x02\x6e\xe6\x2c\x74\xc5\x4c\xff\xd5\xd7\xd5\x7e\xfb\xbf\x95\x0a\x0f\x5c\x57\x4f\xa0\x9d\x3f\xc1\xc9\xf5\x13\xb0\x5b\x4f\xf5\x0d\xd8\xdf\x7e\xdf\xa2\x01\x02\x85\x4c\x35\xe5\x92\x18\x01\x19\xa7\x0c\xe5\xb0\x85\x18\x2a\xa0\x2d\x9e\xa2\xaa\x90\xd1\xdf\x03\xf2\xda\xae\x88\x5b\xa2\xf5\xd0\x5a\xfd\xac\x97\x47\x6f\x06\xb9\x3b\x5b\xc9\x4a\x1a\x80\xaa\x91\x16\xc4\xd6\x15\xf3\x33\xb0\x98\x89\x2b\x25\xff\xac\xe2\x66\xf5\xdb\x5a\x5a\x3b\xcc\x10\xa8\x24\xed\x55\xaa\xd3\x5b\x72\x78\x34\xfb\x8c\x07\xda\x28\xfc\xf4\x16\xa5\xd9\xb2\x22\x4f\x1f\x8b\x44\x2b\x36\xf9\x1e\x45\x6f\xde\xa2\xd7\xcf\xe3\x36\x72\x68\xde\x03\x07\xa4\xc7\x4e\x92\x41\x59\xed\x33\x39\x3d\x5e\x06\x55\x53\x1c\x77\x32\x7b\x89\x82\x1b\xde\xdf\x88\x01\x61\xc7\x8c\xd4\x19\x6b\x54\x19\xf7\xac\xc3\xf1\x3e\x5e\xbf\x16\x1b\x6e\x7c\x67\x24\x71\x6c\xa3\x3b\x85\xc2\xe2\x56\x40\x19\x2a\xc2\x85\x96\x51\xd5\x0b\xde\x7e\xb9\x76\xe5\x1c\xec\x82\x8b\x98\xb6\x56\x3b\x86\xbb"
+ }
+ -- Example 10.4
+ , VectorPSS
+ { message = "\x0b\x87\x77\xc7\xf8\x39\xba\xf0\xa6\x4b\xbb\xdb\xc5\xce\x79\x75\x5c\x57\xa2\x05\xb8\x45\xc1\x74\xe2\xd2\xe9\x05\x46\xa0\x89\xc4\xe6\xec\x8a\xdf\xfa\x23\xa7\xea\x97\xba\xe6\xb6\x5d\x78\x2b\x82\xdb\x5d\x2b\x5a\x56\xd2\x2a\x29\xa0\x5e\x7c\x44\x33\xe2\xb8\x2a\x62\x1a\xbb\xa9\x0a\xdd\x05\xce\x39\x3f\xc4\x8a\x84\x05\x42\x45\x1a"
+ , salt = "\xc7\xcd\x69\x8d\x84\xb6\x51\x28\xd8\x83\x5e\x3a\x8b\x1e\xb0\xe0\x1c\xb5\x41\xec"
+ , signature = "\x34\x04\x7f\xf9\x6c\x4d\xc0\xdc\x90\xb2\xd4\xff\x59\xa1\xa3\x61\xa4\x75\x4b\x25\x5d\x2e\xe0\xaf\x7d\x8b\xf8\x7c\x9b\xc9\xe7\xdd\xee\xde\x33\x93\x4c\x63\xca\x1c\x0e\x3d\x26\x2c\xb1\x45\xef\x93\x2a\x1f\x2c\x0a\x99\x7a\xa6\xa3\x4f\x8e\xae\xe7\x47\x7d\x82\xcc\xf0\x90\x95\xa6\xb8\xac\xad\x38\xd4\xee\xc9\xfb\x7e\xab\x7a\xd0\x2d\xa1\xd1\x1d\x8e\x54\xc1\x82\x5e\x55\xbf\x58\xc2\xa2\x32\x34\xb9\x02\xbe\x12\x4f\x9e\x90\x38\xa8\xf6\x8f\xa4\x5d\xab\x72\xf6\x6e\x09\x45\xbf\x1d\x8b\xac\xc9\x04\x4c\x6f\x07\x09\x8c\x9f\xce\xc5\x8a\x3a\xab\x10\x0c\x80\x51\x78\x15\x5f\x03\x0a\x12\x4c\x45\x0e\x5a\xcb\xda\x47\xd0\xe4\xf1\x0b\x80\xa2\x3f\x80\x3e\x77\x4d\x02\x3b\x00\x15\xc2\x0b\x9f\x9b\xbe\x7c\x91\x29\x63\x38\xd5\xec\xb4\x71\xca\xfb\x03\x20\x07\xb6\x7a\x60\xbe\x5f\x69\x50\x4a\x9f\x01\xab\xb3\xcb\x46\x7b\x26\x0e\x2b\xce\x86\x0b\xe8\xd9\x5b\xf9\x2c\x0c\x8e\x14\x96\xed\x1e\x52\x85\x93\xa4\xab\xb6\xdf\x46\x2d\xde\x8a\x09\x68\xdf\xfe\x46\x83\x11\x68\x57\xa2\x32\xf5\xeb\xf6\xc8\x5b\xe2\x38\x74\x5a\xd0\xf3\x8f\x76\x7a\x5f\xdb\xf4\x86\xfb"
+ }
+ -- Example 10.5
+ , VectorPSS
+ { message = "\xf1\x03\x6e\x00\x8e\x71\xe9\x64\xda\xdc\x92\x19\xed\x30\xe1\x7f\x06\xb4\xb6\x8a\x95\x5c\x16\xb3\x12\xb1\xed\xdf\x02\x8b\x74\x97\x6b\xed\x6b\x3f\x6a\x63\xd4\xe7\x78\x59\x24\x3c\x9c\xcc\xdc\x98\x01\x65\x23\xab\xb0\x24\x83\xb3\x55\x91\xc3\x3a\xad\x81\x21\x3b\xb7\xc7\xbb\x1a\x47\x0a\xab\xc1\x0d\x44\x25\x6c\x4d\x45\x59\xd9\x16"
+ , salt = "\xef\xa8\xbf\xf9\x62\x12\xb2\xf4\xa3\xf3\x71\xa1\x0d\x57\x41\x52\x65\x5f\x5d\xfb"
+ , signature = "\x7e\x09\x35\xea\x18\xf4\xd6\xc1\xd1\x7c\xe8\x2e\xb2\xb3\x83\x6c\x55\xb3\x84\x58\x9c\xe1\x9d\xfe\x74\x33\x63\xac\x99\x48\xd1\xf3\x46\xb7\xbf\xdd\xfe\x92\xef\xd7\x8a\xdb\x21\xfa\xef\xc8\x9a\xde\x42\xb1\x0f\x37\x40\x03\xfe\x12\x2e\x67\x42\x9a\x1c\xb8\xcb\xd1\xf8\xd9\x01\x45\x64\xc4\x4d\x12\x01\x16\xf4\x99\x0f\x1a\x6e\x38\x77\x4c\x19\x4b\xd1\xb8\x21\x32\x86\xb0\x77\xb0\x49\x9d\x2e\x7b\x3f\x43\x4a\xb1\x22\x89\xc5\x56\x68\x4d\xee\xd7\x81\x31\x93\x4b\xb3\xdd\x65\x37\x23\x6f\x7c\x6f\x3d\xcb\x09\xd4\x76\xbe\x07\x72\x1e\x37\xe1\xce\xed\x9b\x2f\x7b\x40\x68\x87\xbd\x53\x15\x73\x05\xe1\xc8\xb4\xf8\x4d\x73\x3b\xc1\xe1\x86\xfe\x06\xcc\x59\xb6\xed\xb8\xf4\xbd\x7f\xfe\xfd\xf4\xf7\xba\x9c\xfb\x9d\x57\x06\x89\xb5\xa1\xa4\x10\x9a\x74\x6a\x69\x08\x93\xdb\x37\x99\x25\x5a\x0c\xb9\x21\x5d\x2d\x1c\xd4\x90\x59\x0e\x95\x2e\x8c\x87\x86\xaa\x00\x11\x26\x52\x52\x47\x0c\x04\x1d\xfb\xc3\xee\xc7\xc3\xcb\xf7\x1c\x24\x86\x9d\x11\x5c\x0c\xb4\xa9\x56\xf5\x6d\x53\x0b\x80\xab\x58\x9a\xcf\xef\xc6\x90\x75\x1d\xdf\x36\xe8\xd3\x83\xf8\x3c\xed\xd2\xcc"
+ }
+ -- Example 10.6
+ , VectorPSS
+ { message = "\x25\xf1\x08\x95\xa8\x77\x16\xc1\x37\x45\x0b\xb9\x51\x9d\xfa\xa1\xf2\x07\xfa\xa9\x42\xea\x88\xab\xf7\x1e\x9c\x17\x98\x00\x85\xb5\x55\xae\xba\xb7\x62\x64\xae\x2a\x3a\xb9\x3c\x2d\x12\x98\x11\x91\xdd\xac\x6f\xb5\x94\x9e\xb3\x6a\xee\x3c\x5d\xa9\x40\xf0\x07\x52\xc9\x16\xd9\x46\x08\xfa\x7d\x97\xba\x6a\x29\x15\xb6\x88\xf2\x03\x23\xd4\xe9\xd9\x68\x01\xd8\x9a\x72\xab\x58\x92\xdc\x21\x17\xc0\x74\x34\xfc\xf9\x72\xe0\x58\xcf\x8c\x41\xca\x4b\x4f\xf5\x54\xf7\xd5\x06\x8a\xd3\x15\x5f\xce\xd0\xf3\x12\x5b\xc0\x4f\x91\x93\x37\x8a\x8f\x5c\x4c\x3b\x8c\xb4\xdd\x6d\x1c\xc6\x9d\x30\xec\xca\x6e\xaa\x51\xe3\x6a\x05\x73\x0e\x9e\x34\x2e\x85\x5b\xaf\x09\x9d\xef\xb8\xaf\xd7"
+ , salt = "\xad\x8b\x15\x23\x70\x36\x46\x22\x4b\x66\x0b\x55\x08\x85\x91\x7c\xa2\xd1\xdf\x28"
+ , signature = "\x6d\x3b\x5b\x87\xf6\x7e\xa6\x57\xaf\x21\xf7\x54\x41\x97\x7d\x21\x80\xf9\x1b\x2c\x5f\x69\x2d\xe8\x29\x55\x69\x6a\x68\x67\x30\xd9\xb9\x77\x8d\x97\x07\x58\xcc\xb2\x60\x71\xc2\x20\x9f\xfb\xd6\x12\x5b\xe2\xe9\x6e\xa8\x1b\x67\xcb\x9b\x93\x08\x23\x9f\xda\x17\xf7\xb2\xb6\x4e\xcd\xa0\x96\xb6\xb9\x35\x64\x0a\x5a\x1c\xb4\x2a\x91\x55\xb1\xc9\xef\x7a\x63\x3a\x02\xc5\x9f\x0d\x6e\xe5\x9b\x85\x2c\x43\xb3\x50\x29\xe7\x3c\x94\x0f\xf0\x41\x0e\x8f\x11\x4e\xed\x46\xbb\xd0\xfa\xe1\x65\xe4\x2b\xe2\x52\x8a\x40\x1c\x3b\x28\xfd\x81\x8e\xf3\x23\x2d\xca\x9f\x4d\x2a\x0f\x51\x66\xec\x59\xc4\x23\x96\xd6\xc1\x1d\xbc\x12\x15\xa5\x6f\xa1\x71\x69\xdb\x95\x75\x34\x3e\xf3\x4f\x9d\xe3\x2a\x49\xcd\xc3\x17\x49\x22\xf2\x29\xc2\x3e\x18\xe4\x5d\xf9\x35\x31\x19\xec\x43\x19\xce\xdc\xe7\xa1\x7c\x64\x08\x8c\x1f\x6f\x52\xbe\x29\x63\x41\x00\xb3\x91\x9d\x38\xf3\xd1\xed\x94\xe6\x89\x1e\x66\xa7\x3b\x8f\xb8\x49\xf5\x87\x4d\xf5\x94\x59\xe2\x98\xc7\xbb\xce\x2e\xee\x78\x2a\x19\x5a\xa6\x6f\xe2\xd0\x73\x2b\x25\xe5\x95\xf5\x7d\x3e\x06\x1b\x1f\xc3\xe4\x06\x3b\xf9\x8f"
+ }
+ ]
+
doSignTest key (i, vector) = testCase (show i) (Right (signature vector) @=? actual)
where actual = PSS.signWithSalt (salt vector) Nothing PSS.defaultPSSParamsSHA1 key (message vector)
@@ -343,6 +691,18 @@ pssTests = testGroup "RSA-PSS"
, testGroup "verify key 1025" $ map (doVerifyTest rsaKey2) (zip [katZero..] vectorsKey2)
, testGroup "signature key 1026" $ map (doSignTest rsaKey3) (zip [katZero..] vectorsKey3)
, testGroup "verify key 1026" $ map (doVerifyTest rsaKey3) (zip [katZero..] vectorsKey3)
+ , testGroup "signature key 1027" $ map (doSignTest rsaKey4) (zip [katZero..] vectorsKey4)
+ , testGroup "verify key 1027" $ map (doVerifyTest rsaKey4) (zip [katZero..] vectorsKey4)
+ , testGroup "signature key 1028" $ map (doSignTest rsaKey5) (zip [katZero..] vectorsKey5)
+ , testGroup "verify key 1028" $ map (doVerifyTest rsaKey5) (zip [katZero..] vectorsKey5)
+ , testGroup "signature key 1029" $ map (doSignTest rsaKey6) (zip [katZero..] vectorsKey6)
+ , testGroup "verify key 1029" $ map (doVerifyTest rsaKey6) (zip [katZero..] vectorsKey6)
+ , testGroup "signature key 1030" $ map (doSignTest rsaKey7) (zip [katZero..] vectorsKey7)
+ , testGroup "verify key 1030" $ map (doVerifyTest rsaKey7) (zip [katZero..] vectorsKey7)
, testGroup "signature key 1031" $ map (doSignTest rsaKey8) (zip [katZero..] vectorsKey8)
, testGroup "verify key 1031" $ map (doVerifyTest rsaKey8) (zip [katZero..] vectorsKey8)
+ , testGroup "signature key 1536" $ map (doSignTest rsaKey9) (zip [katZero..] vectorsKey9)
+ , testGroup "verify key 1536" $ map (doVerifyTest rsaKey9) (zip [katZero..] vectorsKey9)
+ , testGroup "signature key 2048" $ map (doSignTest rsaKey10) (zip [katZero..] vectorsKey10)
+ , testGroup "verify key 2048" $ map (doVerifyTest rsaKey10) (zip [katZero..] vectorsKey10)
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment