Skip to content

Commit a327829

Browse files
committed
Supports SEC1 keys in ECDSA
1 parent 744071e commit a327829

4 files changed

Lines changed: 12 additions & 1 deletion

File tree

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pki-types = { package = "rustls-pki-types", version = "1", default-features = fa
3535
getrandom = { version = "=0.4.0-rc.1", default-features = false, features = ["sys_rng"] }
3636
rsa = { version = "=0.10.0-rc.14", default-features = false, features = ["sha2", "encoding"] }
3737
rustls = { version = "0.23", default-features = false }
38+
sec1 = { version = "=0.8.0-rc.13", default-features = false }
3839
sha2 = { version = "=0.11.0-rc.4", default-features = false }
3940
signature = { version = "3.0.0-rc.9", default-features = false }
4041
x25519-dalek = { version = "3.0.0-pre.5", default-features = false }

src/sign/ecdsa.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
use alloc::{boxed::Box, format, sync::Arc};
33
use core::marker::PhantomData;
44

5+
use der::Decode;
56
use paste::paste;
67
use pkcs8::DecodePrivateKey;
78
use pki_types::PrivateKeyDer;
@@ -26,7 +27,14 @@ macro_rules! impl_ecdsa {
2627
$signing_key::from_pkcs8_der(der.secret_pkcs8_der()).map_err(|e| format!("failed to decrypt private key: {e}"))
2728
},
2829
PrivateKeyDer::Pkcs1(_) => Err(format!("ECDSA does not support PKCS#1 key")),
29-
PrivateKeyDer::Sec1(_) => Err(format!("ECDSA does not support SEC1 key")),
30+
PrivateKeyDer::Sec1(der) => {
31+
sec1::EcPrivateKey::from_der(der.secret_sec1_der())
32+
.map_err(|e| format!("failed to parse SEC1 EC private key: {e}"))
33+
.and_then(|ec_key| {
34+
$signing_key::from_slice(ec_key.private_key)
35+
.map_err(|e| format!("failed to create signing key: {e}"))
36+
})
37+
},
3038
_ => Err("not supported".into()),
3139
};
3240
pkey.map(|kp| {

validation/local_ping_pong_openssl/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)