Skip to main content

VerifyingKey

Struct VerifyingKey 

Source
pub struct VerifyingKey<P: ParameterSet> { /* private fields */ }
Expand description

An ML-DSA verification key.

Implementations§

Source§

impl<P: MlDsaParams> VerifyingKey<P>

Source

pub fn compute_mu<F: FnOnce(&mut Shake256) -> Result<(), Error>>( &self, Mp: F, ctx: &[u8], ) -> Result<Array<u8, U64>, Error>

Computes µ according to FIPS 204 for use in ML-DSA.Sign and ML-DSA.Verify.

§Errors

Returns Error if the context string is more than 255 bytes long or the given Mp returns one. An oversized context is rejected before Mp is called.

Source

pub fn verify_internal(&self, M: &[u8], sigma: &Signature<P>) -> bool
where P: MlDsaParams,

Implementation of Algorithm 8: ML-DSA.Verify_internal algorithm from FIPS 204.

It does not include the domain separator that distinguishes between the normal and pre-hashed cases, and it does not separate the context string from the rest of the message.

Source

pub fn verify_with_context( &self, M: &[u8], ctx: &[u8], sigma: &Signature<P>, ) -> bool

Implementation of Algorithm 3: ML-DSA.Verify from FIPS 204.

Source

pub fn verify_mu(&self, mu: &Array<u8, U64>, sigma: &Signature<P>) -> bool

Implementation of Algorithm 3: ML-DSA.Verify from FIPS 204 with a pre-computed μ.

Source

pub fn encode(&self) -> EncodedVerifyingKey<P>

Encode the key in a fixed-size byte array.

Implementation of Algorithm 22: pkEncode from FIPS 204.

Source

pub fn decode(enc: &EncodedVerifyingKey<P>) -> Self

Decode the key from an appropriately sized byte array.

Implementation of Algorithm 23: pkDecode from FIPS 204.

Trait Implementations§

Source§

impl<P: MlDsaParams> AsRef<VerifyingKey<P>> for SigningKey<P>

Available on crate feature alloc only.
Source§

fn as_ref(&self) -> &VerifyingKey<P>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<P: Clone + ParameterSet> Clone for VerifyingKey<P>
where P::K: Clone,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<P: Debug + ParameterSet> Debug for VerifyingKey<P>
where P::K: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P: MlDsaParams> DigestVerifier<Shake<136>, Signature<P>> for VerifyingKey<P>

Source§

fn verify_digest<F: Fn(&mut Shake256) -> Result<(), Error>>( &self, f: F, signature: &Signature<P>, ) -> Result<(), Error>

Verify the signature against the received Digest output, by updating it with the message. Read more
Source§

impl<P> EncodePublicKey for VerifyingKey<P>
where P: MlDsaParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate features alloc and pkcs8 only.
Source§

fn to_public_key_der(&self) -> Result<Document>

Serialize a Document containing a SPKI-encoded public key. Read more
Source§

impl<P: MlDsaParams> Hash for VerifyingKey<P>

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<P: MlDsaParams> KeyExport for VerifyingKey<P>

Source§

fn to_bytes(&self) -> Key<Self>

Serialize this key as a byte array.
Source§

impl<P: MlDsaParams> KeyInit for VerifyingKey<P>

Source§

fn new(key: &Key<Self>) -> Self

Create new value from fixed size key.
Source§

fn new_from_slice(key: &[u8]) -> Result<Self, InvalidLength>

Create new value from variable size key. Read more
Source§

fn generate_key<R>(rng: &mut R) -> Array<u8, Self::KeySize>
where R: CryptoRng,

👎Deprecated since 0.2.0:

use the Generate trait impl on Key instead

Available on crate feature rand_core only.
DEPRECATED: generate random key using the provided CryptoRng. Read more
Source§

impl<P: MlDsaParams> KeySizeUser for VerifyingKey<P>

Source§

type KeySize = <P as VerifyingKeyParams>::VerifyingKeySize

Key size in bytes.
Source§

fn key_size() -> usize

Return key size in bytes.
Source§

impl<P: MlDsaParams> MultipartVerifier<Signature<P>> for VerifyingKey<P>

Source§

fn multipart_verify( &self, msg: &[&[u8]], signature: &Signature<P>, ) -> Result<(), Error>

Equivalent of Verifier::verify() but the message is provided in non-contiguous byte slices. Read more
Source§

impl<P: PartialEq + ParameterSet> PartialEq for VerifyingKey<P>
where P::K: PartialEq,

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<P> SignatureAlgorithmIdentifier for VerifyingKey<P>
where P: MlDsaParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate feature pkcs8 only.
Source§

const SIGNATURE_ALGORITHM_IDENTIFIER: AlgorithmIdentifier<Self::Params> = Signature<P>::ALGORITHM_IDENTIFIER

AlgorithmIdentifier for the corresponding signature system.
Source§

type Params = AnyRef<'static>

Algorithm parameters.
Source§

impl<P: PartialEq + ParameterSet> StructuralPartialEq for VerifyingKey<P>
where P::K: PartialEq,

Source§

impl<P> TryFrom<SubjectPublicKeyInfo<AnyRef<'_>, BitStringRef<'_>>> for VerifyingKey<P>
where P: MlDsaParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate feature pkcs8 only.
Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(spki: SubjectPublicKeyInfoRef<'_>) -> Result<Self>

Performs the conversion.
Source§

impl<P: MlDsaParams> Verifier<Signature<P>> for VerifyingKey<P>

Source§

fn verify(&self, msg: &[u8], signature: &Signature<P>) -> Result<(), Error>

Use Self (e.g. a verifying key) to verify that the provided signature is authentic for a given message bytestring. Read more

Auto Trait Implementations§

§

impl<P> Freeze for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: Freeze, MaybeBox<PrecomputedValues<P>>: Freeze,

§

impl<P> RefUnwindSafe for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: RefUnwindSafe, MaybeBox<PrecomputedValues<P>>: RefUnwindSafe,

§

impl<P> Send for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: Send, MaybeBox<PrecomputedValues<P>>: Send,

§

impl<P> Sync for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: Sync, MaybeBox<PrecomputedValues<P>>: Sync,

§

impl<P> Unpin for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: Unpin, MaybeBox<PrecomputedValues<P>>: Unpin,

§

impl<P> UnsafeUnpin for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: UnsafeUnpin, MaybeBox<PrecomputedValues<P>>: UnsafeUnpin,

§

impl<P> UnwindSafe for VerifyingKey<P>
where MaybeBox<Vector<BaseField, <P as ParameterSet>::K>>: UnwindSafe, MaybeBox<PrecomputedValues<P>>: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<S, T> AsyncMultipartVerifier<S> for T
where T: MultipartVerifier<S>,

Source§

async fn multipart_verify_async( &self, msg: &[&[u8]], signature: &S, ) -> Result<(), Error>

Async equivalent of MultipartVerifier::multipart_verify() where the message is provided in non-contiguous byte slices.
Source§

impl<S, T> AsyncVerifier<S> for T
where T: Verifier<S>,

Source§

async fn verify_async(&self, msg: &[u8], signature: &S) -> Result<(), Error>

Asynchronously verify that the provided signature for a given message bytestring is authentic. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DecodePublicKey for T
where T: for<'a> TryFrom<SubjectPublicKeyInfo<AnyRef<'a>, BitStringRef<'a>>, Error = Error>,

Source§

fn from_public_key_der(bytes: &[u8]) -> Result<T, Error>

Deserialize object from ASN.1 DER-encoded [SubjectPublicKeyInfo] (binary format). Read more
Source§

impl<T> DynSignatureAlgorithmIdentifier for T

Source§

fn signature_algorithm_identifier( &self, ) -> Result<AlgorithmIdentifier<Any>, Error>

AlgorithmIdentifier for the corresponding signature system. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.