Add ec::EcKey::private_key_from_der_for_group am: a129200580 am: 6d72cc850a am: 40a077105f am: bc12f8c91a
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/openssl/+/2191953
Change-Id: Ic3190cfb89c6099a3eadda4fa01e40f36ab8a1dd
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/openssl/src/ec.rs b/openssl/src/ec.rs
index 13f8bb3..4731836 100644
--- a/openssl/src/ec.rs
+++ b/openssl/src/ec.rs
@@ -848,6 +848,26 @@
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> {