aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-11-14 19:44:20 +0100
committerSteven Fackler <[email protected]>2016-11-14 22:02:47 +0100
commite929e092169dba0dfda26a957a38c61fa3e33eb2 (patch)
tree56a62ec41268e3b3b8e560fc77da5acfd5ff431f
parentFix non-static EcGroup method locations (diff)
downloadrust-openssl-e929e092169dba0dfda26a957a38c61fa3e33eb2.tar.xz
rust-openssl-e929e092169dba0dfda26a957a38c61fa3e33eb2.zip
Add EcPoint::invert
-rw-r--r--openssl-sys/src/lib.rs1
-rw-r--r--openssl/src/ec_key.rs7
2 files changed, 8 insertions, 0 deletions
diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs
index 5e90ed4f..33d06e4e 100644
--- a/openssl-sys/src/lib.rs
+++ b/openssl-sys/src/lib.rs
@@ -1410,6 +1410,7 @@ extern {
pub fn EC_POINT_new(group: *const EC_GROUP) -> *mut EC_POINT;
pub fn EC_POINT_add(group: *const EC_GROUP, r: *mut EC_POINT, a: *const EC_POINT, b: *const EC_POINT, ctx: *mut BN_CTX) -> c_int;
pub fn EC_POINT_mul(group: *const EC_GROUP, r: *mut EC_POINT, n: *const BIGNUM, q: *const EC_POINT, m: *const BIGNUM, ctx: *mut BN_CTX) -> c_int;
+ pub fn EC_POINT_invert(group: *const EC_GROUP, r: *mut EC_POINT, ctx: *mut BN_CTX) -> c_int;
pub fn EC_POINT_point2oct(group: *const EC_GROUP, p: *const EC_POINT, form: point_conversion_form_t, buf: *mut c_uchar, len: size_t, ctx: *mut BN_CTX) -> size_t;
pub fn EC_POINT_oct2point(group: *const EC_GROUP, p: *mut EC_POINT, buf: *const c_uchar, len: size_t, ctx: *mut BN_CTX) -> c_int;
pub fn EC_POINT_cmp(group: *const EC_GROUP, a: *const EC_POINT, b: *const EC_POINT, ctx: *mut BN_CTX) -> c_int;
diff --git a/openssl/src/ec_key.rs b/openssl/src/ec_key.rs
index 215a89b5..3b40496a 100644
--- a/openssl/src/ec_key.rs
+++ b/openssl/src/ec_key.rs
@@ -147,6 +147,13 @@ impl EcPointRef {
}
}
+ /// Inverts `self`.
+ pub fn invert(&mut self, group: &EcGroupRef, ctx: &BigNumContextRef) -> Result<(), ErrorStack> {
+ unsafe {
+ cvt(ffi::EC_POINT_invert(group.as_ptr(), self.as_ptr(), ctx.as_ptr())).map(|_| ())
+ }
+ }
+
/// Serializes the point to a binary representation.
pub fn to_bytes(&self,
group: &EcGroupRef,