SigningKeyParams

Trait SigningKeyParams 

Source
pub trait SigningKeyParams: ParameterSet {
    type S1Size: ArraySize;
    type S2Size: ArraySize;
    type T0Size: ArraySize;
    type SigningKeySize: ArraySize;

    // Required methods
    fn encode_s1(
        s1: &Vector<BaseField, Self::L>,
    ) -> Array<u8, <Self as SigningKeyParams>::S1Size>;
    fn decode_s1(
        enc: &Array<u8, <Self as SigningKeyParams>::S1Size>,
    ) -> Vector<BaseField, Self::L>;
    fn encode_s2(
        s2: &Vector<BaseField, Self::K>,
    ) -> Array<u8, <Self as SigningKeyParams>::S2Size>;
    fn decode_s2(
        enc: &Array<u8, <Self as SigningKeyParams>::S2Size>,
    ) -> Vector<BaseField, Self::K>;
    fn encode_t0(
        t0: &Vector<BaseField, Self::K>,
    ) -> Array<u8, <Self as SigningKeyParams>::T0Size>;
    fn decode_t0(
        enc: &Array<u8, <Self as SigningKeyParams>::T0Size>,
    ) -> Vector<BaseField, Self::K>;
    fn concat_sk(
        rho: B32,
        K: B32,
        tr: Array<u8, U64>,
        s1: Array<u8, <Self as SigningKeyParams>::S1Size>,
        s2: Array<u8, <Self as SigningKeyParams>::S2Size>,
        t0: Array<u8, <Self as SigningKeyParams>::T0Size>,
    ) -> EncodedSigningKey<Self>;
    fn split_sk(
        enc: &EncodedSigningKey<Self>,
    ) -> (&B32, &B32, &Array<u8, U64>, &Array<u8, <Self as SigningKeyParams>::S1Size>, &Array<u8, <Self as SigningKeyParams>::S2Size>, &Array<u8, <Self as SigningKeyParams>::T0Size>);
}

Required Associated Types§

Required Methods§

Source

fn encode_s1( s1: &Vector<BaseField, Self::L>, ) -> Array<u8, <Self as SigningKeyParams>::S1Size>

Source

fn decode_s1( enc: &Array<u8, <Self as SigningKeyParams>::S1Size>, ) -> Vector<BaseField, Self::L>

Source

fn encode_s2( s2: &Vector<BaseField, Self::K>, ) -> Array<u8, <Self as SigningKeyParams>::S2Size>

Source

fn decode_s2( enc: &Array<u8, <Self as SigningKeyParams>::S2Size>, ) -> Vector<BaseField, Self::K>

Source

fn encode_t0( t0: &Vector<BaseField, Self::K>, ) -> Array<u8, <Self as SigningKeyParams>::T0Size>

Source

fn decode_t0( enc: &Array<u8, <Self as SigningKeyParams>::T0Size>, ) -> Vector<BaseField, Self::K>

Source

fn concat_sk( rho: B32, K: B32, tr: Array<u8, U64>, s1: Array<u8, <Self as SigningKeyParams>::S1Size>, s2: Array<u8, <Self as SigningKeyParams>::S2Size>, t0: Array<u8, <Self as SigningKeyParams>::T0Size>, ) -> EncodedSigningKey<Self>

Source

fn split_sk( enc: &EncodedSigningKey<Self>, ) -> (&B32, &B32, &Array<u8, U64>, &Array<u8, <Self as SigningKeyParams>::S1Size>, &Array<u8, <Self as SigningKeyParams>::S2Size>, &Array<u8, <Self as SigningKeyParams>::T0Size>)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<P> SigningKeyParams for P
where P: ParameterSet, P::Eta: Add<P::Eta>, Sum<P::Eta, P::Eta>: Len, Length<Sum<P::Eta, P::Eta>>: EncodingSize, <Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize: Mul<P::L> + Mul<P::K>, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>: ArraySize + Div<P::L, Output = <Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize> + Rem<P::L, Output = U0>, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>: ArraySize + Div<P::K, Output = <Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize> + Rem<P::K, Output = U0>, U416: Mul<P::K>, Prod<U416, P::K>: ArraySize + Div<P::K, Output = U416> + Rem<P::K, Output = U0>, U128: Add<Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Sum<U128, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>: ArraySize + Add<Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>> + Sub<U128, Output = Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Sum<Sum<U128, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>>: ArraySize + Add<Prod<U416, P::K>> + Sub<Sum<U128, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Output = Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>>, Sum<Sum<Sum<U128, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>>, Prod<U416, P::K>>: ArraySize + Sub<Sum<Sum<U128, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::L>>, Prod<<Length<Sum<P::Eta, P::Eta>> as EncodingSize>::EncodedPolynomialSize, P::K>>, Output = Prod<U416, P::K>>,

Source§

type S1Size = <<(<P as ParameterSet>::Eta, <P as ParameterSet>::Eta) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::L>>::EncodedVectorSize

Source§

type S2Size = <<(<P as ParameterSet>::Eta, <P as ParameterSet>::Eta) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::K>>::EncodedVectorSize

Source§

type T0Size = <<(<<UInt<UTerm, B1> as Shl<<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1> as Sub<UInt<UTerm, B1>>>::Output>>::Output as Sub<UInt<UTerm, B1>>>::Output, <UInt<UTerm, B1> as Shl<<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1> as Sub<UInt<UTerm, B1>>>::Output>>::Output) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::K>>::EncodedVectorSize

Source§

type SigningKeySize = <<<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0> as Add<<<(<P as ParameterSet>::Eta, <P as ParameterSet>::Eta) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::L>>::EncodedVectorSize>>::Output as Add<<<(<P as ParameterSet>::Eta, <P as ParameterSet>::Eta) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::K>>::EncodedVectorSize>>::Output as Add<<<(<<UInt<UTerm, B1> as Shl<<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1> as Sub<UInt<UTerm, B1>>>::Output>>::Output as Sub<UInt<UTerm, B1>>>::Output, <UInt<UTerm, B1> as Shl<<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1> as Sub<UInt<UTerm, B1>>>::Output>>::Output) as RangeEncodingSize>::EncodingSize as VectorEncodingSize<<P as ParameterSet>::K>>::EncodedVectorSize>>::Output