Struct ScalarPrimitive
pub struct ScalarPrimitive<C>where
C: Curve,{ /* private fields */ }Expand description
Generic scalar type with primitive functionality.
This type provides a baseline level of scalar arithmetic functionality which is always available for all curves, regardless of if they implement any arithmetic traits.
§serde support
When the optional serde feature of this create is enabled, [Serialize]
and [Deserialize] impls are provided for this type.
The serialization is a fixed-width big endian encoding. When used with textual formats, the binary data is encoded as hexadecimal.
Implementations§
§impl<C> ScalarPrimitive<C>where
C: Curve,
impl<C> ScalarPrimitive<C>where
C: Curve,
pub const ZERO: ScalarPrimitive<C>
pub const ZERO: ScalarPrimitive<C>
Zero scalar.
pub const ONE: ScalarPrimitive<C>
pub const ONE: ScalarPrimitive<C>
Multiplicative identity.
pub fn random(rng: &mut impl CryptoRngCore) -> ScalarPrimitive<C>
pub fn random(rng: &mut impl CryptoRngCore) -> ScalarPrimitive<C>
Generate a random ScalarPrimitive.
pub fn new(uint: <C as Curve>::Uint) -> CtOption<ScalarPrimitive<C>>
pub fn new(uint: <C as Curve>::Uint) -> CtOption<ScalarPrimitive<C>>
Create a new scalar from Curve::Uint.
pub fn from_bytes(
bytes: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
) -> CtOption<ScalarPrimitive<C>>
pub fn from_bytes( bytes: &GenericArray<u8, <C as Curve>::FieldBytesSize>, ) -> CtOption<ScalarPrimitive<C>>
Decode ScalarPrimitive from a serialized field element
pub fn from_slice(slice: &[u8]) -> Result<ScalarPrimitive<C>, Error>
pub fn from_slice(slice: &[u8]) -> Result<ScalarPrimitive<C>, Error>
Decode ScalarPrimitive from a big endian byte slice.
pub fn is_zero(&self) -> Choice
pub fn is_zero(&self) -> Choice
Is this ScalarPrimitive value equal to zero?
pub fn is_even(&self) -> Choice
pub fn is_even(&self) -> Choice
Is this ScalarPrimitive value even?
pub fn is_odd(&self) -> Choice
pub fn is_odd(&self) -> Choice
Is this ScalarPrimitive value odd?
pub fn to_bytes(&self) -> GenericArray<u8, <C as Curve>::FieldBytesSize>
pub fn to_bytes(&self) -> GenericArray<u8, <C as Curve>::FieldBytesSize>
Encode ScalarPrimitive as a serialized field element.
Trait Implementations§
§impl<C> Add<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> Add<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
+ operator.§fn add(self, other: &ScalarPrimitive<C>) -> ScalarPrimitive<C>
fn add(self, other: &ScalarPrimitive<C>) -> ScalarPrimitive<C>
+ operation. Read more§impl<C> Add for ScalarPrimitive<C>where
C: Curve,
impl<C> Add for ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
+ operator.§fn add(self, other: ScalarPrimitive<C>) -> ScalarPrimitive<C>
fn add(self, other: ScalarPrimitive<C>) -> ScalarPrimitive<C>
+ operation. Read more§impl<C> AddAssign<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> AddAssign<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
§fn add_assign(&mut self, other: &ScalarPrimitive<C>)
fn add_assign(&mut self, other: &ScalarPrimitive<C>)
+= operation. Read more§impl<C> AddAssign for ScalarPrimitive<C>where
C: Curve,
impl<C> AddAssign for ScalarPrimitive<C>where
C: Curve,
§fn add_assign(&mut self, other: ScalarPrimitive<C>)
fn add_assign(&mut self, other: ScalarPrimitive<C>)
+= operation. Read more§impl<C> AsRef<[Limb]> for ScalarPrimitive<C>where
C: Curve,
impl<C> AsRef<[Limb]> for ScalarPrimitive<C>where
C: Curve,
§impl<C> Clone for ScalarPrimitive<C>
impl<C> Clone for ScalarPrimitive<C>
§fn clone(&self) -> ScalarPrimitive<C>
fn clone(&self) -> ScalarPrimitive<C>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<C> ConditionallySelectable for ScalarPrimitive<C>where
C: Curve,
impl<C> ConditionallySelectable for ScalarPrimitive<C>where
C: Curve,
§fn conditional_select(
a: &ScalarPrimitive<C>,
b: &ScalarPrimitive<C>,
choice: Choice,
) -> ScalarPrimitive<C>
fn conditional_select( a: &ScalarPrimitive<C>, b: &ScalarPrimitive<C>, choice: Choice, ) -> ScalarPrimitive<C>
Source§fn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
Source§fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
self and other if choice == 1; otherwise,
reassign both unto themselves. Read more§impl<C> ConstantTimeEq for ScalarPrimitive<C>where
C: Curve,
impl<C> ConstantTimeEq for ScalarPrimitive<C>where
C: Curve,
§impl<C> ConstantTimeGreater for ScalarPrimitive<C>where
C: Curve,
impl<C> ConstantTimeGreater for ScalarPrimitive<C>where
C: Curve,
§fn ct_gt(&self, other: &ScalarPrimitive<C>) -> Choice
fn ct_gt(&self, other: &ScalarPrimitive<C>) -> Choice
self > other. Read more§impl<C> ConstantTimeLess for ScalarPrimitive<C>where
C: Curve,
impl<C> ConstantTimeLess for ScalarPrimitive<C>where
C: Curve,
§fn ct_lt(&self, other: &ScalarPrimitive<C>) -> Choice
fn ct_lt(&self, other: &ScalarPrimitive<C>) -> Choice
self < other. Read more§impl<C> Debug for ScalarPrimitive<C>
impl<C> Debug for ScalarPrimitive<C>
§impl<C> Default for ScalarPrimitive<C>
impl<C> Default for ScalarPrimitive<C>
§fn default() -> ScalarPrimitive<C>
fn default() -> ScalarPrimitive<C>
§impl<C> Display for ScalarPrimitive<C>where
C: Curve,
impl<C> Display for ScalarPrimitive<C>where
C: Curve,
§impl<C> From<&NonZeroScalar<C>> for ScalarPrimitive<C>where
C: CurveArithmetic,
impl<C> From<&NonZeroScalar<C>> for ScalarPrimitive<C>where
C: CurveArithmetic,
§fn from(scalar: &NonZeroScalar<C>) -> ScalarPrimitive<C>
fn from(scalar: &NonZeroScalar<C>) -> ScalarPrimitive<C>
§impl From<&Scalar> for ScalarPrimitive<NistP256>
impl From<&Scalar> for ScalarPrimitive<NistP256>
§fn from(scalar: &Scalar) -> ScalarPrimitive<NistP256>
fn from(scalar: &Scalar) -> ScalarPrimitive<NistP256>
§impl From<&Scalar> for ScalarPrimitive<Secp256k1>
impl From<&Scalar> for ScalarPrimitive<Secp256k1>
§fn from(scalar: &Scalar) -> ScalarPrimitive<Secp256k1>
fn from(scalar: &Scalar) -> ScalarPrimitive<Secp256k1>
§impl From<&ScalarPrimitive<NistP256>> for Scalar
impl From<&ScalarPrimitive<NistP256>> for Scalar
§fn from(scalar: &ScalarPrimitive<NistP256>) -> Scalar
fn from(scalar: &ScalarPrimitive<NistP256>) -> Scalar
§impl From<&ScalarPrimitive<Secp256k1>> for Scalar
impl From<&ScalarPrimitive<Secp256k1>> for Scalar
§fn from(scalar: &ScalarPrimitive<Secp256k1>) -> Scalar
fn from(scalar: &ScalarPrimitive<Secp256k1>) -> Scalar
§impl<C> From<NonZeroScalar<C>> for ScalarPrimitive<C>where
C: CurveArithmetic,
impl<C> From<NonZeroScalar<C>> for ScalarPrimitive<C>where
C: CurveArithmetic,
§fn from(scalar: NonZeroScalar<C>) -> ScalarPrimitive<C>
fn from(scalar: NonZeroScalar<C>) -> ScalarPrimitive<C>
§impl From<Scalar> for ScalarPrimitive<NistP256>
impl From<Scalar> for ScalarPrimitive<NistP256>
§fn from(scalar: Scalar) -> ScalarPrimitive<NistP256>
fn from(scalar: Scalar) -> ScalarPrimitive<NistP256>
§impl From<Scalar> for ScalarPrimitive<Secp256k1>
impl From<Scalar> for ScalarPrimitive<Secp256k1>
§fn from(scalar: Scalar) -> ScalarPrimitive<Secp256k1>
fn from(scalar: Scalar) -> ScalarPrimitive<Secp256k1>
§impl From<ScalarPrimitive<NistP256>> for Scalar
impl From<ScalarPrimitive<NistP256>> for Scalar
§fn from(scalar: ScalarPrimitive<NistP256>) -> Scalar
fn from(scalar: ScalarPrimitive<NistP256>) -> Scalar
§impl From<ScalarPrimitive<Secp256k1>> for Scalar
impl From<ScalarPrimitive<Secp256k1>> for Scalar
§fn from(scalar: ScalarPrimitive<Secp256k1>) -> Scalar
fn from(scalar: ScalarPrimitive<Secp256k1>) -> Scalar
§impl<C> From<u64> for ScalarPrimitive<C>where
C: Curve,
impl<C> From<u64> for ScalarPrimitive<C>where
C: Curve,
§fn from(n: u64) -> ScalarPrimitive<C>
fn from(n: u64) -> ScalarPrimitive<C>
§impl<C> FromStr for ScalarPrimitive<C>where
C: Curve,
impl<C> FromStr for ScalarPrimitive<C>where
C: Curve,
§impl<C> FromUintUnchecked for ScalarPrimitive<C>where
C: Curve,
impl<C> FromUintUnchecked for ScalarPrimitive<C>where
C: Curve,
§fn from_uint_unchecked(uint: <C as Curve>::Uint) -> ScalarPrimitive<C>
fn from_uint_unchecked(uint: <C as Curve>::Uint) -> ScalarPrimitive<C>
§impl<C> IsHigh for ScalarPrimitive<C>where
C: Curve,
impl<C> IsHigh for ScalarPrimitive<C>where
C: Curve,
§impl<C> LowerHex for ScalarPrimitive<C>where
C: Curve,
impl<C> LowerHex for ScalarPrimitive<C>where
C: Curve,
§impl<C> Neg for &ScalarPrimitive<C>where
C: Curve,
impl<C> Neg for &ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
- operator.§fn neg(self) -> ScalarPrimitive<C>
fn neg(self) -> ScalarPrimitive<C>
- operation. Read more§impl<C> Neg for ScalarPrimitive<C>where
C: Curve,
impl<C> Neg for ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
- operator.§fn neg(self) -> ScalarPrimitive<C>
fn neg(self) -> ScalarPrimitive<C>
- operation. Read more§impl<C> Ord for ScalarPrimitive<C>where
C: Curve,
impl<C> Ord for ScalarPrimitive<C>where
C: Curve,
§fn cmp(&self, other: &ScalarPrimitive<C>) -> Ordering
fn cmp(&self, other: &ScalarPrimitive<C>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
§impl<C> PartialEq for ScalarPrimitive<C>where
C: Curve,
impl<C> PartialEq for ScalarPrimitive<C>where
C: Curve,
§impl<C> PartialOrd for ScalarPrimitive<C>where
C: Curve,
impl<C> PartialOrd for ScalarPrimitive<C>where
C: Curve,
§impl<C> ShrAssign<usize> for ScalarPrimitive<C>where
C: Curve,
impl<C> ShrAssign<usize> for ScalarPrimitive<C>where
C: Curve,
§fn shr_assign(&mut self, rhs: usize)
fn shr_assign(&mut self, rhs: usize)
>>= operation. Read more§impl<C> Sub<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> Sub<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
- operator.§fn sub(self, other: &ScalarPrimitive<C>) -> ScalarPrimitive<C>
fn sub(self, other: &ScalarPrimitive<C>) -> ScalarPrimitive<C>
- operation. Read more§impl<C> Sub for ScalarPrimitive<C>where
C: Curve,
impl<C> Sub for ScalarPrimitive<C>where
C: Curve,
§type Output = ScalarPrimitive<C>
type Output = ScalarPrimitive<C>
- operator.§fn sub(self, other: ScalarPrimitive<C>) -> ScalarPrimitive<C>
fn sub(self, other: ScalarPrimitive<C>) -> ScalarPrimitive<C>
- operation. Read more§impl<C> SubAssign<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
impl<C> SubAssign<&ScalarPrimitive<C>> for ScalarPrimitive<C>where
C: Curve,
§fn sub_assign(&mut self, other: &ScalarPrimitive<C>)
fn sub_assign(&mut self, other: &ScalarPrimitive<C>)
-= operation. Read more§impl<C> SubAssign for ScalarPrimitive<C>where
C: Curve,
impl<C> SubAssign for ScalarPrimitive<C>where
C: Curve,
§fn sub_assign(&mut self, other: ScalarPrimitive<C>)
fn sub_assign(&mut self, other: ScalarPrimitive<C>)
-= operation. Read more§impl<C> UpperHex for ScalarPrimitive<C>where
C: Curve,
impl<C> UpperHex for ScalarPrimitive<C>where
C: Curve,
impl<C> Copy for ScalarPrimitive<C>
impl<C> DefaultIsZeroes for ScalarPrimitive<C>where
C: Curve,
impl<C> Eq for ScalarPrimitive<C>where
C: Curve,
Auto Trait Implementations§
impl<C> Freeze for ScalarPrimitive<C>
impl<C> RefUnwindSafe for ScalarPrimitive<C>
impl<C> Send for ScalarPrimitive<C>
impl<C> Sync for ScalarPrimitive<C>
impl<C> Unpin for ScalarPrimitive<C>
impl<C> UnwindSafe for ScalarPrimitive<C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ConditionallyNegatable for T
impl<T> ConditionallyNegatable for T
Source§fn conditional_negate(&mut self, choice: Choice)
fn conditional_negate(&mut self, choice: Choice)
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more