summaryrefslogtreecommitdiffstats
path: root/vendor/elliptic-curve/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
commit2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4 (patch)
tree033cc839730fda84ff08db877037977be94e5e3a /vendor/elliptic-curve/tests
parentInitial commit. (diff)
downloadcargo-upstream.tar.xz
cargo-upstream.zip
Adding upstream version 0.70.1+ds1.upstream/0.70.1+ds1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/elliptic-curve/tests')
-rw-r--r--vendor/elliptic-curve/tests/examples/pkcs8-private-key.derbin0 -> 138 bytes
-rw-r--r--vendor/elliptic-curve/tests/examples/pkcs8-private-key.pem5
-rw-r--r--vendor/elliptic-curve/tests/examples/pkcs8-public-key.derbin0 -> 91 bytes
-rw-r--r--vendor/elliptic-curve/tests/examples/pkcs8-public-key.pem4
-rw-r--r--vendor/elliptic-curve/tests/pkcs8.rs57
-rw-r--r--vendor/elliptic-curve/tests/secret_key.rs28
6 files changed, 94 insertions, 0 deletions
diff --git a/vendor/elliptic-curve/tests/examples/pkcs8-private-key.der b/vendor/elliptic-curve/tests/examples/pkcs8-private-key.der
new file mode 100644
index 0000000..c0de45e
--- /dev/null
+++ b/vendor/elliptic-curve/tests/examples/pkcs8-private-key.der
Binary files differ
diff --git a/vendor/elliptic-curve/tests/examples/pkcs8-private-key.pem b/vendor/elliptic-curve/tests/examples/pkcs8-private-key.pem
new file mode 100644
index 0000000..62f432c
--- /dev/null
+++ b/vendor/elliptic-curve/tests/examples/pkcs8-private-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgaWJBcVYaYzQN4OfY
+afKgVJJVjhoEhotqn4VKhmeIGI2hRANCAAQcrP+1Xy8s79idies3SyaBFSRSgC3u
+oJkWBoE32DnPf8SBpESSME1+9mrBF77+g6jQjxVfK1L59hjdRHApBI4P
+-----END PRIVATE KEY----- \ No newline at end of file
diff --git a/vendor/elliptic-curve/tests/examples/pkcs8-public-key.der b/vendor/elliptic-curve/tests/examples/pkcs8-public-key.der
new file mode 100644
index 0000000..67c719c
--- /dev/null
+++ b/vendor/elliptic-curve/tests/examples/pkcs8-public-key.der
Binary files differ
diff --git a/vendor/elliptic-curve/tests/examples/pkcs8-public-key.pem b/vendor/elliptic-curve/tests/examples/pkcs8-public-key.pem
new file mode 100644
index 0000000..ee7e5b6
--- /dev/null
+++ b/vendor/elliptic-curve/tests/examples/pkcs8-public-key.pem
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHKz/tV8vLO/YnYnrN0smgRUkUoAt
+7qCZFgaBN9g5z3/EgaREkjBNfvZqwRe+/oOo0I8VXytS+fYY3URwKQSODw==
+-----END PUBLIC KEY-----
diff --git a/vendor/elliptic-curve/tests/pkcs8.rs b/vendor/elliptic-curve/tests/pkcs8.rs
new file mode 100644
index 0000000..2a27fc0
--- /dev/null
+++ b/vendor/elliptic-curve/tests/pkcs8.rs
@@ -0,0 +1,57 @@
+//! PKCS#8 tests
+
+#![cfg(all(feature = "dev", feature = "pkcs8"))]
+
+use elliptic_curve::{
+ dev::{PublicKey, SecretKey},
+ pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey},
+ sec1::ToEncodedPoint,
+};
+use hex_literal::hex;
+use pkcs8::der;
+
+/// DER-encoded PKCS#8 public key
+const PKCS8_PUBLIC_KEY_DER: &[u8; 91] = include_bytes!("examples/pkcs8-public-key.der");
+
+/// PEM-encoded PKCS#8 public key
+#[cfg(feature = "pem")]
+const PKCS8_PUBLIC_KEY_PEM: &str = include_str!("examples/pkcs8-public-key.pem");
+
+/// Example encoded scalar value
+const EXAMPLE_SCALAR: [u8; 32] =
+ hex!("AABBCCDDEEFF0000000000000000000000000000000000000000000000000001");
+
+/// Example PKCS#8 private key
+fn example_private_key() -> der::SecretDocument {
+ SecretKey::from_slice(&EXAMPLE_SCALAR)
+ .unwrap()
+ .to_pkcs8_der()
+ .unwrap()
+}
+
+#[test]
+fn decode_pkcs8_private_key_from_der() {
+ dbg!(example_private_key().as_bytes());
+ let secret_key = SecretKey::from_pkcs8_der(example_private_key().as_bytes()).unwrap();
+ assert_eq!(secret_key.to_bytes().as_slice(), &EXAMPLE_SCALAR);
+}
+
+#[test]
+fn decode_pkcs8_public_key_from_der() {
+ let public_key = PublicKey::from_public_key_der(&PKCS8_PUBLIC_KEY_DER[..]).unwrap();
+ let expected_sec1_point = hex!("041CACFFB55F2F2CEFD89D89EB374B2681152452802DEEA09916068137D839CF7FC481A44492304D7EF66AC117BEFE83A8D08F155F2B52F9F618DD447029048E0F");
+ assert_eq!(
+ public_key.to_encoded_point(false).as_bytes(),
+ &expected_sec1_point[..]
+ );
+}
+
+#[test]
+#[cfg(feature = "pem")]
+fn decode_pkcs8_public_key_from_pem() {
+ let public_key = PKCS8_PUBLIC_KEY_PEM.parse::<PublicKey>().unwrap();
+
+ // Ensure key parses equivalently to DER
+ let der_key = PublicKey::from_public_key_der(&PKCS8_PUBLIC_KEY_DER[..]).unwrap();
+ assert_eq!(public_key, der_key);
+}
diff --git a/vendor/elliptic-curve/tests/secret_key.rs b/vendor/elliptic-curve/tests/secret_key.rs
new file mode 100644
index 0000000..a01de90
--- /dev/null
+++ b/vendor/elliptic-curve/tests/secret_key.rs
@@ -0,0 +1,28 @@
+//! Secret key tests
+
+#![cfg(feature = "dev")]
+
+use elliptic_curve::dev::SecretKey;
+
+#[test]
+fn from_slice_undersize() {
+ assert!(SecretKey::from_slice(&[]).is_err());
+}
+
+#[test]
+fn from_slice_expected_size() {
+ let bytes = [1u8; 32];
+ assert!(SecretKey::from_slice(&bytes).is_ok());
+}
+
+#[test]
+fn from_slice_allowed_short() {
+ let bytes = [1u8; 28];
+ assert!(SecretKey::from_slice(&bytes).is_ok());
+}
+
+#[test]
+fn from_slice_too_short() {
+ let bytes = [1u8; 27];
+ assert!(SecretKey::from_slice(&bytes).is_err());
+}