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