Module diem_sdk::crypto::ed25519[][src]

Expand description

This module provides an API for the PureEdDSA signature scheme over the ed25519 twisted Edwards curve as defined in RFC8032.

Signature verification also checks and rejects non-canonical signatures.

Examples

use diem_crypto_derive::{CryptoHasher, BCSCryptoHash};
use diem_crypto::{
    ed25519::*,
    traits::{Signature, SigningKey, Uniform},
};
use rand::{rngs::StdRng, SeedableRng};
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, CryptoHasher, BCSCryptoHash)]
pub struct TestCryptoDocTest(String);
let message = TestCryptoDocTest("Test message".to_string());

let mut rng: StdRng = SeedableRng::from_seed([0; 32]);
let private_key = Ed25519PrivateKey::generate(&mut rng);
let public_key: Ed25519PublicKey = (&private_key).into();
let signature = private_key.sign(&message);
assert!(signature.verify(&message, &public_key).is_ok());

Note: The above example generates a private key using a private function intended only for testing purposes. Production code should find an alternate means for secure key generation.

Modules

A Rust implementation of ed25519 key generation, signing, and verification.

Structs

An Ed25519 private key

An Ed25519 public key

An Ed25519 signature

Constants

The length of the Ed25519PrivateKey

The length of the Ed25519PublicKey

The length of the Ed25519Signature

Functions

Produces a uniformly random ed25519 keypair from a seed