huskies: merge 977
This commit is contained in:
@@ -1,21 +1,25 @@
|
||||
//! Ed25519 keypair utilities and type aliases for node identity and signing.
|
||||
//!
|
||||
//! Provides the [`AuthorId`] and [`SignedDigest`] type aliases, a SHA-256 helper,
|
||||
//! and convenience wrappers around the `fastcrypto` Ed25519 primitives used
|
||||
//! and convenience wrappers around the `ed25519-dalek` Ed25519 primitives used
|
||||
//! throughout the CRDT codebase.
|
||||
|
||||
use fastcrypto::traits::VerifyingKey;
|
||||
pub use fastcrypto::{
|
||||
ed25519::{
|
||||
Ed25519KeyPair, Ed25519PublicKey, Ed25519Signature, ED25519_PUBLIC_KEY_LENGTH,
|
||||
ED25519_SIGNATURE_LENGTH,
|
||||
},
|
||||
traits::{KeyPair, Signer, ToFromBytes},
|
||||
// Verifier,
|
||||
};
|
||||
use rand::RngCore as _;
|
||||
use ed25519_dalek::Signer as _;
|
||||
use ed25519_dalek::Verifier as _;
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
/// Ed25519 signing key (private + public pair).
|
||||
pub type Ed25519KeyPair = ed25519_dalek::SigningKey;
|
||||
/// Ed25519 verifying (public) key.
|
||||
pub type Ed25519PublicKey = ed25519_dalek::VerifyingKey;
|
||||
/// Ed25519 signature.
|
||||
pub type Ed25519Signature = ed25519_dalek::Signature;
|
||||
|
||||
/// Length of an Ed25519 public key in bytes.
|
||||
pub const ED25519_PUBLIC_KEY_LENGTH: usize = 32;
|
||||
/// Length of an Ed25519 signature in bytes.
|
||||
pub const ED25519_SIGNATURE_LENGTH: usize = 64;
|
||||
|
||||
/// Represents the ID of a unique node. An Ed25519 public key
|
||||
pub type AuthorId = [u8; ED25519_PUBLIC_KEY_LENGTH];
|
||||
|
||||
@@ -49,9 +53,10 @@ pub fn sha256(input: String) -> [u8; 32] {
|
||||
|
||||
/// Generate a random Ed25519 keypair from OS rng
|
||||
pub fn make_keypair() -> Ed25519KeyPair {
|
||||
use rand::RngCore as _;
|
||||
let mut seed = [0u8; 32];
|
||||
rand::rng().fill_bytes(&mut seed);
|
||||
Ed25519KeyPair::from_bytes(&seed).expect("32-byte seed always yields a valid Ed25519 keypair")
|
||||
Ed25519KeyPair::from_bytes(&seed)
|
||||
}
|
||||
|
||||
/// Sign a byte array
|
||||
|
||||
Reference in New Issue
Block a user