pub struct PublicKeyComponents<B>{
pub n: B,
pub e: B,
}Expand description
Low-level API for RSA public keys.
When the public key is in DER-encoded PKCS#1 ASN.1 format, it is
recommended to use aws_lc_rs::signature::verify() with
aws_lc_rs::signature::RSA_PKCS1_*, because aws_lc_rs::signature::verify()
will handle the parsing in that case. Otherwise, this function can be used
to pass in the raw bytes for the public key components as
untrusted::Input arguments.
Fields§
§n: BThe public modulus, encoded in big-endian bytes without leading zeros.
e: BThe public exponent, encoded in big-endian bytes without leading zeros.
Implementations§
Source§impl<B> PublicKeyComponents<B>
impl<B> PublicKeyComponents<B>
fn build_rsa(&self) -> Result<ManagedPointer<*mut EVP_PKEY>, ()>
Sourcepub fn verify(
&self,
params: &RsaParameters,
message: &[u8],
signature: &[u8],
) -> Result<(), Unspecified>
pub fn verify( &self, params: &RsaParameters, message: &[u8], signature: &[u8], ) -> Result<(), Unspecified>
Verifies that signature is a valid signature of message using self
as the public key. params determine what algorithm parameters
(padding, digest algorithm, key length range, etc.) are used in the
verification.
§Errors
error::Unspecified if message was not verified.
Sourcepub fn to_parsed_public_key(
&self,
params: &'static RsaParameters,
) -> Result<ParsedPublicKey, KeyRejected>
pub fn to_parsed_public_key( &self, params: &'static RsaParameters, ) -> Result<ParsedPublicKey, KeyRejected>
Parses these components into a crate::signature::ParsedPublicKey,
which can then be used to verify multiple signatures while amortizing
the cost of key parsing.
params specifies the RSA verification algorithm, such as
crate::signature::RSA_PKCS1_2048_8192_SHA256 or
crate::signature::RSA_PSS_2048_8192_SHA256.
Note that the algorithm’s accepted key-size range is not enforced at
this point; that check is deferred to
crate::signature::ParsedPublicKey::verify_sig, matching the
behavior of crate::signature::ParsedPublicKey::new.
§Errors
KeyRejected if self does not form a valid RSA public key.
§Examples
use aws_lc_rs::signature::{self, RsaPublicKeyComponents};
// Public key components (big-endian, no leading zeros) received
// out-of-band from a peer.
let components = RsaPublicKeyComponents {
n: modulus_bytes(),
e: exponent_bytes(),
};
let parsed =
components.to_parsed_public_key(&signature::RSA_PKCS1_2048_8192_SHA256)?;
parsed.verify_sig(b"hello, world", signature_bytes())?;Trait Implementations§
Source§impl<B> AsDer<PublicKeyX509Der<'static>> for PublicKeyComponents<B>
impl<B> AsDer<PublicKeyX509Der<'static>> for PublicKeyComponents<B>
Source§fn as_der(&self) -> Result<PublicKeyX509Der<'static>, Unspecified>
fn as_der(&self) -> Result<PublicKeyX509Der<'static>, Unspecified>
Source§impl<B> Clone for PublicKeyComponents<B>
impl<B> Clone for PublicKeyComponents<B>
Source§fn clone(&self) -> PublicKeyComponents<B>
fn clone(&self) -> PublicKeyComponents<B>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more