1# 2# Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. 3# 4# Licensed under the OpenSSL license (the "License"). You may not use 5# this file except in compliance with the License. You can obtain a copy 6# in the file LICENSE in the source distribution or at 7# https://www.openssl.org/source/license.html 8 9# Tests start with one of these keywords 10# Cipher Decrypt Derive Digest Encoding KDF MAC PBE 11# PrivPubKeyPair Sign Verify VerifyRecover 12# and continue until a blank line. Lines starting with a pound sign, 13# like this prolog, are ignored. 14 15Title = TLS1 PRF tests (from NIST test vectors) 16 17KDF=TLS1-PRF 18Ctrl.md = md:MD5-SHA1 19Ctrl.Secret = hexsecret:bded7fa5c1699c010be23dd06ada3a48349f21e5f86263d512c0c5cc379f0e780ec55d9844b2f1db02a96453513568d0 20Ctrl.label = seed:master secret 21Ctrl.client_random = hexseed:e5acaf549cd25c22d964c0d930fa4b5261d2507fad84c33715b7b9a864020693 22Ctrl.server_random = hexseed:135e4d557fdf3aa6406d82975d5c606a9734c9334b42136e96990fbd5358cdb2 23Output = 2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 24 25KDF=TLS1-PRF 26Ctrl.md = md:MD5-SHA1 27Ctrl.Secret = hexsecret:2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 28Ctrl.label = seed:key expansion 29Ctrl.server_random = hexseed:67267e650eb32444119d222a368c191af3082888dc35afe8368e638c828874be 30Ctrl.client_random = hexseed:d58a7b1cd4fedaa232159df652ce188f9d997e061b9bf48e83b62990440931f6 31Output = 3088825988e77fce68d19f756e18e43eb7fe672433504feaf99b3c503d9091b164f166db301d70c9fc0870b4a94563907bee1a61fb786cb717576890bcc51cb9ead97e01d0a2fea99c953377b195205ff07b369589178796edc963fd80fdbe518a2fc1c35c18ae8d 32 33KDF=TLS1-PRF 34Ctrl.md = md:SHA256 35Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc 36Ctrl.label = seed:master secret 37Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c 38Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce 39Output = 202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf 40 41KDF=TLS1-PRF 42Ctrl.md = md:SHA256 43Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf 44Ctrl.label = seed:key expansion 45Ctrl.server_random = hexseed:ae6c806f8ad4d80784549dff28a4b58fd837681a51d928c3e30ee5ff14f39868 46Ctrl.client_random = hexseed:62e1fd91f23f558a605f28478c58cf72637b89784d959df7e946d3f07bd1b616 47Output = d06139889fffac1e3a71865f504aa5d0d2a2e89506c6f2279b670c3e1b74f531016a2530c51a3a0f7e1d6590d0f0566b2f387f8d11fd4f731cdd572d2eae927f6f2f81410b25e6960be68985add6c38445ad9f8c64bf8068bf9a6679485d966f1ad6f68b43495b10a683755ea2b858d70ccac7ec8b053c6bd41ca299d4e51928 48 49# As above but use long name for KDF 50KDF=tls1-prf 51Ctrl.md = md:SHA256 52Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf 53Ctrl.label = seed:key expansion 54Ctrl.server_random = hexseed:ae6c806f8ad4d80784549dff28a4b58fd837681a51d928c3e30ee5ff14f39868 55Ctrl.client_random = hexseed:62e1fd91f23f558a605f28478c58cf72637b89784d959df7e946d3f07bd1b616 56Output = d06139889fffac1e3a71865f504aa5d0d2a2e89506c6f2279b670c3e1b74f531016a2530c51a3a0f7e1d6590d0f0566b2f387f8d11fd4f731cdd572d2eae927f6f2f81410b25e6960be68985add6c38445ad9f8c64bf8068bf9a6679485d966f1ad6f68b43495b10a683755ea2b858d70ccac7ec8b053c6bd41ca299d4e51928 57 58# Missing digest. 59KDF=TLS1-PRF 60Ctrl.Secret = hexsecret:01 61Ctrl.Seed = hexseed:02 62Output = 03 63Result = KDF_DERIVE_ERROR 64 65# Missing secret. 66KDF=TLS1-PRF 67Ctrl.md = md:MD5-SHA1 68Ctrl.Seed = hexseed:02 69Output = 03 70Result = KDF_DERIVE_ERROR 71 72Title = HKDF tests (from RFC5869 test vectors) 73 74KDF = HKDF 75Ctrl.md = md:SHA256 76Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 77Ctrl.salt = hexsalt:000102030405060708090a0b0c 78Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 79Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 80 81KDF = HKDF 82Ctrl.mode = mode:EXTRACT_ONLY 83Ctrl.md = md:SHA256 84Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 85Ctrl.salt = hexsalt:000102030405060708090a0b0c 86Output = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 87 88KDF = HKDF 89Ctrl.mode = mode:EXPAND_ONLY 90Ctrl.md = md:SHA256 91Ctrl.IKM = hexkey:077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 92Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 93Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 94 95KDF = HKDF 96Ctrl.md = md:SHA256 97Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f 98Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf 99Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff 100Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 101 102KDF = HKDF 103Ctrl.mode = mode:EXTRACT_ONLY 104Ctrl.md = md:SHA256 105Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f 106Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf 107Output = 06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 108 109KDF = HKDF 110Ctrl.mode = mode:EXPAND_ONLY 111Ctrl.md = md:SHA256 112Ctrl.IKM = hexkey:06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 113Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff 114Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 115 116KDF = HKDF 117Ctrl.md = md:SHA256 118Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 119Ctrl.salt = salt: 120Ctrl.info = info: 121Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 122 123KDF = HKDF 124Ctrl.mode = mode:EXTRACT_ONLY 125Ctrl.md = md:SHA256 126Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 127Ctrl.salt = salt: 128Ctrl.info = info: 129Output = 19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 130 131KDF = HKDF 132Ctrl.mode = mode:EXPAND_ONLY 133Ctrl.md = md:SHA256 134Ctrl.IKM = hexkey:19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 135Ctrl.info = info: 136Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 137 138KDF = HKDF 139Ctrl.md = md:SHA1 140Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b 141Ctrl.salt = hexsalt:000102030405060708090a0b0c 142Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 143Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896 144 145KDF = HKDF 146Ctrl.mode = mode:EXTRACT_ONLY 147Ctrl.md = md:SHA1 148Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b 149Ctrl.salt = hexsalt:000102030405060708090a0b0c 150Output = 9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 151 152KDF = HKDF 153Ctrl.mode = mode:EXPAND_ONLY 154Ctrl.md = md:SHA1 155Ctrl.IKM = hexkey:9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 156Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 157Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896 158 159KDF = HKDF 160Ctrl.md = md:SHA1 161Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f 162Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf 163Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff 164Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4 165 166KDF = HKDF 167Ctrl.mode = mode:EXTRACT_ONLY 168Ctrl.md = md:SHA1 169Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f 170Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf 171Output = 8adae09a2a307059478d309b26c4115a224cfaf6 172 173KDF = HKDF 174Ctrl.mode = mode:EXPAND_ONLY 175Ctrl.md = md:SHA1 176Ctrl.IKM = hexkey:8adae09a2a307059478d309b26c4115a224cfaf6 177Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff 178Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4 179 180KDF = HKDF 181Ctrl.md = md:SHA1 182Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 183Ctrl.salt = salt: 184Ctrl.info = info: 185Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918 186 187KDF = HKDF 188Ctrl.mode = mode:EXTRACT_ONLY 189Ctrl.md = md:SHA1 190Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 191Ctrl.salt = salt: 192Output = da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 193 194KDF = HKDF 195Ctrl.mode = mode:EXPAND_ONLY 196Ctrl.md = md:SHA1 197Ctrl.IKM = hexkey:da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 198Ctrl.info = info: 199Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918 200 201KDF = HKDF 202Ctrl.md = md:SHA1 203Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 204Ctrl.salt = salt: 205Ctrl.info = info: 206Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 207 208KDF = HKDF 209Ctrl.mode = mode:EXTRACT_ONLY 210Ctrl.md = md:SHA1 211Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 212Ctrl.salt = salt: 213Output = 2adccada18779e7c2077ad2eb19d3f3e731385dd 214 215KDF = HKDF 216Ctrl.mode = mode:EXPAND_ONLY 217Ctrl.md = md:SHA1 218Ctrl.IKM = hexkey:2adccada18779e7c2077ad2eb19d3f3e731385dd 219Ctrl.info = info: 220Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 221 222KDF = HKDF 223Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 224Ctrl.salt = salt: 225Ctrl.info = info: 226Output = 00 227Result = KDF_DERIVE_ERROR 228 229KDF = HKDF 230Ctrl.md = md:SHA1 231Ctrl.salt = salt: 232Ctrl.info = info: 233Output = 00 234Result = KDF_DERIVE_ERROR 235 236KDF = HKDF 237Ctrl.md = md:SHA1 238Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 239Ctrl.info = info: 240Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 241 242KDF = HKDF 243Ctrl.md = md:SHA1 244Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 245Ctrl.salt = salt: 246Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 247 248KDF = HKDF 249Ctrl.mode = mode:EXTRACT_AND_EXPAND 250Ctrl.md = md:SHA1 251Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 252Ctrl.salt = salt: 253Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 254 255Title = id-scrypt tests (from draft-josefsson-id-scrypt-kdf-03 and others) 256 257KDF = scrypt 258Ctrl.pass = pass: 259Ctrl.salt = salt: 260Ctrl.N = N:16 261Ctrl.r = r:1 262Ctrl.p = p:1 263Output = 77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906 264 265KDF = scrypt 266Ctrl.pass = pass:password 267Ctrl.salt = salt:NaCl 268Ctrl.N = N:1024 269Ctrl.r = r:8 270Ctrl.p = p:16 271Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 272 273KDF = scrypt 274Ctrl.hexpass = hexpass:70617373776f7264 275Ctrl.salt = salt:NaCl 276Ctrl.N = N:1024 277Ctrl.r = r:8 278Ctrl.p = p:16 279Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 280 281KDF = scrypt 282Ctrl.pass = pass:password 283Ctrl.hexsalt = hexsalt:4e61436c 284Ctrl.N = N:1024 285Ctrl.r = r:8 286Ctrl.p = p:16 287Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 288 289KDF = scrypt 290Ctrl.pass = pass:pleaseletmein 291Ctrl.salt = salt:SodiumChloride 292Ctrl.N = N:16384 293Ctrl.r = r:8 294Ctrl.p = p:1 295Output = 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887 296 297# Out of memory - request > 2 GB of memory 298KDF = scrypt 299Ctrl.pass = pass:pleaseletmein 300Ctrl.salt = salt:SodiumChloride 301Ctrl.N = N:2097152 302Ctrl.r = r:8 303Ctrl.p = p:1 304Result = KDF_DERIVE_ERROR 305 306