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_128bit_scalar<F: Field>(&mut self) -> F
pub fn read_128bit_scalar<F: Field>(&mut self) -> F
Sample a small 128 bit field element
Insecure for some use cases, but handy for delinearization type tricks.
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.
Source§impl RngCore for Reader
Read bytes from the transcript. Always succeed fully
impl RngCore for Reader
Read bytes from the transcript. Always succeed fully
Source§fn fill_bytes(&mut self, dest: &mut [u8])
fn fill_bytes(&mut self, dest: &mut [u8])
dest with random data. Read moreimpl CryptoRng for Reader
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
Source§impl<T> CryptoRngCore for T
impl<T> CryptoRngCore for T
Source§fn as_rngcore(&mut self) -> &mut dyn RngCore
fn as_rngcore(&mut self) -> &mut dyn RngCore
RngCore trait object.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>,
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>,
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,
Source§fn gen_bool(&mut self, p: f64) -> bool
fn gen_bool(&mut self, p: f64) -> bool
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
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