Struct ParsedPublicKey
pub struct ParsedPublicKey { /* private fields */ }Expand description
A parsed public key for signature verification.
A ParsedPublicKey can be created in two ways:
- Directly from public key bytes using
ParsedPublicKey::new - By parsing an
UnparsedPublicKeyusingUnparsedPublicKey::parse
This pre-validates the public key format and stores the parsed key material, allowing for more efficient signature verification operations compared to parsing the key on each verification.
See the crate::signature module-level documentation for examples.
Implementations§
§impl ParsedPublicKey
impl ParsedPublicKey
pub fn new<B>(
algorithm: &'static dyn VerificationAlgorithm,
bytes: B,
) -> Result<ParsedPublicKey, KeyRejected>
pub fn new<B>( algorithm: &'static dyn VerificationAlgorithm, bytes: B, ) -> Result<ParsedPublicKey, KeyRejected>
Creates a new ParsedPublicKey directly from public key bytes.
This method validates the public key format and creates a ParsedPublicKey
that can be used for efficient signature verification operations.
§Errors
KeyRejected if the public key bytes are malformed or incompatible
with the specified algorithm.
§Examples
use aws_lc_rs::signature::{self, ParsedPublicKey};
let parsed_key = ParsedPublicKey::new(&signature::ED25519, include_bytes!("../tests/data/ed25519_test_public_key.bin"))?;
let signature = [
0xED, 0xDB, 0x67, 0xE9, 0xF7, 0x8C, 0x9A, 0x0, 0xFD, 0xEE, 0x2D, 0x22, 0x21, 0xA3, 0x9A,
0x8A, 0x79, 0xF2, 0x53, 0x88, 0x78, 0xF0, 0xA0, 0x1, 0x80, 0xA, 0x49, 0xA4, 0x17, 0x88,
0xAB, 0x44, 0x4B, 0xD2, 0x58, 0xB0, 0x3B, 0x51, 0x8A, 0x1B, 0x61, 0x24, 0x52, 0x78, 0x48,
0x58, 0x40, 0x5, 0xB5, 0x45, 0x22, 0xB6, 0x40, 0xBD, 0x14, 0x47, 0xB1, 0xF0, 0xDC, 0x13,
0xB3, 0xE9, 0xD0, 0x6,
];
assert!(parsed_key.verify_sig(b"hello world!", &signature).is_ok());
assert!(parsed_key.verify_sig(b"hello world.", &signature).is_err());pub fn algorithm(&self) -> &'static dyn VerificationAlgorithm
pub fn algorithm(&self) -> &'static dyn VerificationAlgorithm
Returns the algorithm used by this public key.
pub fn verify_sig(
&self,
message: &[u8],
signature: &[u8],
) -> Result<(), Unspecified>
pub fn verify_sig( &self, message: &[u8], signature: &[u8], ) -> Result<(), Unspecified>
Uses the public key to verify that signature is a valid signature of
message.
This method is more efficient than UnparsedPublicKey::verify when
performing multiple signature verifications with the same public key,
as the key parsing overhead is avoided.
See the crate::signature module-level documentation for examples.
§Errors
error::Unspecified if the signature is invalid or verification fails.
pub fn verify_digest_sig(
&self,
digest: &Digest,
signature: &[u8],
) -> Result<(), Unspecified>
pub fn verify_digest_sig( &self, digest: &Digest, signature: &[u8], ) -> Result<(), Unspecified>
Uses the public key to verify that signature is a valid signature of
digest.
This method is more efficient than UnparsedPublicKey::verify_digest when
performing multiple signature verifications with the same public key,
as the key parsing overhead is avoided.
See the crate::signature module-level documentation for examples.
§Errors
error::Unspecified if the signature is invalid or verification fails.
Trait Implementations§
§impl AsDer<PublicKeyX509Der<'static>> for ParsedPublicKey
impl AsDer<PublicKeyX509Der<'static>> for ParsedPublicKey
§fn as_der(&self) -> Result<PublicKeyX509Der<'static>, Unspecified>
fn as_der(&self) -> Result<PublicKeyX509Der<'static>, Unspecified>
§impl AsRef<[u8]> for ParsedPublicKey
Provides the original bytes from which this key was parsed
impl AsRef<[u8]> for ParsedPublicKey
Provides the original bytes from which this key was parsed
§impl Clone for ParsedPublicKey
impl Clone for ParsedPublicKey
§fn clone(&self) -> ParsedPublicKey
fn clone(&self) -> ParsedPublicKey
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ParsedPublicKey
impl Debug for ParsedPublicKey
impl Send for ParsedPublicKey
impl Sync for ParsedPublicKey
Auto Trait Implementations§
impl Freeze for ParsedPublicKey
impl !RefUnwindSafe for ParsedPublicKey
impl Unpin for ParsedPublicKey
impl !UnwindSafe for ParsedPublicKey
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
Source§impl<T> ToHex for T
impl<T> ToHex for T
Source§fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
self into the result. Lower case
letters are used (e.g. f9b4ca)Source§fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
self into the result. Upper case
letters are used (e.g. F9B4CA)