From e6a6ebb87d5b5bff406177cbe36ab56d3ad72826 Mon Sep 17 00:00:00 2001 From: Andrew Osmond Date: Tue, 4 Apr 2017 15:34:31 -0400 Subject: Add new EC/PKEY methods to permit deriving shared secrets. --- openssl/src/ec.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'openssl/src/ec.rs') diff --git a/openssl/src/ec.rs b/openssl/src/ec.rs index 37815021..33c15569 100644 --- a/openssl/src/ec.rs +++ b/openssl/src/ec.rs @@ -314,6 +314,10 @@ impl EcKeyRef { pub fn check_key(&self) -> Result<(), ErrorStack> { unsafe { cvt(ffi::EC_KEY_check_key(self.as_ptr())).map(|_| ()) } } + + pub fn to_owned(&self) -> Result { + unsafe { cvt_p(ffi::EC_KEY_dup(self.as_ptr())).map(EcKey) } + } } impl EcKey { @@ -440,6 +444,13 @@ mod test { key.private_key().unwrap(); } + #[test] + fn dup() { + let group = EcGroup::from_curve_name(nid::X9_62_PRIME256V1).unwrap(); + let key = EcKey::generate(&group).unwrap(); + key.to_owned().unwrap(); + } + #[test] fn point_new() { let group = EcGroup::from_curve_name(nid::X9_62_PRIME256V1).unwrap(); -- cgit v1.2.3