Struct Sm2

Source
pub struct Sm2;
Expand description

SM2 elliptic curve.

Trait Implementations§

Source§

impl AssociatedOid for Sm2

Available on crate feature pkcs8 only.
Source§

const OID: ObjectIdentifier

The OID associated with this type.
Source§

impl Clone for Sm2

Source§

fn clone(&self) -> Sm2

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Curve for Sm2

Source§

const ORDER: U256

Order of SM2’s elliptic curve group (i.e. scalar modulus).

Source§

type FieldBytesSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>

24-byte serialized field elements.

Source§

type Uint = Uint<crypto_bigint::::uint::U256::{constant#0}>

Big integer type used for representing field elements.

Source§

impl CurveArithmetic for Sm2

Available on crate feature arithmetic only.
Source§

type AffinePoint = AffinePoint<Sm2>

Elliptic curve point in affine coordinates.
Source§

type ProjectivePoint = ProjectivePoint<Sm2>

Elliptic curve point in projective coordinates. Read more
Source§

type Scalar = Scalar

Scalar field modulo this curve’s order. Read more
Source§

impl Debug for Sm2

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Sm2

Source§

fn default() -> Sm2

Returns the “default value” for a type. Read more
Source§

impl FieldBytesEncoding<Sm2> for U256

Source§

fn decode_field_bytes(field_bytes: &FieldBytes) -> Self

Decode unsigned integer from serialized field element. Read more
Source§

fn encode_field_bytes(&self) -> FieldBytes

Encode unsigned integer into serialized field element. Read more
Source§

impl Ord for Sm2

Source§

fn cmp(&self, other: &Sm2) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Sm2

Source§

fn eq(&self, other: &Sm2) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Sm2

Source§

fn partial_cmp(&self, other: &Sm2) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PointCompression for Sm2

Source§

const COMPRESS_POINTS: bool = false

SM2 points are typically uncompressed.

Source§

impl PrimeCurveArithmetic for Sm2

Available on crate feature arithmetic only.
Source§

type CurveGroup = ProjectivePoint<Sm2>

Prime order elliptic curve group.
Source§

impl PrimeCurveParams for Sm2

Available on crate feature arithmetic only.

Adapted from draft-shen-sm2-ecdsa Appendix D: Recommended Parameters.

Source§

const EQUATION_A: FieldElement

a = -3 (0xFFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC)

Source§

const EQUATION_B: FieldElement

b = 0x28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93

Source§

const GENERATOR: (FieldElement, FieldElement)

Base point of SM2.

Gₓ = 0x32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
Gᵧ = 0xBC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
Source§

type FieldElement = FieldElement

Base field element type.
Source§

type PointArithmetic = EquationAIsMinusThree

Point arithmetic implementation, might be optimized for this specific curve
Source§

impl ToEncodedPoint<Sm2> for VerifyingKey

Available on crate features arithmetic and dsa only.
Source§

fn to_encoded_point(&self, compress: bool) -> EncodedPoint

Serialize this value as a SEC1 EncodedPoint, optionally applying point compression.
Source§

impl Copy for Sm2

Source§

impl Eq for Sm2

Source§

impl PrimeCurve for Sm2

Source§

impl StructuralPartialEq for Sm2

Auto Trait Implementations§

§

impl Freeze for Sm2

§

impl RefUnwindSafe for Sm2

§

impl Send for Sm2

§

impl Sync for Sm2

§

impl Unpin for Sm2

§

impl UnwindSafe for Sm2

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynAssociatedOid for T
where T: AssociatedOid,

Source§

fn oid(&self) -> ObjectIdentifier

Get the OID associated with this value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<C> ValidatePublicKey for C

Source§

fn validate_public_key( secret_key: &SecretKey<C>, public_key: &EncodedPoint<<C as Curve>::FieldBytesSize>, ) -> Result<(), Error>

Validate that the given EncodedPoint is a valid public key for the provided secret value.