pub struct Reader(/* private fields */);
Expand description
Shake128 transcript style XoF reader, used for both Fiat-Shamir challenges and witnesses.
Implementations§
Source§impl Reader
impl Reader
Sourcepub fn read_bytes(&mut self, buf: &mut [u8])
pub fn read_bytes(&mut self, buf: &mut [u8])
Read bytes from the transcript into the buffer.
Sourcepub fn read_byte_array<const N: usize>(&mut self) -> [u8; N]
pub fn read_byte_array<const N: usize>(&mut self) -> [u8; N]
Read bytes from the transcript. Always succeed fully.
Sourcepub fn read_uniform<T: UniformRand>(&mut self) -> T
pub fn read_uniform<T: UniformRand>(&mut self) -> T
Sample a T
using ark_std:::UniformRand
Arkworks always does rejection sampling so far, so constant-time-ness depends the object being sampled.
Sourcepub fn read_reduce<F: PrimeField>(&mut self) -> F
pub fn read_reduce<F: PrimeField>(&mut self) -> F
Sample a prime field element using reduction mod the order from a 128 bit larger array of random bytes.
Identical to the IETF hash-to-curve draft except we only supports prime fields here, making this compatable with constant-time implementation.
Trait Implementations§
Source§impl Read for Reader
Read bytes from the transcript. Always succeed fully.
impl Read for Reader
Read bytes from the transcript. Always succeed fully.
Auto Trait Implementations§
impl Freeze for Reader
impl RefUnwindSafe for Reader
impl Send for Reader
impl Sync for Reader
impl Unpin for Reader
impl UnwindSafe for Reader
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
Mutably borrows from an owned value. Read more
Source§impl<R> Rng for R
impl<R> Rng for R
Source§fn gen<T>(&mut self) -> Twhere
Standard: Distribution<T>,
fn gen<T>(&mut self) -> Twhere
Standard: Distribution<T>,
Source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Generate a random value in the given range. Read more
Source§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Sample a new value, using the given distribution. Read more
Source§fn sample_iter<T, D>(self, distr: D) -> DistIter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> DistIter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
Create an iterator that generates values using the given distribution. Read more
Source§fn gen_bool(&mut self, p: f64) -> bool
fn gen_bool(&mut self, p: f64) -> bool
Return a bool with a probability
p
of being true. Read moreSource§fn gen_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn gen_ratio(&mut self, numerator: u32, denominator: u32) -> bool
Return a bool with a probability of
numerator/denominator
of being
true. I.e. gen_ratio(2, 3)
has chance of 2 in 3, or about 67%, of
returning true. If numerator == denominator
, then the returned value
is guaranteed to be true
. If numerator == 0
, then the returned
value is guaranteed to be false
. Read more