[][src]Module signatory::ed25519

Ed25519: Schnorr signatures using the twisted Edwards form of Curve25519

Described in RFC 8032: https://tools.ietf.org/html/rfc8032

This module contains two convenience methods for signing and verifying Ed25519 signatures which work with any signer or verifier.

Example (with ed25519-dalek)

extern crate signatory;
extern crate signatory_dalek; // or another Ed25519 provider

use signatory::ed25519;
use signatory_dalek::{Ed25519Signer, Ed25519Verifier};

// Create a private key (a.k.a. a "seed") and use it to generate a signature
let seed = ed25519::Seed::generate();
let signer = Ed25519Signer::from(&seed);
let msg = "How are you? Fine, thank you.";

// Sign a message
let sig = ed25519::sign(&signer, msg.as_bytes()).unwrap();

// Get the public key for the given signer and make a verifier
let pk = ed25519::public_key(&signer).unwrap();
let verifier = Ed25519Verifier::from(&pk);
assert!(ed25519::verify(&verifier, msg.as_bytes(), &sig).is_ok());

Structs

PublicKey

Ed25519 public keys

Seed

Ed25519 seeds: derivation secrets for Ed25519 private scalars/nonce prefixes

Signature

Ed25519 signature.

Constants

PUBLIC_KEY_SIZE

Size of an Ed25519 public key in bytes (256-bits)

SEED_SIZE

Size of the "seed" value for an Ed25519 private key

SIGNATURE_SIZE

Length of an Ed25519 signature

TEST_VECTORS

Ed25519 test vectors (from RFC 8032, converted to Rust bytestring literals)