Struct curve25519_dalek::scalar::Scalar
source · [−]pub struct Scalar { /* private fields */ }
Expand description
The Scalar
struct holds an integer \(s < 2^{255} \) which
represents an element of \(\mathbb Z / \ell\).
Implementations
sourceimpl Scalar
impl Scalar
sourcepub fn from_bytes_mod_order(bytes: [u8; 32]) -> Scalar
pub fn from_bytes_mod_order(bytes: [u8; 32]) -> Scalar
Construct a Scalar
by reducing a 256-bit little-endian integer
modulo the group order \( \ell \).
sourcepub fn from_bytes_mod_order_wide(input: &[u8; 64]) -> Scalar
pub fn from_bytes_mod_order_wide(input: &[u8; 64]) -> Scalar
Construct a Scalar
by reducing a 512-bit little-endian integer
modulo the group order \( \ell \).
sourceimpl Scalar
impl Scalar
sourcepub fn random<R: RngCore + CryptoRng>(rng: &mut R) -> Self
pub fn random<R: RngCore + CryptoRng>(rng: &mut R) -> Self
Return a Scalar
chosen uniformly at random using a user-provided RNG.
Inputs
rng
: any RNG which implements theRngCore + CryptoRng
interface.
Returns
A random scalar within ℤ/lℤ.
Example
extern crate rand_core;
use curve25519_dalek::scalar::Scalar;
use rand_core::OsRng;
let mut csprng = OsRng;
let a: Scalar = Scalar::random(&mut csprng);
sourcepub fn hash_from_bytes<D>(input: &[u8]) -> Scalar where
D: Digest<OutputSize = U64> + Default,
pub fn hash_from_bytes<D>(input: &[u8]) -> Scalar where
D: Digest<OutputSize = U64> + Default,
Hash a slice of bytes into a scalar.
Takes a type parameter D
, which is any Digest
producing 64
bytes (512 bits) of output.
Convenience wrapper around from_hash
.
Example
extern crate sha2;
use sha2::Sha512;
let msg = "To really appreciate architecture, you may even need to commit a murder";
let s = Scalar::hash_from_bytes::<Sha512>(msg.as_bytes());
sourcepub fn from_hash<D>(hash: D) -> Scalar where
D: Digest<OutputSize = U64>,
pub fn from_hash<D>(hash: D) -> Scalar where
D: Digest<OutputSize = U64>,
Construct a scalar from an existing Digest
instance.
Use this instead of hash_from_bytes
if it is more convenient
to stream data into the Digest
than to pass a single byte
slice.
Example
extern crate sha2;
use sha2::Digest;
use sha2::Sha512;
let mut h = Sha512::new()
.chain("To really appreciate architecture, you may even need to commit a murder.")
.chain("While the programs used for The Manhattan Transcripts are of the most extreme")
.chain("nature, they also parallel the most common formula plot: the archetype of")
.chain("murder. Other phantasms were occasionally used to underline the fact that")
.chain("perhaps all architecture, rather than being about functional standards, is")
.chain("about love and death.");
let s = Scalar::from_hash(h);
println!("{:?}", s.to_bytes());
assert!(s == Scalar::from_bits([ 21, 88, 208, 252, 63, 122, 210, 152,
154, 38, 15, 23, 16, 167, 80, 150,
192, 221, 77, 226, 62, 25, 224, 148,
239, 48, 176, 10, 185, 69, 168, 11, ]));
sourcepub fn to_bytes(&self) -> [u8; 32]
pub fn to_bytes(&self) -> [u8; 32]
Convert this Scalar
to its underlying sequence of bytes.
Example
use curve25519_dalek::scalar::Scalar;
let s: Scalar = Scalar::zero();
assert!(s.to_bytes() == [0u8; 32]);
sourcepub fn as_bytes(&self) -> &[u8; 32]
pub fn as_bytes(&self) -> &[u8; 32]
View the little-endian byte encoding of the integer representing this Scalar.
Example
use curve25519_dalek::scalar::Scalar;
let s: Scalar = Scalar::zero();
assert!(s.as_bytes() == &[0u8; 32]);
sourcepub fn invert(&self) -> Scalar
pub fn invert(&self) -> Scalar
Given a nonzero Scalar
, compute its multiplicative inverse.
Warning
self
MUST be nonzero. If you cannot
prove that this is the case, you SHOULD NOT USE THIS
FUNCTION.
Returns
The multiplicative inverse of the this Scalar
.
Example
use curve25519_dalek::scalar::Scalar;
// x = 2238329342913194256032495932344128051776374960164957527413114840482143558222
let X: Scalar = Scalar::from_bytes_mod_order([
0x4e, 0x5a, 0xb4, 0x34, 0x5d, 0x47, 0x08, 0x84,
0x59, 0x13, 0xb4, 0x64, 0x1b, 0xc2, 0x7d, 0x52,
0x52, 0xa5, 0x85, 0x10, 0x1b, 0xcc, 0x42, 0x44,
0xd4, 0x49, 0xf4, 0xa8, 0x79, 0xd9, 0xf2, 0x04,
]);
// 1/x = 6859937278830797291664592131120606308688036382723378951768035303146619657244
let XINV: Scalar = Scalar::from_bytes_mod_order([
0x1c, 0xdc, 0x17, 0xfc, 0xe0, 0xe9, 0xa5, 0xbb,
0xd9, 0x24, 0x7e, 0x56, 0xbb, 0x01, 0x63, 0x47,
0xbb, 0xba, 0x31, 0xed, 0xd5, 0xa9, 0xbb, 0x96,
0xd5, 0x0b, 0xcd, 0x7a, 0x3f, 0x96, 0x2a, 0x0f,
]);
let inv_X: Scalar = X.invert();
assert!(XINV == inv_X);
let should_be_one: Scalar = &inv_X * &X;
assert!(should_be_one == Scalar::one());
sourcepub fn batch_invert(inputs: &mut [Scalar]) -> Scalar
pub fn batch_invert(inputs: &mut [Scalar]) -> Scalar
Given a slice of nonzero (possibly secret) Scalar
s,
compute their inverses in a batch.
Return
Each element of inputs
is replaced by its inverse.
The product of all inverses is returned.
Warning
All input Scalars
MUST be nonzero. If you cannot
prove that this is the case, you SHOULD NOT USE THIS
FUNCTION.
Example
let mut scalars = [
Scalar::from(3u64),
Scalar::from(5u64),
Scalar::from(7u64),
Scalar::from(11u64),
];
let allinv = Scalar::batch_invert(&mut scalars);
assert_eq!(allinv, Scalar::from(3*5*7*11u64).invert());
assert_eq!(scalars[0], Scalar::from(3u64).invert());
assert_eq!(scalars[1], Scalar::from(5u64).invert());
assert_eq!(scalars[2], Scalar::from(7u64).invert());
assert_eq!(scalars[3], Scalar::from(11u64).invert());
sourcepub fn is_canonical(&self) -> bool
pub fn is_canonical(&self) -> bool
Check whether this Scalar
is the canonical representative mod \(\ell\).
This is intended for uses like input validation, where variable-time code is acceptable.
// 2^255 - 1, since `from_bits` clears the high bit
let _2_255_minus_1 = Scalar::from_bits([0xff;32]);
assert!(!_2_255_minus_1.is_canonical());
let reduced = _2_255_minus_1.reduce();
assert!(reduced.is_canonical());
Trait Implementations
sourceimpl<'b> AddAssign<&'b Scalar> for Scalar
impl<'b> AddAssign<&'b Scalar> for Scalar
sourcefn add_assign(&mut self, _rhs: &'b Scalar)
fn add_assign(&mut self, _rhs: &'b Scalar)
Performs the +=
operation. Read more
sourceimpl AddAssign<Scalar> for Scalar
impl AddAssign<Scalar> for Scalar
sourcefn add_assign(&mut self, rhs: Scalar)
fn add_assign(&mut self, rhs: Scalar)
Performs the +=
operation. Read more
sourceimpl ConditionallySelectable for Scalar
impl ConditionallySelectable for Scalar
sourceimpl ConstantTimeEq for Scalar
impl ConstantTimeEq for Scalar
sourceimpl From<u64> for Scalar
impl From<u64> for Scalar
sourcefn from(x: u64) -> Scalar
fn from(x: u64) -> Scalar
Construct a scalar from the given u64
.
Inputs
An u64
to convert to a Scalar
.
Returns
A Scalar
corresponding to the input u64
.
Example
use curve25519_dalek::scalar::Scalar;
let fourtytwo = Scalar::from(42u64);
let six = Scalar::from(6u64);
let seven = Scalar::from(7u64);
assert!(fourtytwo == six * seven);
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTable> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTable> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTable) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTable) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix128> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix128> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix128) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix128) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix16> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix16> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix16) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix16) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix256> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix256> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix256) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix256) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix32> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix32> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix32) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix32) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix64> for &'b Scalar
impl<'a, 'b> Mul<&'a EdwardsBasepointTableRadix64> for &'b Scalar
sourcefn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix64) -> EdwardsPoint
fn mul(self, basepoint_table: &'a EdwardsBasepointTableRadix64) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'a RistrettoBasepointTable> for &'b Scalar
impl<'a, 'b> Mul<&'a RistrettoBasepointTable> for &'b Scalar
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, basepoint_table: &'a RistrettoBasepointTable) -> RistrettoPoint
fn mul(self, basepoint_table: &'a RistrettoBasepointTable) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'b> Mul<&'b EdwardsPoint> for Scalar
impl<'b> Mul<&'b EdwardsPoint> for Scalar
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b EdwardsPoint) -> EdwardsPoint
fn mul(self, rhs: &'b EdwardsPoint) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b EdwardsPoint> for &'a Scalar
impl<'a, 'b> Mul<&'b EdwardsPoint> for &'a Scalar
sourcefn mul(self, point: &'b EdwardsPoint) -> EdwardsPoint
fn mul(self, point: &'b EdwardsPoint) -> EdwardsPoint
Scalar multiplication: compute scalar * self
.
For scalar multiplication of a basepoint,
EdwardsBasepointTable
is approximately 4x faster.
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'b> Mul<&'b MontgomeryPoint> for Scalar
impl<'b> Mul<&'b MontgomeryPoint> for Scalar
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b MontgomeryPoint) -> MontgomeryPoint
fn mul(self, rhs: &'b MontgomeryPoint) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b MontgomeryPoint> for &'a Scalar
impl<'a, 'b> Mul<&'b MontgomeryPoint> for &'a Scalar
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, point: &'b MontgomeryPoint) -> MontgomeryPoint
fn mul(self, point: &'b MontgomeryPoint) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b RistrettoPoint> for &'a Scalar
impl<'a, 'b> Mul<&'b RistrettoPoint> for &'a Scalar
sourcefn mul(self, point: &'b RistrettoPoint) -> RistrettoPoint
fn mul(self, point: &'b RistrettoPoint) -> RistrettoPoint
Scalar multiplication: compute self * scalar
.
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourceimpl<'b> Mul<&'b RistrettoPoint> for Scalar
impl<'b> Mul<&'b RistrettoPoint> for Scalar
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b RistrettoPoint) -> RistrettoPoint
fn mul(self, rhs: &'b RistrettoPoint) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix256
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix256
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTable
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTable
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a RistrettoPoint
impl<'a, 'b> Mul<&'b Scalar> for &'a RistrettoPoint
sourcefn mul(self, scalar: &'b Scalar) -> RistrettoPoint
fn mul(self, scalar: &'b Scalar) -> RistrettoPoint
Scalar multiplication: compute scalar * self
.
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourceimpl<'b> Mul<&'b Scalar> for RistrettoPoint
impl<'b> Mul<&'b Scalar> for RistrettoPoint
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b Scalar) -> RistrettoPoint
fn mul(self, rhs: &'b Scalar) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a RistrettoBasepointTable
impl<'a, 'b> Mul<&'b Scalar> for &'a RistrettoBasepointTable
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, scalar: &'b Scalar) -> RistrettoPoint
fn mul(self, scalar: &'b Scalar) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'b> Mul<&'b Scalar> for MontgomeryPoint
impl<'b> Mul<&'b Scalar> for MontgomeryPoint
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b Scalar) -> MontgomeryPoint
fn mul(self, rhs: &'b Scalar) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a MontgomeryPoint
impl<'a, 'b> Mul<&'b Scalar> for &'a MontgomeryPoint
Multiply this MontgomeryPoint
by a Scalar
.
sourcefn mul(self, scalar: &'b Scalar) -> MontgomeryPoint
fn mul(self, scalar: &'b Scalar) -> MontgomeryPoint
Given self
\( = u_0(P) \), and a Scalar
\(n\), return \( u_0([n]P) \).
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourceimpl<'b> Mul<&'b Scalar> for EdwardsPoint
impl<'b> Mul<&'b Scalar> for EdwardsPoint
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: &'b Scalar) -> EdwardsPoint
fn mul(self, rhs: &'b Scalar) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsPoint
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsPoint
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Scalar multiplication: compute scalar * self
.
For scalar multiplication of a basepoint,
EdwardsBasepointTable
is approximately 4x faster.
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix16
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix16
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix32
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix32
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix64
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix64
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix128
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsBasepointTableRadix128
sourcefn mul(self, scalar: &'b Scalar) -> EdwardsPoint
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
Construct an EdwardsPoint
from a Scalar
\(a\) by
computing the multiple \(aB\) of this basepoint \(B\).
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourceimpl<'a> Mul<EdwardsPoint> for &'a Scalar
impl<'a> Mul<EdwardsPoint> for &'a Scalar
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
fn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl Mul<EdwardsPoint> for Scalar
impl Mul<EdwardsPoint> for Scalar
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
fn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl<'a> Mul<MontgomeryPoint> for &'a Scalar
impl<'a> Mul<MontgomeryPoint> for &'a Scalar
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint
fn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl Mul<MontgomeryPoint> for Scalar
impl Mul<MontgomeryPoint> for Scalar
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint
fn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl<'a> Mul<RistrettoPoint> for &'a Scalar
impl<'a> Mul<RistrettoPoint> for &'a Scalar
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: RistrettoPoint) -> RistrettoPoint
fn mul(self, rhs: RistrettoPoint) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl Mul<RistrettoPoint> for Scalar
impl Mul<RistrettoPoint> for Scalar
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: RistrettoPoint) -> RistrettoPoint
fn mul(self, rhs: RistrettoPoint) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'a> Mul<Scalar> for &'a MontgomeryPoint
impl<'a> Mul<Scalar> for &'a MontgomeryPoint
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> MontgomeryPoint
fn mul(self, rhs: Scalar) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl Mul<Scalar> for MontgomeryPoint
impl Mul<Scalar> for MontgomeryPoint
type Output = MontgomeryPoint
type Output = MontgomeryPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> MontgomeryPoint
fn mul(self, rhs: Scalar) -> MontgomeryPoint
Performs the *
operation. Read more
sourceimpl<'a> Mul<Scalar> for &'a EdwardsPoint
impl<'a> Mul<Scalar> for &'a EdwardsPoint
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> EdwardsPoint
fn mul(self, rhs: Scalar) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl Mul<Scalar> for EdwardsPoint
impl Mul<Scalar> for EdwardsPoint
type Output = EdwardsPoint
type Output = EdwardsPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> EdwardsPoint
fn mul(self, rhs: Scalar) -> EdwardsPoint
Performs the *
operation. Read more
sourceimpl<'a> Mul<Scalar> for &'a RistrettoPoint
impl<'a> Mul<Scalar> for &'a RistrettoPoint
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> RistrettoPoint
fn mul(self, rhs: Scalar) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl Mul<Scalar> for RistrettoPoint
impl Mul<Scalar> for RistrettoPoint
type Output = RistrettoPoint
type Output = RistrettoPoint
The resulting type after applying the *
operator.
sourcefn mul(self, rhs: Scalar) -> RistrettoPoint
fn mul(self, rhs: Scalar) -> RistrettoPoint
Performs the *
operation. Read more
sourceimpl<'b> MulAssign<&'b Scalar> for Scalar
impl<'b> MulAssign<&'b Scalar> for Scalar
sourcefn mul_assign(&mut self, _rhs: &'b Scalar)
fn mul_assign(&mut self, _rhs: &'b Scalar)
Performs the *=
operation. Read more
sourceimpl<'b> MulAssign<&'b Scalar> for MontgomeryPoint
impl<'b> MulAssign<&'b Scalar> for MontgomeryPoint
sourcefn mul_assign(&mut self, scalar: &'b Scalar)
fn mul_assign(&mut self, scalar: &'b Scalar)
Performs the *=
operation. Read more
sourceimpl<'b> MulAssign<&'b Scalar> for EdwardsPoint
impl<'b> MulAssign<&'b Scalar> for EdwardsPoint
sourcefn mul_assign(&mut self, scalar: &'b Scalar)
fn mul_assign(&mut self, scalar: &'b Scalar)
Performs the *=
operation. Read more
sourceimpl<'b> MulAssign<&'b Scalar> for RistrettoPoint
impl<'b> MulAssign<&'b Scalar> for RistrettoPoint
sourcefn mul_assign(&mut self, scalar: &'b Scalar)
fn mul_assign(&mut self, scalar: &'b Scalar)
Performs the *=
operation. Read more
sourceimpl MulAssign<Scalar> for Scalar
impl MulAssign<Scalar> for Scalar
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
Performs the *=
operation. Read more
sourceimpl MulAssign<Scalar> for MontgomeryPoint
impl MulAssign<Scalar> for MontgomeryPoint
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
Performs the *=
operation. Read more
sourceimpl MulAssign<Scalar> for EdwardsPoint
impl MulAssign<Scalar> for EdwardsPoint
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
Performs the *=
operation. Read more
sourceimpl MulAssign<Scalar> for RistrettoPoint
impl MulAssign<Scalar> for RistrettoPoint
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
Performs the *=
operation. Read more
sourceimpl<'b> SubAssign<&'b Scalar> for Scalar
impl<'b> SubAssign<&'b Scalar> for Scalar
sourcefn sub_assign(&mut self, _rhs: &'b Scalar)
fn sub_assign(&mut self, _rhs: &'b Scalar)
Performs the -=
operation. Read more
sourceimpl SubAssign<Scalar> for Scalar
impl SubAssign<Scalar> for Scalar
sourcefn sub_assign(&mut self, rhs: Scalar)
fn sub_assign(&mut self, rhs: Scalar)
Performs the -=
operation. Read more
impl Copy for Scalar
impl Eq for Scalar
Auto Trait Implementations
impl RefUnwindSafe for Scalar
impl Send for Scalar
impl Sync for Scalar
impl Unpin for Scalar
impl UnwindSafe for Scalar
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ConditionallyNegatable for T where
T: ConditionallySelectable,
&'a T: for<'a> Neg,
<&'a T as Neg>::Output == T,
impl<T> ConditionallyNegatable for T where
T: ConditionallySelectable,
&'a T: for<'a> Neg,
<&'a T as Neg>::Output == T,
sourcepub fn conditional_negate(&mut self, choice: Choice)
pub fn conditional_negate(&mut self, choice: Choice)
Negate self
if choice == Choice(1)
; otherwise, leave it
unchanged. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more