Struct Signer
pub struct Signer<'a> { /* private fields */ }
Expand description
A type which computes cryptographic signatures of data.
Implementations§
§impl<'a> Signer<'a>
impl<'a> Signer<'a>
pub fn new<T>(
type_: MessageDigest,
pkey: &'a PKeyRef<T>,
) -> Result<Signer<'a>, ErrorStack>where
T: HasPrivate,
pub fn new<T>(
type_: MessageDigest,
pkey: &'a PKeyRef<T>,
) -> Result<Signer<'a>, ErrorStack>where
T: HasPrivate,
Creates a new Signer
.
This cannot be used with Ed25519 or Ed448 keys. Please refer to
new_without_digest
.
This corresponds to EVP_DigestSignInit
.
pub fn new_without_digest<T>(
pkey: &'a PKeyRef<T>,
) -> Result<Signer<'a>, ErrorStack>where
T: HasPrivate,
pub fn new_without_digest<T>(
pkey: &'a PKeyRef<T>,
) -> Result<Signer<'a>, ErrorStack>where
T: HasPrivate,
Creates a new Signer
without a digest.
This is the only way to create a Verifier
for Ed25519 or Ed448 keys.
It can also be used to create a CMAC.
This corresponds to EVP_DigestSignInit
.
pub fn rsa_padding(&self) -> Result<Padding, ErrorStack>
pub fn rsa_padding(&self) -> Result<Padding, ErrorStack>
Returns the RSA padding mode in use.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_get_rsa_padding
.
pub fn set_rsa_padding(&mut self, padding: Padding) -> Result<(), ErrorStack>
pub fn set_rsa_padding(&mut self, padding: Padding) -> Result<(), ErrorStack>
Sets the RSA padding mode.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_padding
.
pub fn set_rsa_pss_saltlen(
&mut self,
len: RsaPssSaltlen,
) -> Result<(), ErrorStack>
pub fn set_rsa_pss_saltlen( &mut self, len: RsaPssSaltlen, ) -> Result<(), ErrorStack>
Sets the RSA PSS salt length.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_pss_saltlen
.
pub fn set_rsa_mgf1_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
pub fn set_rsa_mgf1_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
Sets the RSA MGF1 algorithm.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_mgf1_md
.
pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack>
pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack>
Feeds more data into the Signer
.
Please note that PureEdDSA (Ed25519 and Ed448 keys) do not support streaming.
Use sign_oneshot
instead.
This corresponds to EVP_DigestUpdate
.
pub fn len(&self) -> Result<usize, ErrorStack>
pub fn len(&self) -> Result<usize, ErrorStack>
Computes an upper bound on the signature length.
The actual signature may be shorter than this value. Check the return value of
sign
to get the exact length.
This corresponds to EVP_DigestSignFinal
.
pub fn sign(&self, buf: &mut [u8]) -> Result<usize, ErrorStack>
pub fn sign(&self, buf: &mut [u8]) -> Result<usize, ErrorStack>
Writes the signature into the provided buffer, returning the number of bytes written.
This method will fail if the buffer is not large enough for the signature. Use the len
method to get an upper bound on the required size.
This corresponds to EVP_DigestSignFinal
.
pub fn sign_to_vec(&self) -> Result<Vec<u8>, ErrorStack>
pub fn sign_to_vec(&self) -> Result<Vec<u8>, ErrorStack>
Returns the signature.
This is a simple convenience wrapper over len
and sign
.
pub fn sign_oneshot(
&mut self,
sig_buf: &mut [u8],
data_buf: &[u8],
) -> Result<usize, ErrorStack>
pub fn sign_oneshot( &mut self, sig_buf: &mut [u8], data_buf: &[u8], ) -> Result<usize, ErrorStack>
Signs the data in data_buf and writes the signature into the buffer sig_buf, returning the number of bytes written.
For PureEdDSA (Ed25519 and Ed448 keys) this is the only way to sign data.
This method will fail if the buffer is not large enough for the signature. Use the len
method to get an upper bound on the required size.
This corresponds to EVP_DigestSign
.
pub fn sign_oneshot_to_vec(
&mut self,
data_buf: &[u8],
) -> Result<Vec<u8>, ErrorStack>
pub fn sign_oneshot_to_vec( &mut self, data_buf: &[u8], ) -> Result<Vec<u8>, ErrorStack>
Returns the signature.
This is a simple convenience wrapper over len
and sign_oneshot
.
Trait Implementations§
§impl Write for Signer<'_>
impl Write for Signer<'_>
§fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
§fn flush(&mut self) -> Result<(), Error>
fn flush(&mut self) -> Result<(), Error>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)impl Send for Signer<'_>
impl Sync for Signer<'_>
Auto Trait Implementations§
impl<'a> Freeze for Signer<'a>
impl<'a> RefUnwindSafe for Signer<'a>
impl<'a> Unpin for Signer<'a>
impl<'a> UnwindSafe for Signer<'a>
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
§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