Include `rad/id` in signed refs
We ensure that a rad/id ref is included in the signed refs file under
rad/sigrefs. This prevents a certain kind of “grafting” attack where
signed refs can be copied between repositories.
When verifying signed refs, we ensure that the ref is present and points to an identity branch that matches the repository identity containing the signed refs.
23 files changed
+415
-132
46c2637f
→
989edacd
modified radicle-cli/examples/rad-clean.md
@@ -18,8 +18,8 @@ Let's also inspect what remotes are in the repository:
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -34,7 +34,7 @@ Inspecting the remotes again, we see that Bob is now gone:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-clone-all.md
@@ -36,12 +36,14 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -75,17 +77,20 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
modified radicle-cli/examples/rad-fork.md
@@ -14,6 +14,7 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -39,12 +40,14 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-id-multi-delegate.md
@@ -4,7 +4,7 @@ $ rad id update --repo rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji --title "Add Bob" --des
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-id-threshold-soft-fork.md
@@ -29,6 +29,7 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -36,6 +37,7 @@ z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-id-threshold.md
@@ -141,6 +141,7 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -148,7 +149,7 @@ Similarly, she still does not have Bob's `rad/sigrefs`:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -195,6 +196,6 @@ $ rad sync -f
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
modified radicle-cli/examples/rad-inspect.md
@@ -26,6 +26,7 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -33,7 +34,7 @@ And sigrefs:
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-merge-via-push.md
@@ -45,6 +45,7 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -115,5 +116,6 @@ z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
|
|
|
|
|
| + | |
|
|
|
modified radicle-cli/examples/rad-sync.md
@@ -15,9 +15,9 @@ $ rad sync status --sort-by alias
|
|
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -37,9 +37,9 @@ $ rad sync status --sort-by alias
|
|
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/test/peer.rs
@@ -13,7 +13,7 @@ use radicle::node::Database;
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -353,9 +353,15 @@ where
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-node/src/tests.rs
@@ -877,13 +877,15 @@ fn test_refs_announcement_followed() {
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1544,9 +1546,10 @@ fn test_queued_fetch_from_ann_same_rid() {
|
|
|
|
|
|
| - | |
| + | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-node/src/worker/fetch.rs
@@ -210,6 +210,11 @@ fn notify(
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle/src/cob/identity.rs
@@ -86,7 +86,7 @@ pub enum ApplyError {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/cob/patch.rs
@@ -341,7 +341,7 @@ impl<'a, R: WriteRepository> Merged<'a, R> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/cob/store.rs
@@ -91,7 +91,7 @@ pub enum Error {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -181,7 +181,9 @@ where
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -220,8 +222,14 @@ where
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -234,7 +242,9 @@ where
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle/src/git.rs
@@ -184,7 +184,7 @@ pub mod refs {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -192,6 +192,14 @@ pub mod refs {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -250,6 +258,14 @@ pub mod refs {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -493,6 +509,21 @@ pub fn commit<'a>(
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle/src/rad.rs
@@ -1,4 +1,5 @@
|
|
| + | |
|
|
|
|
|
@@ -54,8 +55,7 @@ pub fn init<G: Signer, S: WriteStorage>(
|
|
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
|
@@ -70,10 +70,10 @@ pub fn init<G: Signer, S: WriteStorage>(
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -91,15 +91,17 @@ pub fn init<G: Signer, S: WriteStorage>(
|
|
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -110,10 +112,11 @@ where
|
|
|
|
|
|
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| + | |
|
|
|
|
|
modified radicle/src/storage.rs
@@ -355,8 +355,8 @@ impl Remote<Unverified> {
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -628,11 +628,24 @@ pub trait WriteRepository: ReadRepository + SignRepository {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -644,7 +657,7 @@ pub trait WriteRepository: ReadRepository + SignRepository {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/storage/git.rs
@@ -20,15 +20,15 @@ use crate::node::SyncedAt;
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -773,9 +773,8 @@ impl ReadRepository for Repository {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -783,14 +782,8 @@ impl ReadRepository for Repository {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -857,6 +850,19 @@ impl WriteRepository for Repository {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -870,20 +876,24 @@ impl WriteRepository for Repository {
|
|
|
|
|
|
| - | |
| + | |
|
|
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -946,7 +956,6 @@ mod tests {
|
|
|
|
|
|
| - | |
|
|
|
|
|
@@ -999,7 +1008,13 @@ mod tests {
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1009,28 +1024,26 @@ mod tests {
|
|
|
|
|
|
| - | |
|
|
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| + | |
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle/src/storage/git/cob.rs
@@ -24,7 +24,7 @@ use crate::{
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -226,7 +226,7 @@ impl<'a, R: storage::ReadRepository> SignRepository for DraftStore<'a, R> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/storage/refs.rs
@@ -16,7 +16,7 @@ use crate::git::ext as git_ext;
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -44,6 +44,12 @@ pub enum Error {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -72,27 +78,17 @@ pub struct Refs(BTreeMap<git::RefString, Oid>);
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -100,12 +96,7 @@ impl Refs {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
|
|
|
|
|
@@ -216,17 +207,17 @@ pub struct SignedRefs<V> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -237,13 +228,36 @@ impl SignedRefs<Unverified> {
|
|
|
|
|
|
| - | |
| + | |
|
|
| + | |
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -264,20 +278,9 @@ impl SignedRefs<Verified> {
|
|
|
|
|
|
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
|
|
|
|
|
@@ -290,7 +293,7 @@ impl SignedRefs<Verified> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -460,8 +463,13 @@ pub mod canonical {
|
|
|
|
|
|
| - | |
| + | |
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -470,4 +478,172 @@ mod tests {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
modified radicle/src/test/arbitrary.rs
@@ -71,12 +71,13 @@ pub fn vec<T: Eq + Arbitrary>(size: usize) -> Vec<T> {
|
|
|
|
|
|
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -90,9 +91,9 @@ pub fn gen<T: Arbitrary>(size: usize) -> T {
|
|
|
|
|
|
| - | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
@@ -181,10 +182,10 @@ impl Arbitrary for SignedRefs<Unverified> {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -243,13 +244,13 @@ impl Arbitrary for MockRepository {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/test/storage.rs
@@ -300,19 +300,19 @@ impl ReadRepository for MockRepository {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -333,6 +333,14 @@ impl WriteRepository for MockRepository {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -342,7 +350,7 @@ impl SignRepository for MockRepository {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|