32 lines
888 B
Diff
32 lines
888 B
Diff
diff --git a/src/ec.rs b/src/ec.rs
|
|
index a6a6dc9..88dcaaf 100644
|
|
--- a/src/ec.rs
|
|
+++ b/src/ec.rs
|
|
@@ -908,6 +908,26 @@ impl EcKey<Private> {
|
|
EcKey<Private>,
|
|
ffi::d2i_ECPrivateKey
|
|
}
|
|
+
|
|
+ /// Decodes a DER-encoded elliptic curve private key structure for the specified curve.
|
|
+ #[corresponds(EC_KEY_parse_private_key)]
|
|
+ #[cfg(boringssl)]
|
|
+ pub fn private_key_from_der_for_group(
|
|
+ der: &[u8],
|
|
+ group: &EcGroupRef,
|
|
+ ) -> Result<EcKey<Private>, ErrorStack> {
|
|
+ unsafe {
|
|
+ let mut cbs = ffi::CBS {
|
|
+ data: der.as_ptr(),
|
|
+ len: der.len(),
|
|
+ };
|
|
+ cvt_p(ffi::EC_KEY_parse_private_key(
|
|
+ &mut cbs as *mut ffi::CBS,
|
|
+ group.as_ptr(),
|
|
+ ))
|
|
+ .map(|p| EcKey::from_ptr(p))
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
impl<T> Clone for EcKey<T> {
|