You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cloudevents/extensions/verifiability.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,12 +33,12 @@ As a general principle, this proposal aims to avoid cryptographic agility in fav
33
33
34
34
We have set the following constraints for the proposed design:
35
35
36
-
**Verifiability must be optional:** This ensures that the additional burden of producing verification material and performing verification only applies when verifiability is desired, which is not always the case.
36
+
**Verifiability MUST be OPTIONAL:** This ensures that the additional burden of producing verification material and performing verification only applies when verifiability is desired, which is not always the case.
37
37
38
-
**The design must be backward compatible:** Backward compatibility ensures that producers can produce verifiable events without any knowledge about whether the consumers have been configured to and are able to verify events.
38
+
**The design MUST be backward compatible:** Backward compatibility ensures that producers can produce verifiable events without any knowledge about whether the consumers have been configured to and are able to verify events.
39
39
Consumers that do not support verification can consumer signed events as if they were unsigned.
40
40
41
-
**The verification material must be contained in the same message as the event:** The design aims to be simple and robust, and so the verification material must be transported and delivered along with the event that it describes—and not in separate events or even through different channels.
41
+
**The verification material MUST be contained in the same message as the event:** The design aims to be simple and robust, and so the verification material MUST be transported and delivered along with the event that it describes—and not in separate events or even through different channels.
42
42
43
43
44
44
## Overview
@@ -53,7 +53,7 @@ The verification material is transported in an [Extension Context Attribute](htt
53
53
* Description: The [DSSE JSON Envelope](https://github.com/secure-systems-lab/dsse/blob/master/envelope.md) that can be used to verify the authenticity and integrity of CloudEvent.
54
54
* Constraints:
55
55
* OPTIONAL
56
-
* If present, must be Base64 encoded
56
+
* If present, MUST be Base64 encoded
57
57
58
58
The verification material, once Base64 decoded, looks something like this:
59
59
@@ -92,7 +92,7 @@ SHA256(
92
92
)
93
93
```
94
94
95
-
It is the digest of the concatenated digest list of the mandatory Context Attributes, the optional Context Attributes as well as the event data itself.
95
+
It is the digest of the concatenated digest list of the mandatory Context Attributes, the OPTIONAL Context Attributes as well as the event data itself.
96
96
97
97
#### Protocol
98
98
@@ -118,7 +118,7 @@ This is how to sign a CloudEvent using DSSE:
118
118
119
119
**Base64 as per [RFC 4648](https://tools.ietf.org/html/rfc4648)*
**The time-offset component of the event time's RFC3339 string must be the literal uppercase character `Z` ("Zulu clock time"). Any other valid time-offset, such as +00:00, is disallowed.*
121
+
**The time-offset component of the event time's RFC3339 string MUST be the literal uppercase character `Z` ("Zulu clock time"). Any other valid time-offset, such as +00:00, is disallowed.*
122
122
**In [CloudEvent’s type system](https://github.com/cloudevents/spec/blob/main/cloudevents/spec.md#type-system) a `String` value has a set of character restrictions equivalent to those in [RFC 5198](https://datatracker.ietf.org/doc/html/rfc5198#section-2) (Net-Unicode). We did not find evidence of any CloudEvent SDK doing any NFC/NFD normalization—should this be common in real world deployments, the protocol above might need to prescribe `UTF8(NFC(...))` where it currently simply prescribes `UTF8(...)`.*
123
123
124
124
### Verification
@@ -148,7 +148,7 @@ Here is how to verify a given CloudEvent:
148
148
1. if the values are not equal, the event has been modified in transit and MUST be discarded
149
149
10. the event is returned as verified successfully.
150
150
151
-
Upon verification of an CloudEvent, implementations MUST return a new event containing only verified data: the Context Attributes (required and optional) plus the event data. Extension Context Attributes MUST NOT be included in the verified event. This ensures clear separation between verified and unverified data. Users handle either a complete unverified event or a verified event with only verified values—never a mixture of both.
151
+
Upon verification of an CloudEvent, implementations MUST return a new event containing only verified data: the Context Attributes (REQUIRED and OPTIONAL) plus the event data. Extension Context Attributes MUST NOT be included in the verified event. This ensures clear separation between verified and unverified data. Users handle either a complete unverified event or a verified event with only verified values—never a mixture of both.
Even though not strictly a valid CloudEvent (optional Context Attributes must be the non empty string when present), CloudEvents SDKs might allow users to set empty strings regardless. This test vector accounts for that possibility and ensures correct implementation of this spec.
322
+
Even though not strictly a valid CloudEvent (OPTIONAL Context Attributes MUST be the non empty string when present), CloudEvents SDKs might allow users to set empty strings regardless. This test vector accounts for that possibility and ensures correct implementation of this spec.
The verification material must be the same as in case 3, because `2020-06-18T17:24:53Z` and `2020-06-18T19:24:53+02:00` are the same moment in time and the verification protocol performs time zone normalization.
374
+
The verification material MUST be the same as in case 3, because `2020-06-18T17:24:53Z` and `2020-06-18T19:24:53+02:00` are the same moment in time and the verification protocol performs time zone normalization.
375
375
376
376
377
377
#### Case 5: Binary data
@@ -426,7 +426,7 @@ Key management for signed CloudEvents involves choosing between local signing an
426
426
427
427
#### Consumer
428
428
429
-
One requirement that both approaches—local signing and remote signing—have in common is, that a consumer must be able to determine not just whether a signature matches a given key, but also that the key from the signature is acceptable.
429
+
One requirement that both approaches—local signing and remote signing—have in common is, that a consumer MUST be able to determine not just whether a signature matches a given key, but also that the key from the signature is acceptable.
430
430
431
431
For example when a consumer receive a signed CloudEvent from their SCM system and inspects the DSSE envelope’s signature, it will need get the key for the given `keyid` and also make sure that this key is in fact belongs to the SCM system, and not to a malicious actor.
0 commit comments