1# v1. An Ed25519 private key. (This is from BoringSSL's tests.) 2Input = 302e020100300506032b6570042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 3Result-Checked = VersionNotSupported 4Result-Maybe-Unchecked = OK 5Public = d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a 6 7# v1. The same as the above, but with an invalid NULL parameter. (This is from BoringSSL's tests.) 8Input = 3030020100300706032b65700500042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 9Result-Checked = WrongAlgorithm 10Result-Maybe-Unchecked = WrongAlgorithm 11 12# v1. Example private key from RFC 8410 Section 10.3. 13Input = 302e020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842 14Result-Checked = VersionNotSupported 15Result-Maybe-Unchecked = OK 16Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 17 18# v2. Example private key from RFC 8410 Section 10.3. 19Input = 3072020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c652043686169727381210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 20Result-Checked = OK 21Result-Maybe-Unchecked = OK 22Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 23 24# v2. The v2 example from the RFC, without the attributes [0], but retaining 25# the public key [1]. 26Input = 3051020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f4475584281210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 27Result-Checked = OK 28Result-Maybe-Unchecked = OK 29Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 30 31# v2. The v2 example from the RFC, retaining the attributes [0], but without 32# the public key [1]. 33Input = 304f020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273 34Result-Checked = PublicKeyIsMissing 35Result-Maybe-Unchecked = PublicKeyIsMissing 36 37# v2. The v2 example from the RFC, without the attributes [0] or the public key [1]. 38Input = 302e020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842 39Result-Checked = PublicKeyIsMissing 40Result-Maybe-Unchecked = PublicKeyIsMissing 41 42# The v2 example from the RFC, encoded with version v1. Invalid because the 43# public key is a v2-only attribute. 44Input = 3072020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c652043686169727381210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 45Result-Checked = VersionNotSupported 46Result-Maybe-Unchecked = InvalidEncoding 47 48# The v2 example from the RFC, without the attributes [0], but retaining the 49# public key [1], encoded with version v1. Invalid because the public key is a 50# v2-only attribute. 51Input = 3051020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f4475584281210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 52Result-Checked = VersionNotSupported 53Result-Maybe-Unchecked = InvalidEncoding 54 55# The v2 example from the RFC, retaining the attributes [0], but without the 56# public key [1], encoded as v1. 57Input = 304f020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273 58Result-Checked = VersionNotSupported 59Result-Maybe-Unchecked = OK 60Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 61 62# v1. valid except it includes publicKey. 63Input = 3051020100300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 64Result-Checked = VersionNotSupported 65Result-Maybe-Unchecked = InvalidEncoding 66 67# v2. The private key ends with a zero byte. 68Input = 3051020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 69Result-Checked = OK 70Result-Maybe-Unchecked = OK 71Public = 1aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 72 73# v2. The private key's last byte, zero, is omitted. 74Input = 3050020101300506032b65700421041fa22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a8121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 75Result-Checked = InvalidEncoding 76Result-Maybe-Unchecked = InvalidEncoding 77 78# v2. The private key starts with a zero byte. 79Input = 3051020101300506032b65700422042000b1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf49081210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 80Result-Checked = OK 81Result-Maybe-Unchecked = OK 82Public = 63457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 83 84# v2. The private key's first byte, zero, is omitted. 85Input = 3050020101300506032b65700421041fb1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf49081210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 86Result-Checked = InvalidEncoding 87Result-Maybe-Unchecked = InvalidEncoding 88 89# v2. The public key's first byte is zero. 90Input = 3051020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f081210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 91Result-Checked = OK 92Result-Maybe-Unchecked = OK 93Public = 00c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 94 95# v2. The public key's first byte, zero, is omitted. 96Input = 3050020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0812000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 97Result-Checked = InvalidEncoding 98Result-Maybe-Unchecked = InvalidEncoding 99 100# v2. The public key's last byte is zero. 101Input = 3051020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498121009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400 102Result-Checked = OK 103Result-Maybe-Unchecked = OK 104Public = 9d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400 105 106# v2. The public key's last byte, zero, is omitted (valid ASN.1 DER). 107Input = 3050020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498120009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 108Result-Checked = InvalidEncoding 109Result-Maybe-Unchecked = InvalidEncoding 110 111# v2. The public key's last byte, zero, has been truncated (invalid ASN.1 DER). 112Input = 3051020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498121009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 113Result-Checked = InvalidEncoding 114Result-Maybe-Unchecked = InvalidEncoding 115 116# v2. The public key's high bit has been flipped. Ed25519 public keys don't 117# have their high bit masked, so this is wrong. 118Input = 3051020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f081210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c0c 119Result-Checked = InconsistentComponents 120Result-Maybe-Unchecked = InconsistentComponents 121 122# v2. Valid except the public key field is missing. 123Input = 302e020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00 124Result-Checked = PublicKeyIsMissing 125Result-Maybe-Unchecked = PublicKeyIsMissing 126 127# v2. Valid except the public key is encoded as [0] IMPLICIT instead of [1] IMPLICIT; 128# i.e. the attributes are invalid and the public key is missing. 129Input = 3051020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008021001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 130Result-Checked = InvalidEncoding 131Result-Maybe-Unchecked = InvalidEncoding 132 133# The same v2 test vectors as above, but the public key is encoded with the 134# wrong [1] EXPLICIT tag instead of [1] IMPLICIT. 135 136# [1] EXPLICIT bug. 137# v2. Example private key from RFC 8410 Section 10.3. 138Input = 3074020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273A12303210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 139Result-Checked = OK 140Result-Maybe-Unchecked = OK 141Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 142 143# [1] EXPLICIT bug. 144# v2. The v2 example from the RFC, without the attributes [0], but retaining 145# the public key [1]. 146Input = 3053020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842A12303210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 147Result-Checked = OK 148Result-Maybe-Unchecked = OK 149Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 150 151# [1] EXPLICIT bug. 152# The v2 example from the RFC, encoded with version v1. Invalid because the 153# public key is a v2-only attribute. 154Input = 3072020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273A12303210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 155Result-Checked = VersionNotSupported 156Result-Maybe-Unchecked = InvalidEncoding 157 158# [1] EXPLICIT bug. 159# The v2 example from the RFC, without the attributes [0], but retaining the 160# public key [1], encoded with version v1. Invalid because the public key is a 161# v2-only attribute. 162Input = 3051020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842A12303210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 163Result-Checked = VersionNotSupported 164Result-Maybe-Unchecked = InvalidEncoding 165 166# [1] EXPLICIT bug. 167# The v2 example from the RFC, retaining the attributes [0], but without the 168# public key [1], encoded as v1. 169Input = 304f020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273 170Result-Checked = VersionNotSupported 171Result-Maybe-Unchecked = OK 172Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1 173 174# [1] EXPLICIT bug. 175# v1. valid except it includes publicKey. 176Input = 3053020100300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 177Result-Checked = VersionNotSupported 178Result-Maybe-Unchecked = InvalidEncoding 179 180# [1] EXPLICIT bug. 181# v2. The private key ends with a zero byte. 182Input = 3053020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 183Result-Checked = OK 184Result-Maybe-Unchecked = OK 185Public = 1aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 186 187# [1] EXPLICIT bug. 188# v2. The private key's last byte, zero, is omitted. 189Input = 3052020101300506032b65700421041fa22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749aa1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 190Result-Checked = InvalidEncoding 191Result-Maybe-Unchecked = InvalidEncoding 192 193# [1] EXPLICIT bug. 194# v2. The private key starts with a zero byte. 195Input = 3053020101300506032b65700422042000b1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf490a12303210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 196Result-Checked = OK 197Result-Maybe-Unchecked = OK 198Public = 63457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 199 200# [1] EXPLICIT bug. 201# v2. The private key's first byte, zero, is omitted. 202Input = 3052020101300506032b65700421041fb1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf490a12303210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba 203Result-Checked = InvalidEncoding 204Result-Maybe-Unchecked = InvalidEncoding 205 206# [1] EXPLICIT bug. 207# v2. The public key's first byte is zero. 208Input = 3053020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a12303210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 209Result-Checked = OK 210Result-Maybe-Unchecked = OK 211Public = 00c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 212 213# [1] EXPLICIT bug. 214# v2. The public key's first byte, zero, is omitted. 215Input = 3052020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a122032000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c 216Result-Checked = InvalidEncoding 217Result-Maybe-Unchecked = InvalidEncoding 218 219# [1] EXPLICIT bug. 220# v2. The public key's last byte is zero. 221Input = 3053020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1230321009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400 222Result-Checked = OK 223Result-Maybe-Unchecked = OK 224Public = 9d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400 225 226# [1] EXPLICIT bug. 227# v2. The public key's last byte, zero, is omitted (valid ASN.1 DER). 228Input = 3052020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1220320009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 229Result-Checked = InvalidEncoding 230Result-Maybe-Unchecked = InvalidEncoding 231 232# [1] EXPLICIT bug. 233# v2. The public key's last byte, zero, has been truncated (invalid ASN.1 DER). 234Input = 3053020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1230321009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 235Result-Checked = InvalidEncoding 236Result-Maybe-Unchecked = InvalidEncoding 237 238# [1] EXPLICIT bug. 239# v2. The public key's high bit has been flipped. Ed25519 public keys don't 240# have their high bit masked, so this is wrong. 241Input = 3053020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a12303210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c0c 242Result-Checked = InconsistentComponents 243Result-Maybe-Unchecked = InconsistentComponents 244 245# [1] EXPLICIT bug. 246# v2. Valid except the public key field is missing. 247Input = 302e020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00 248Result-Checked = PublicKeyIsMissing 249Result-Maybe-Unchecked = PublicKeyIsMissing 250 251# [1] EXPLICIT bug. 252# v2. Valid except the public key is encoded as [0] EXPLICIT instead of [1]; i.e. the 253# attributes are invalid and the public key is missing. 254Input = 3053020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a0230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 255Result-Checked = PublicKeyIsMissing 256Result-Maybe-Unchecked = PublicKeyIsMissing 257