Skip to content

Commit

Permalink
Add unit tests for EcGroup::from_components, EcPoint.set_affine_coord…
Browse files Browse the repository at this point in the history
…inates_gfp, and EcGroup.set_generator
  • Loading branch information
John-K committed Jun 23, 2022
1 parent 3641279 commit fcf71cf
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions openssl/src/ec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -941,6 +941,97 @@ mod test {
EcKey::generate(&group).unwrap();
}

#[test]
fn ec_group_from_components() {
// parameters are from secp256r1
let p = BigNum::from_hex_str(
"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
)
.unwrap();
let a = BigNum::from_hex_str(
"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
)
.unwrap();
let b = BigNum::from_hex_str(
"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
)
.unwrap();
let mut ctx = BigNumContext::new().unwrap();

let _curve = EcGroup::from_components(p, a, b, &mut ctx).unwrap();
}

#[test]
fn ec_point_set_affine() {
// parameters are from secp256r1
let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
let mut ctx = BigNumContext::new().unwrap();
let mut gen_point = EcPoint::new(&group).unwrap();
let gen_x = BigNum::from_hex_str(
"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
)
.unwrap();
let gen_y = BigNum::from_hex_str(
"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
)
.unwrap();
gen_point
.set_affine_coordinates_gfp(&group, &gen_x, &gen_y, &mut ctx)
.unwrap();
assert!(gen_point.is_on_curve(&group, &mut ctx).unwrap());
}

#[test]
fn ec_group_set_generator() {
// parameters are from secp256r1
let mut ctx = BigNumContext::new().unwrap();
let p = BigNum::from_hex_str(
"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
)
.unwrap();
let a = BigNum::from_hex_str(
"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
)
.unwrap();
let b = BigNum::from_hex_str(
"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
)
.unwrap();

let mut group = EcGroup::from_components(p, a, b, &mut ctx).unwrap();

let mut gen_point = EcPoint::new(&group).unwrap();
let gen_x = BigNum::from_hex_str(
"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
)
.unwrap();
let gen_y = BigNum::from_hex_str(
"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
)
.unwrap();
gen_point
.set_affine_coordinates_gfp(&group, &gen_x, &gen_y, &mut ctx)
.unwrap();

let order = BigNum::from_hex_str(
"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
)
.unwrap();
let cofactor = BigNum::from_hex_str("01").unwrap();
group.set_generator(gen_point, order, cofactor).unwrap();
let mut constructed_order = BigNum::new().unwrap();
group.order(&mut constructed_order, &mut ctx).unwrap();

let named_group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
let mut named_order = BigNum::new().unwrap();
named_group.order(&mut named_order, &mut ctx).unwrap();

assert_eq!(
constructed_order.ucmp(&named_order),
std::cmp::Ordering::Equal
);
}

#[test]
fn cofactor() {
let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
Expand Down

0 comments on commit fcf71cf

Please sign in to comment.