aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/signatures.rs
Commit message (Collapse)AuthorAgeFilesLines
* screen: signatures required as the policy a change came under saystv3 days1-28/+23
| | | | | | | | | | | | | | | | | | | | | Review 3, R1: what a node received was vouched for only while its own document's policy required signatures. A joiner's first sync, and every node's message bringing `required`, went in by the rules alone: a malicious first peer could plant changes under other members' actors at their next seqs, their real ones then failing as duplicates for good. The signatures a message carries are always offered now, and the screen always has them: a change waits for one where the policy at the heads it is judged at requires it (rules::Reads::required, read once per heads), whatever the receiving document holds. Changes written under a policy not requiring signatures wait for none, as on every other node; the check for forged changes runs always. Changes waiting for a signature are judged again whenever signatures come. The test of signatures required now takes the history into an empty document; a new one takes changes written under a policy not requiring them without any.
* access: refused oncetv4 days1-1/+1
| | | | | | | | A refused change is remembered by its hash: offered again it is refused without decoding, judging or logging, so is one built on it, and a peer offering nothing else is answered later each time, up to a minute. Auth plan M6 (re-sending).
* access: signatures requiredtv4 days1-3/+38
| | | | | | | | "signatures": "required": a change counts only once a signature by its committer vouches for it, and waits until then; every node then signs every change it makes. Auth plan M6.
* signatures: on their own (SIGNATURES)tv4 days1-0/+79
Signatures no sync message took go on their own within a second, to each peer not sent them yet (wire version bumped). Auth plan M5.