@@ -32,7 +32,7 @@ License: CC-BY-4.0
3232
3333## Abstract
3434
35- Definition of a [ URI] which allows for RBAC keys used for different purposes to be easily and
35+ Definition of a [ URI] , which allows for RBAC keys used for different purposes to be easily and
3636unambiguously identified.
3737
3838## Motivation: why is this CIP necessary?
@@ -42,7 +42,7 @@ or which Key from a RBAC registration was used to sign data.
4242RBAC defines a universal keychain of different keys that can be used for different purposes.
4343They can be used not only for Signatures, but also Encryption.
4444
45- Sometimes all that is required is to identify the individual key chain .
45+ Sometimes all that is required is to identify the individual keychain .
4646Other times a specific key on the chain needs to be referenced.
4747
4848Therefore, there needs to be an unambiguous and easy to lookup identifier to signify which keychain,
@@ -54,19 +54,21 @@ This document defines a [URI] scheme to unambiguously define a keychain or a spe
5454
5555### URI
5656
57- The Catalyst RBAC Id is formatted using a [ Universal Resource Identifier] .
57+ The Catalyst RBAC ID is formatted using a [ Universal Resource Identifier] .
5858Refer to [ RFC3986] for the specification of the URI format.
5959
6060### ` scheme `
6161
62- The [ scheme] ( https://datatracker.ietf.org/doc/html/rfc3986#section-3.1 ) ** MUST** be ` id.catalyst ` ;
62+ The [ scheme] ( https://datatracker.ietf.org/doc/html/rfc3986#section-3.1 ) ** MUST** be ` id.catalyst ` .
63+
64+ When used as a Catalyst ID, where only catalyst IDs would be used, the scheme can be omitted.
6365
6466### ` authority `
6567
6668The [ authority] ( https://datatracker.ietf.org/doc/html/rfc3986#section-3.2 ) references the blockchain or network
6769the key was registered within.
6870
69- It is perfectly valid for a Kid to reference a different network than the place where the Id or Key is used.
71+ It is perfectly valid for an ID Uri to reference a different network than the place where the ID or Key is used.
7072For example, a ` cardano ` ID can be used to post documents to ` IPFS ` .
7173Its purpose is to define WHERE the key was registered, and nothing more.
7274
@@ -100,21 +102,21 @@ capable of storing catalyst RBAC registration keychains.
100102#### ` authority ` - ` userinfo `
101103
102104The [ userinfo] is used to hold a user defined readable name that can be attached to the keychain.
103- It may contain an optional ` nonce ` which is separated from the users name by a ` : ` and replaces a
105+ It may contain an optional ` nonce ` which is separated from the user's name by a ` : ` and replaces a
104106traditional password used for HTTP basic authentication.
105107
106108Because the name is not unique, and is provided by the user, it is informational only.
107109A URI is identical, provided the hostname and path are the same, the [ userinfo] does not play
108110a part in validating or finding the catalyst keychain being referenced.
109111
110112The ` nonce ` part contained in the ` password ` component of the username * MUST* be an integer,
111- and it is the number of seconds since 1970 UTC, when the nonce was generated.
113+ and it is the number of seconds since 1970 UTC, when the Catalyst ID URI was generated.
112114
113115Applications which use the ` nonce ` will define its use, anything that does not use the ` nonce ` will ignore it.
114116
115117##### Example ` userinfo ` with a ` hostname `
116118
117- * ` anne@cardano ` - username ` anne ` no nonce.
119+ * ` anne@cardano ` - username ` anne ` no nonce.
118120* ` blake:1737101079@midnight ` - username ` blake ` with nonce 1737101079.
119121* ` :173710179#ethereum ` - no username with nonce 173710179.
120122
@@ -157,36 +159,38 @@ The first implementation will be Catalyst Voices.
157159 * Role 0 - Rotation 0.
158160 * ` username ` - undefined.
159161 * ` nonce ` - undefined.
160- In this example, it is exactly the same as the ` <key> ` .
162+ * In this example, it is identical to ` <key>/0/0 ` or ` <key>/0 ` .
161163* ` id.catalyst://cardano/<key>/0 `
162164 * A Signing key registered on the Cardano Main network.
163165 * Role 0 - Rotation 0.
164166 * ` username ` - undefined.
165167 * ` nonce ` - undefined.
168+ * In this example, it is identical to ` <key>/0/0 ` or ` <key> ` .
166169* ` id.catalyst://gary@cardano/<key>/0/0 `
167170 * A Signing key registered on the Cardano Main network.
168171 * Role 0 - Rotation 0.
169172 * ` username ` - ` gary ` .
170173 * ` nonce ` - undefined.
174+ * In this example, it is identical to ` <key> ` or ` <key>/0 ` .
171175* ` id.catalyst://faith@preprod@cardano/<key>/7/3 `
172176 * A Signing key registered on the Cardano pre-production network.
173177 * Role 7 - Rotation 3.
174178 * ` username ` - ` faith `
175179 * ` nonce ` - undefined.
176- The Key for Role 7, and its third published rotation
180+ * The Key for Role 7, and its third published rotation
177181 (i.e., the fourth key published, the first is the initial key, plus 3 rotations following it).
178182* ` id.catalyst://faith:173710179@preprod@cardano/<key>/2/0#encrypt `
179183 * A Public Encryption key registered on the Cardano pre-production network.
180184 * Role 2 - Rotation 0.
181185 * ` username ` - ` faith `
182186 * ` nonce ` - 173710179.
183- The initially published Public Encryption Key for Role 2.
187+ * The initially published Public Encryption Key for Role 2.
184188* ` kid.catalyst-rbac://:173710179@midnight/<key>/0/1 `
185189 * A Signing key registered on the Midnight Blockchain Main network
186190 * Role 0 - Rotation 1.
187191 * ` username ` - undefined.
188192 * ` nonce ` - 173710179.
189- In this example, it is NOT the same as the ` <key> ` , as it identifies the first rotation after ` <key> ` .
193+ * In this example, it is NOT the same as the ` <key> ` , as it identifies the first rotation after ` <key> ` .
190194* ` kid.catalyst-rbac://midnight/<key>/2/1#encrypt `
191195 * A public encryption key registered on the Midnight Blockchain Main network.
192196 * Role 2 - Rotation 1.
0 commit comments