pub struct Sign { /* private fields */ }Expand description
Signature subsystem.
Provides access to post-quantum digital signature operations using ML-DSA (formerly Dilithium).
§Example
use quantacore::{initialize, open_first_device, SignAlgorithm};
initialize().unwrap();
let device = open_first_device().unwrap();
let sign = device.sign();
// Generate key pair
let keypair = sign.generate_keypair(SignAlgorithm::MlDsa65).unwrap();
// Sign a message
let message = b"Hello, quantum world!";
let signature = sign.sign(keypair.secret_key(), message, SignAlgorithm::MlDsa65).unwrap();
// Verify the signature
let valid = sign.verify(keypair.public_key(), message, &signature, SignAlgorithm::MlDsa65).unwrap();
assert!(valid);Implementations§
Source§impl Sign
impl Sign
Sourcepub fn generate_keypair(
&self,
algorithm: SignAlgorithm,
) -> Result<SignatureKeyPair>
pub fn generate_keypair( &self, algorithm: SignAlgorithm, ) -> Result<SignatureKeyPair>
Sourcepub fn generate_keypair_44(&self) -> Result<SignatureKeyPair>
pub fn generate_keypair_44(&self) -> Result<SignatureKeyPair>
Generate ML-DSA-44 key pair.
Sourcepub fn generate_keypair_65(&self) -> Result<SignatureKeyPair>
pub fn generate_keypair_65(&self) -> Result<SignatureKeyPair>
Generate ML-DSA-65 key pair.
Sourcepub fn generate_keypair_87(&self) -> Result<SignatureKeyPair>
pub fn generate_keypair_87(&self) -> Result<SignatureKeyPair>
Generate ML-DSA-87 key pair.
Sourcepub fn sign(
&self,
secret_key: &[u8],
message: &[u8],
algorithm: SignAlgorithm,
) -> Result<Vec<u8>>
pub fn sign( &self, secret_key: &[u8], message: &[u8], algorithm: SignAlgorithm, ) -> Result<Vec<u8>>
Sourcepub fn sign_44(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
pub fn sign_44(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
Sign using ML-DSA-44.
Sourcepub fn sign_65(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
pub fn sign_65(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
Sign using ML-DSA-65.
Sourcepub fn sign_87(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
pub fn sign_87(&self, secret_key: &[u8], message: &[u8]) -> Result<Vec<u8>>
Sign using ML-DSA-87.
Sourcepub fn sign_str(
&self,
secret_key: &[u8],
message: &str,
algorithm: SignAlgorithm,
) -> Result<Vec<u8>>
pub fn sign_str( &self, secret_key: &[u8], message: &str, algorithm: SignAlgorithm, ) -> Result<Vec<u8>>
Sign a string message.
Sourcepub fn verify(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
algorithm: SignAlgorithm,
) -> Result<bool>
pub fn verify( &self, public_key: &[u8], message: &[u8], signature: &[u8], algorithm: SignAlgorithm, ) -> Result<bool>
Sourcepub fn verify_44(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
) -> Result<bool>
pub fn verify_44( &self, public_key: &[u8], message: &[u8], signature: &[u8], ) -> Result<bool>
Verify using ML-DSA-44.
Sourcepub fn verify_65(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
) -> Result<bool>
pub fn verify_65( &self, public_key: &[u8], message: &[u8], signature: &[u8], ) -> Result<bool>
Verify using ML-DSA-65.
Sourcepub fn verify_87(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
) -> Result<bool>
pub fn verify_87( &self, public_key: &[u8], message: &[u8], signature: &[u8], ) -> Result<bool>
Verify using ML-DSA-87.
Sourcepub fn verify_str(
&self,
public_key: &[u8],
message: &str,
signature: &[u8],
algorithm: SignAlgorithm,
) -> Result<bool>
pub fn verify_str( &self, public_key: &[u8], message: &str, signature: &[u8], algorithm: SignAlgorithm, ) -> Result<bool>
Verify a string message.
Sourcepub fn verify_or_error(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
algorithm: SignAlgorithm,
) -> Result<()>
pub fn verify_or_error( &self, public_key: &[u8], message: &[u8], signature: &[u8], algorithm: SignAlgorithm, ) -> Result<()>
Verify a signature, returning an error if invalid.
Unlike verify() which returns a boolean, this method returns
an error if verification fails, making it suitable for use with ?.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Sign
impl RefUnwindSafe for Sign
impl Send for Sign
impl Sync for Sign
impl Unpin for Sign
impl UnwindSafe for Sign
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)