Ed25519::{from_pkcs8,from_pkcs8_maybe_unchecked}: Add test vectors for correct encoding.

These new tests have the wrong expected results because of the bug that will be fixed in the
next commit.
This commit is contained in:
Brian Smith 2022-02-20 19:49:10 -08:00
parent 2e148a4b9a
commit 4c78629ed5

View File

@ -9,12 +9,130 @@ Input = 3030020100300706032b65700500042204209d61b19deffd5a60ba844af492ec2cc44449
Result-Checked = WrongAlgorithm
Result-Maybe-Unchecked = WrongAlgorithm
# v1. Example private key from RFC 8410 Section-10.3.
# v1. Example private key from RFC 8410 Section 10.3.
Input = 302e020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842
Result-Checked = VersionNotSupported
Result-Maybe-Unchecked = OK
Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
# v2. Example private key from RFC 8410 Section 10.3.
Input = 3072020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c652043686169727381210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
# v2. The v2 example from the RFC, without the attributes [0], but retaining
# the public key [1].
Input = 3051020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f4475584281210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
# v2. The v2 example from the RFC, retaining the attributes [0], but without
# the public key [1].
Input = 304f020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273
Result-Checked = PublicKeyIsMissing
Result-Maybe-Unchecked = PublicKeyIsMissing
# v2. The v2 example from the RFC, without the attributes [0] or the public key [1].
Input = 302e020101300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842
Result-Checked = PublicKeyIsMissing
Result-Maybe-Unchecked = PublicKeyIsMissing
# The v2 example from the RFC, encoded with version v1. Invalid because the
# public key is a v2-only attribute.
Input = 3072020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c652043686169727381210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
Result-Checked = VersionNotSupported
Result-Maybe-Unchecked = InvalidEncoding
# The v2 example from the RFC, without the attributes [0], but retaining the
# public key [1], encoded with version v1. Invalid because the public key is a
# v2-only attribute.
Input = 3051020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f4475584281210019bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
Result-Checked = VersionNotSupported
Result-Maybe-Unchecked = InvalidEncoding
# The v2 example from the RFC, retaining the attributes [0], but without the
# public key [1], encoded as v1.
Input = 304f020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273
Result-Checked = VersionNotSupported
Result-Maybe-Unchecked = OK
Public = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
# v1. valid except it includes publicKey.
Input = 3051020100300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = VersionNotSupported
Result-Maybe-Unchecked = InvalidEncoding
# v2. The private key ends with a zero byte.
Input = 3051020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 1aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
# v2. The private key's last byte, zero, is omitted.
Input = 3050020101300506032b65700421041fa22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a8121001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. The private key starts with a zero byte.
Input = 3051020101300506032b65700422042000b1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf49081210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 63457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba
# v2. The private key's first byte, zero, is omitted.
Input = 3050020101300506032b65700421041fb1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf49081210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. The public key's first byte is zero.
Input = 3051020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f081210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 00c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c
# v2. The public key's first byte, zero, is omitted.
Input = 3050020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0812000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. The public key's last byte is zero.
Input = 3051020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498121009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
Public = 9d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400
# v2. The public key's last byte, zero, is omitted (valid ASN.1 DER).
Input = 3050020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498120009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. The public key's last byte, zero, has been truncated (invalid ASN.1 DER).
Input = 3051020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c3498121009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. The public key's high bit has been flipped. Ed25519 public keys don't
# have their high bit masked, so this is wrong.
Input = 3051020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f081210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c0c
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# v2. Valid except the public key field is missing.
Input = 302e020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00
Result-Checked = PublicKeyIsMissing
Result-Maybe-Unchecked = PublicKeyIsMissing
# v2. Valid except the public key is encoded as [0] IMPLICIT instead of [1] IMPLICIT;
# i.e. the attributes are invalid and the public key is missing.
Input = 3051020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a008021001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = InvalidEncoding
Result-Maybe-Unchecked = InvalidEncoding
# The same test vectors as above, but the public key is encoded with the wrong
# [1] EXPLICIT tag instead of [1] IMPLICIT.
# v1. valid except it includes publicKey.
Input = 3053020100300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = VersionNotSupported
@ -80,7 +198,7 @@ Input = 302e020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c
Result-Checked = PublicKeyIsMissing
Result-Maybe-Unchecked = PublicKeyIsMissing
# v2. Valid except the public key is encoded as [0] instead of [1]; i.e. the
# v2. Valid except the public key is encoded as [0] EXPLICIT instead of [1]; i.e. the
# attributes are invalid and the public key is missing.
Input = 3053020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a0230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77
Result-Checked = PublicKeyIsMissing