Struct openssl::sign::Signer

source ·
pub struct Signer<'a> { /* private fields */ }
Expand description

A type which computes cryptographic signatures of data.

Implementations§

source§

impl Signer<'_>

source

pub fn new<'a, T>( type_: MessageDigest, pkey: &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.

OpenSSL documentation at EVP_DigestSignInit.

source

pub fn new_without_digest<'a, T>( pkey: &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.

OpenSSL documentation at EVP_DigestSignInit.

source

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.

source

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.

source

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.

source

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.

source

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.

OpenSSL documentation at EVP_DigestUpdate.

source

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.

OpenSSL documentation at EVP_DigestSignFinal.

source

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.

OpenSSL documentation at EVP_DigestSignFinal.

source

pub fn sign_to_vec(&self) -> Result<Vec<u8>, ErrorStack>

Returns the signature.

This is a simple convenience wrapper over len and sign.

source

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.

OpenSSL documentation at EVP_DigestSign.

source

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§

source§

impl Drop for Signer<'_>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a> Write for Signer<'a>

source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Writes a buffer into this writer, returning how many bytes were written. Read more
source§

fn flush(&mut self) -> Result<()>

Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
1.36.0 · source§

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like write, except that it writes from a slice of buffers. Read more
source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
1.0.0 · source§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more
source§

impl Send for Signer<'_>

source§

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§

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<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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.