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
+2 -3
View File
@@ -2,8 +2,7 @@
use std::collections::{HashMap, HashSet};
use fastcrypto::ed25519::Ed25519KeyPair;
use fastcrypto::traits::KeyPair;
use crate::keypair::Ed25519KeyPair;
use crate::debug::DebugView;
use crate::keypair::SignedDigest;
@@ -36,7 +35,7 @@ impl<T: CrdtNode + DebugView> BaseCrdt<T> {
/// routing messages to the right BaseCRDT. Usually you should just make a single
/// struct that contains all the state you need.
pub fn new(keypair: &Ed25519KeyPair) -> Self {
let id = keypair.public().0.to_bytes();
let id = keypair.verifying_key().to_bytes();
Self {
id,
doc: T::new(id, vec![]),
@@ -1,10 +1,7 @@
//! [`SignedOp`], [`OpState`], and the causal queue capacity constant.
use fastcrypto::traits::VerifyingKey;
use fastcrypto::{
ed25519::{Ed25519KeyPair, Ed25519PublicKey, Ed25519Signature},
traits::{KeyPair, ToFromBytes},
};
use crate::keypair::{Ed25519KeyPair, Ed25519PublicKey, Ed25519Signature};
use ed25519_dalek::Verifier as _;
use serde::{Deserialize, Serialize};
use serde_with::{serde_as, Bytes};
@@ -107,16 +104,15 @@ impl SignedOp {
/// Sign this digest with the given keypair. Shouldn't need to be called manually,
/// just use [`SignedOp::from_op`] instead
fn sign_digest(&mut self, keypair: &Ed25519KeyPair) {
self.signed_digest = sign(keypair, &self.digest()).sig.to_bytes()
self.signed_digest = sign(keypair, &self.digest()).to_bytes()
}
/// Ensure digest was actually signed by the author it claims to be signed by
pub fn is_valid_digest(&self) -> bool {
let digest = Ed25519Signature::from_bytes(&self.signed_digest);
let pubkey = Ed25519PublicKey::from_bytes(&self.author());
match (digest, pubkey) {
(Ok(digest), Ok(pubkey)) => pubkey.verify(&self.digest(), &digest).is_ok(),
(_, _) => false,
match Ed25519PublicKey::from_bytes(&self.author()) {
Ok(pubkey) => pubkey.verify(&self.digest(), &digest).is_ok(),
Err(_) => false,
}
}
@@ -126,7 +122,7 @@ impl SignedOp {
keypair: &Ed25519KeyPair,
depends_on: Vec<SignedDigest>,
) -> Self {
let author = keypair.public().0.to_bytes();
let author = keypair.verifying_key().to_bytes();
let mut new = Self {
inner: Op {
content: value.content.map(|c| c.view()),