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

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.