Skip to content

Commit 40fbec3

Browse files
authored
Merge pull request #539 from zigbee-alliance/feature/524-update-noc-root-cert-design
Update the NOC root certificate design in accordance with the latest feedback
2 parents 4f1f627 + 3df839d commit 40fbec3

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

docs/design/noc-root-cert-design.md

+25-12
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ To distinguesh NOC root certificates from others, an `isNOC` boolean field will
2121
This transaction adds a NOC root certificate owned by the Vendor.
2222

2323
- Who can send: Vendor account
24-
- `vid` field in the transaction (`VendorID`) must be equal to the Vendor account's VID
2524
- Validation:
2625
- The provided certificate must be a root certificate:
2726
- `Issuer` == `Subject`
@@ -33,7 +32,6 @@ This transaction adds a NOC root certificate owned by the Vendor.
3332
- The signature (self-signature) and expiration date must be valid.
3433
- Parameters:
3534
- cert: `string` - The NOC Root Certificate, encoded in X.509v3 PEM format. Can be a PEM string or a file path.
36-
- vid: `uint16` - Vendor ID (positive non-zero)
3735
- In State:
3836
- `pki/ApprovedCertificates/value/<Subject>/<SubjectKeyID>`
3937
- `pki/ApprovedCertificatesBySubject/value/<Subject>`
@@ -52,24 +50,35 @@ Revoked NOC root certificates can be re-added using the `ADD_NOC_X509_ROOT_CERTI
5250
- Parameters:
5351
- subject: `string` - Base64 encoded subject DER sequence bytes of the certificate.
5452
- subject_key_id: `string` - Certificate's `Subject Key Id` in hex string format, e.g., `5A:88:0E:6C:36:53:D0:7F:B0:89:71:A3:F4:73:79:09:30:E6:2B:DB`.
53+
- serial_number: `optional(string)` - Certificate's serial number. If not provided, the transaction will revoke all certificates that match the given `subject` and `subject_key_id` combination.
54+
- info: `optional(string)` - Information/notes for the revocation.
55+
- time: `optional(int64)` - Revocation time (number of nanoseconds elapsed since January 1, 1970 UTC). CLI uses the current time for that field.
56+
- revokeChild: `optional(bool)` - If true, then all certificates in the chain signed by the revoked certificate (intermediate, leaf) are revoked as well. If false, only the current root cert is revoked (default: false).
5557
- In State:
5658
- `pki/RevokedCertificates/value/<subject>/<subject_key_id>`
59+
- `pki/RevokedNOCRootCertificates/value/<subject>/<subject_key_id>`
5760
- CLI Command:
58-
- `dcld tx pki revoke-noc-x509-root-cert --subject=<base64 string> --subject-key-id=<hex string> --from=<account>`
61+
- `dcld tx pki revoke-noc-x509-root-cert --subject=<base64 string> --subject-key-id=<hex string> --serial-number=<string> --info=<string> --time=<int64> --revokeChild=<bool> --from=<account>`
5962

6063
### 3. REMOVE_NOC_X509_ROOT_CERTIFICATE
6164
This transaction completely removes a NOC root certificate owned by the Vendor.
6265
Removed NOC root certificates can be re-added using the `ADD_NOC_X509_ROOT_CERTIFICATE` transaction.
6366

67+
Revoked certificates that match the specified parameters will also be removed.
68+
69+
The certificates in the chain signed by the removed certificate (intermediate, leaf) will not be removed.
70+
6471
- Who can send: Vendor account
6572
- Vid field associated with the corresponding NOC root certificate on the ledger must be equal to the Vendor account's VID.
6673
- Validation:
6774
- A NOC root certificate with the provided `subject` and `subject_key_id` must exist in the ledger.
6875
- Parameters:
6976
- subject: `string` - Base64 encoded subject DER sequence bytes of the certificate.
7077
- subject_key_id: `string` - Certificate's `Subject Key Id` in hex string format, e.g., `5A:88:0E:6C:36:53:D0:7F:B0:89:71:A3:F4:73:79:09:30:E6:2B:DB`.
78+
- serial_number: `optional(string)` - Certificate's serial number. If not provided, the transaction will remove all certificates that match the given `subject` and `subject_key_id` combination.
79+
- info: `optional(string)` - Information/notes for the removal.
7180
- CLI Command:
72-
- `dcld tx pki remove-noc-x509-root-cert --subject=<base64 string> --subject-key-id=<hex string> --from=<account>`
81+
- `dcld tx pki remove-noc-x509-root-cert --subject=<base64 string> --subject-key-id=<hex string> --serial-number=<string> --info=<string> --from=<account>`
7382

7483
## Query
7584

@@ -97,14 +106,18 @@ Retrieve a list of all of NOC root certificates
97106
- Parameters:
98107
- Common pagination parameters
99108
- CLI Command:
100-
- `dcld query pki get_all_noc_x509_root_certs
109+
- `dcld query pki get_all_noc_x509_root_certs`
101110
- REST API:
102111
- GET `/dcl/pki/noc-root-certificates`
103112

104-
## Questions
105-
- Should a vendor be able to add multiple NOC root certificates with the same Subject and Subject Key Identifier combinations? If so, the vendor may want to remove a specific certificate from the list of certificates with the same Subject and Subject Key Identifier combinations.
106-
- Should the VID parameter be added to the `ADD_NOC_X509_ROOT_CERTIFICATE` transaction?
107-
- How should NOC root certificate be renewed with a new one?
108-
- Should the `REMOVE_NOC_X509_ROOT_CERTIFICATE` transaction also delete revoked certificates?
109-
- Should a user be able to retrieve all revoked NOC root certificates using the `GET_ALL_REVOKED_X509_NOC_ROOT_CERTS` transaction?
110-
- In the `Joint Fabric Proposal` document, the concept of a `Trust Quotient (TQ)` is introduced as a future consideration. This concept requires adding `Add Trust` and `Revoke Trust` requests for NOCs in the DCL. Should the implementation of these requests be included in the scope of the current task?
113+
### GET_ALL_REVOKED_NOC_X509_ROOT_CERTS
114+
115+
Gets all revoked NOC root certificates.
116+
117+
- Who can send: Any account
118+
- Parameters:
119+
- Common pagination parameters
120+
- CLI command:
121+
- `dcld query pki all-revoked-noc-x509-root-certs`
122+
- REST API:
123+
- GET `/dcl/pki/revoked-noc-root-certificates`

0 commit comments

Comments
 (0)