Expose EC_GROUP_get_cofactor as EcGroup::cofactor
This commit is contained in:
parent
ccb2fd49ca
commit
e8fc907da3
|
|
@ -30,6 +30,12 @@ extern "C" {
|
||||||
ctx: *mut BN_CTX,
|
ctx: *mut BN_CTX,
|
||||||
) -> c_int;
|
) -> c_int;
|
||||||
|
|
||||||
|
pub fn EC_GROUP_get_cofactor(
|
||||||
|
group: *const EC_GROUP,
|
||||||
|
cofactor: *mut BIGNUM,
|
||||||
|
ctx: *mut BN_CTX,
|
||||||
|
) -> c_int;
|
||||||
|
|
||||||
pub fn EC_GROUP_get0_generator(group: *const EC_GROUP) -> *const EC_POINT;
|
pub fn EC_GROUP_get0_generator(group: *const EC_GROUP) -> *const EC_POINT;
|
||||||
|
|
||||||
pub fn EC_GROUP_get_curve_name(group: *const EC_GROUP) -> c_int;
|
pub fn EC_GROUP_get_curve_name(group: *const EC_GROUP) -> c_int;
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,26 @@ impl EcGroupRef {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Places the cofactor of the group in the provided `BigNum`.
|
||||||
|
///
|
||||||
|
/// OpenSSL documentation at [`EC_GROUP_get_cofactor`]
|
||||||
|
///
|
||||||
|
/// [`EC_GROUP_get_cofactor`]: https://www.openssl.org/docs/man1.1.0/crypto/EC_GROUP_get_cofactor.html
|
||||||
|
pub fn cofactor(
|
||||||
|
&self,
|
||||||
|
cofactor: &mut BigNumRef,
|
||||||
|
ctx: &mut BigNumContextRef,
|
||||||
|
) -> Result<(), ErrorStack> {
|
||||||
|
unsafe {
|
||||||
|
cvt(ffi::EC_GROUP_get_cofactor(
|
||||||
|
self.as_ptr(),
|
||||||
|
cofactor.as_ptr(),
|
||||||
|
ctx.as_ptr(),
|
||||||
|
))
|
||||||
|
.map(|_| ())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the degree of the curve.
|
/// Returns the degree of the curve.
|
||||||
///
|
///
|
||||||
/// OpenSSL documentation at [`EC_GROUP_get_degree`]
|
/// OpenSSL documentation at [`EC_GROUP_get_degree`]
|
||||||
|
|
@ -328,7 +348,7 @@ impl EcPointRef {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Computes `generator * n`, storing the result ing `self`.
|
/// Computes `generator * n`, storing the result in `self`.
|
||||||
pub fn mul_generator(
|
pub fn mul_generator(
|
||||||
&mut self,
|
&mut self,
|
||||||
group: &EcGroupRef,
|
group: &EcGroupRef,
|
||||||
|
|
@ -863,6 +883,16 @@ mod test {
|
||||||
EcKey::generate(&group).unwrap();
|
EcKey::generate(&group).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cofactor() {
|
||||||
|
let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
|
||||||
|
let mut ctx = BigNumContext::new().unwrap();
|
||||||
|
let mut cofactor = BigNum::new().unwrap();
|
||||||
|
group.cofactor(&mut cofactor, &mut ctx).unwrap();
|
||||||
|
let one = BigNum::from_u32(1).unwrap();
|
||||||
|
assert_eq!(cofactor, one);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn dup() {
|
fn dup() {
|
||||||
let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
|
let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue