Module devolutions_crypto::signature
source · Expand description
Module for signing and verifying data.
use std::convert::TryInto;
use devolutions_crypto::signing_key::{generate_signing_keypair, SigningKeyVersion, SigningKeyPair, SigningPublicKey};
use devolutions_crypto::signature::{sign, Signature, SignatureVersion};
let keypair: SigningKeyPair = generate_signing_keypair(SigningKeyVersion::Latest);
let public_key: SigningPublicKey = keypair.get_public_key();
// You can sign data using the keypair.
let signature: Signature = sign(b"this is some test data", &keypair, SignatureVersion::Latest);
// You can then verify if the signature is valid
assert!(signature.verify(b"this is some test data", &public_key));
assert!(!signature.verify(b"this is some wrong test data", &public_key));
// You can serialize the signature to and from a byte array.
let signature_bytes: Vec<u8> = signature.into();
let signature: Signature = signature_bytes.as_slice().try_into().expect("This signature should be valid");
assert!(signature.verify(b"this is some test data", &public_key));
assert!(!signature.verify(b"this is some wrong test data", &public_key));
Re-exports
pub use super::SignatureVersion;
Structs
- A versionned signature. Can be used to validate if some data has been tampered.
Functions
- Sign some data with a keypair so that anyone knowing the public part of it can verify the signature.