huskies: merge 977

This commit is contained in:
dave
2026-05-13 15:07:11 +00:00
parent dcb43c465a
commit f268dca5bb
14 changed files with 59 additions and 758 deletions
+17 -12
View File
@@ -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