Struct curve25519_dalek::scalar::Scalar [] [src]

pub struct Scalar(pub [u8; 32]);

The Scalar struct represents an element in ℤ/lℤ, where

l = 2252 + 27742317777372353535851937790883648493

is the order of the basepoint.

Methods

impl Scalar
[src]

Construct the additive identity

Construct the multiplicative identity

Compute a width-5 "Non-Adjacent Form" of this scalar.

A width-w NAF of a positive integer k is an expression k = sum(k[i]*2^i for i in range(l)), where each nonzero coefficient k[i] is odd and bounded by |k[i]| < 2^(w-1), k[l-1] is nonzero, and at most one of any w consecutive coefficients is nonzero. (Hankerson, Menezes, Vanstone; def 3.32).

Intuitively, this is like a binary expansion, except that we allow some coefficients to grow up to 2^(w-1) so that the nonzero coefficients are as sparse as possible.

Write this scalar in radix 16, with coefficients in [-8,8), i.e., compute a_i such that

a = a_0 + a_1*161 + ... + a_63*1663,

with -8 ≤ a_i < 8 for 0 ≤ i < 63 and -8 ≤ a_63 ≤ 8.

Precondition: self[31] <= 127. This is the case whenever self is reduced.

Compute ab+c (mod l).

Reduce a 512-bit little endian number mod l

Trait Implementations

impl Copy for Scalar
[src]

impl Clone for Scalar
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Index<usize> for Scalar
[src]

The returned type after indexing

The method for the indexing (container[index]) operation

impl IndexMut<usize> for Scalar
[src]

The method for the mutable indexing (container[index]) operation