Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
radicle: sign blob hash instead of content
Fintan Halpenny committed 3 years ago
commit 540c56cac6c0753d5d8a9057fc7d3596b172807a
parent 99c1e2ac52ed89c5441bb9bfd63f840a432380fa
2 files changed +4 -4
modified radicle/src/identity/doc.rs
@@ -208,8 +208,8 @@ impl Doc<Verified> {
    }

    pub fn sign<G: crypto::Signer>(&self, signer: &G) -> Result<(git::Oid, Signature), DocError> {
-
        let (oid, bytes) = self.encode()?;
-
        let sig = signer.sign(&bytes);
+
        let (oid, _) = self.encode()?;
+
        let sig = signer.sign(oid.as_bytes());

        Ok((oid, sig))
    }
@@ -224,7 +224,7 @@ impl Doc<Verified> {
        let sigs = trailers::parse_signatures(msg)?;

        for (pk, sig) in &sigs {
-
            if let Err(err) = pk.verify(blob.content(), sig) {
+
            if let Err(err) = pk.verify(blob.id().as_bytes(), sig) {
                return Err(DocError::Signature(*pk, err));
            }
        }
modified radicle/src/storage/git.rs
@@ -245,7 +245,7 @@ impl Repository {
        let oid = Doc::init(
            doc.as_slice(),
            remote,
-
            &[(signer.public_key(), signer.sign(&doc))],
+
            &[(signer.public_key(), signer.sign(doc_oid.as_bytes()))],
            repo.raw(),
        )?;