Skip to content

Commit 3113b94

Browse files
authored
Merge pull request #45 from shizhMSFT/verify_envelope
Procedures to Verify Envelopes
2 parents cacf247 + d2a3392 commit 3113b94

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

protocol.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,31 @@ To verify:
103103
Either standard or URL-safe base64 encodings are allowed. Signers may use
104104
either, and verifiers **MUST** accept either.
105105
106+
## Multi-signature Verification
107+
108+
Multi-signature enhances the security by allowing multiple signers to sign the
109+
same payload. The resulting signatures are encoded and transmitted, preferably
110+
using the recommended [JSON envelope](envelope.md).
111+
112+
A `(t, n)`-ENVELOPE is valid if the enclosed signatures pass the verification
113+
against at least `t` of `n` unique trusted public keys where `t` is
114+
application-specific.
115+
116+
To verify a `(t, n)`-ENVELOPE:
117+
118+
- Receive and decode SERIALIZED_BODY, PAYLOAD_TYPE, SIGNATURES from ENVELOPE.
119+
Reject if decoding fails.
120+
- For each (SIGNATURE, KEYID) in SIGNATURES,
121+
- Optionally, filter acceptable public keys by KEYID.
122+
- Verify SIGNATURE against PAE(UTF8(PAYLOAD_TYPE), SERIALIZED_BODY). Skip
123+
over if the verification fails.
124+
- Add the accepted public key to the set ACCEPTED_KEYS.
125+
- Break if the cardinality of ACCEPTED_KEYS is greater or equal to `t`.
126+
- Reject if the cardinality of ACCEPTED_KEYS is less than `t`.
127+
- Reject if PAYLOAD_TYPE is not a supported type.
128+
- Parse SERIALIZED_BODY according to PAYLOAD_TYPE. Reject if the parsing
129+
fails.
130+
106131
## Test Vectors
107132
108133
See [reference implementation](implementation/signing_spec.py). Here is an

0 commit comments

Comments
 (0)