Loading openssl/src/ec.rs +91 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
openssl/src/ec.rs +91 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading