From f7b23d0943751f5ea4cafca6c45187848ca630cb Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 12 Mar 2023 20:06:10 +0800 Subject: [PATCH] feat: update yubikey-rs-demo --- __crypto/yubikey-rs-demo/Cargo.lock | 15 +++++++++++++-- __crypto/yubikey-rs-demo/Cargo.toml | 2 +- __crypto/yubikey-rs-demo/src/main.rs | 15 ++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/__crypto/yubikey-rs-demo/Cargo.lock b/__crypto/yubikey-rs-demo/Cargo.lock index f6eb86e..980d444 100644 --- a/__crypto/yubikey-rs-demo/Cargo.lock +++ b/__crypto/yubikey-rs-demo/Cargo.lock @@ -272,7 +272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ "const-oid", - "pem-rfc7468", + "pem-rfc7468 0.6.0", "zeroize", ] @@ -283,6 +283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" dependencies = [ "const-oid", + "pem-rfc7468 0.7.0", "zeroize", ] @@ -391,7 +392,7 @@ dependencies = [ "generic-array", "group 0.12.1", "hkdf", - "pem-rfc7468", + "pem-rfc7468 0.6.0", "pkcs8 0.9.0", "rand_core", "sec1 0.3.0", @@ -412,6 +413,7 @@ dependencies = [ "generic-array", "group 0.13.0", "hkdf", + "pem-rfc7468 0.7.0", "pkcs8 0.10.1", "rand_core", "sec1 0.7.1", @@ -762,6 +764,15 @@ dependencies = [ "base64ct", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "pkcs1" version = "0.4.1" diff --git a/__crypto/yubikey-rs-demo/Cargo.toml b/__crypto/yubikey-rs-demo/Cargo.toml index 76cb502..2783828 100644 --- a/__crypto/yubikey-rs-demo/Cargo.toml +++ b/__crypto/yubikey-rs-demo/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] elliptic-curve = { version = "0.13.2", features = ["sec1"] } hex = "0.4.3" -p256 = { version = "0.13.0", features = ["ecdh"] } +p256 = { version = "0.13.0", features = ["ecdh", "pem"] } rand = "0.8.5" rust_util = "0.6.41" sha2 = "0.10.6" diff --git a/__crypto/yubikey-rs-demo/src/main.rs b/__crypto/yubikey-rs-demo/src/main.rs index 6a38730..8d7b819 100644 --- a/__crypto/yubikey-rs-demo/src/main.rs +++ b/__crypto/yubikey-rs-demo/src/main.rs @@ -1,4 +1,4 @@ -use p256::{ecdh::EphemeralSecret, EncodedPoint, PublicKey}; +use p256::{ecdh::EphemeralSecret, PublicKey}; use p256::elliptic_curve::sec1::{FromEncodedPoint, ToEncodedPoint}; use rand::rngs::OsRng; use rust_util::{failure_and_exit, information, warning, XResult}; @@ -51,11 +51,16 @@ fn main() -> XResult<()> { let epk = esk.public_key(); let epk_bytes = EphemeralKeyBytes::from_public_key(&epk); - let encoded_point = EncodedPoint::from_bytes(&hex::decode( - "04dd3eebd906c9cf00b08ec29f7ed61804d1cc1d1352d9257b628191e08fc3717c4fae3298cd5c4829cec8bf3a946e7db60b7857e1287f6a0bae6b3f2342f007d0" - )?)?; + let public_key_pem = r#"-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3T7r2QbJzwCwjsKfftYYBNHMHRNS +2SV7YoGR4I/DcXxPrjKYzVxIKc7IvzqUbn22C3hX4Sh/aguuaz8jQvAH0A== +-----END PUBLIC KEY-----"#; + let public_key = public_key_pem.parse::().unwrap(); - let public_key = PublicKey::from_encoded_point(&encoded_point).unwrap(); + // let encoded_point = p256::EncodedPoint::from_bytes(&hex::decode( + // "04dd3eebd906c9cf00b08ec29f7ed61804d1cc1d1352d9257b628191e08fc3717c4fae3298cd5c4829cec8bf3a946e7db60b7857e1287f6a0bae6b3f2342f007d0" + // )?)?; + // let public_key = PublicKey::from_encoded_point(&encoded_point).unwrap(); let shared_secret = esk.diffie_hellman(&public_key); information!("Shared secret: {}", hex::encode(shared_secret.raw_secret_bytes()));