Skip to content

Commit b98e578

Browse files
authored
Merge pull request #542 from zigbee-alliance/#535-add-remove-non-root-cert-txn
#535 Add transaction command to remove non-root certificates
2 parents 1be8186 + 3ccc231 commit b98e578

File tree

24 files changed

+1827
-122
lines changed

24 files changed

+1827
-122
lines changed

docs/transactions.md

+18
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,24 @@ Root certificates can not be revoked this way, use `PROPOSE_X509_CERT_REVOC` an
951951
- CLI command:
952952
- `dcld tx pki revoke-x509-cert --subject=<base64 string> --subject-key-id=<hex string> --from=<account>`
953953

954+
### REMOVE_X509_CERT
955+
956+
**Status: Implemented**
957+
958+
Removes the given X509 certificate (either intermediate or leaf) from approved and revoked certificates list.
959+
960+
Only the owner (sender) can remove the certificate.
961+
Root certificates can not be removed this way.
962+
963+
- Parameters:
964+
- subject: `string` - certificates's `Subject` is base64 encoded subject DER sequence bytes
965+
- subject_key_id: `string` - certificates'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`
966+
- serial-number: `optional(string)` - certificate's serial number
967+
- Who can send:
968+
- Any role; owner
969+
- CLI command:
970+
- `dcld tx pki remove-x509-cert --subject=<base64 string> --subject-key-id=<hex string> --from=<account>`
971+
954972
### PROPOSE_REVOKE_X509_ROOT_CERT
955973

956974
**Status: Implemented**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
set -euo pipefail
2+
source integration_tests/cli/common.sh
3+
4+
root_cert_subject="MIGCMQswCQYDVQQGEwJVUzERMA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMRgwFgYDVQQKDA9FeGFtcGxlIENvbXBhbnkxGTAXBgNVBAsMEFRlc3RpbmcgRGl2aXNpb24xGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbQ=="
5+
root_cert_subject_key_id="33:5E:0C:07:44:F8:B5:9C:CD:55:01:9B:6D:71:23:83:6F:D0:D4:BE"
6+
root_cert_1_path="integration_tests/constants/root_with_same_subject_and_skid_1"
7+
root_cert_1_serial_number="1"
8+
root_cert_vid=65521
9+
intermediate_cert_subject="MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQ="
10+
intermediate_cert_subject_key_id="2E:13:3B:44:52:2C:30:E9:EC:FB:45:FA:5D:E5:04:0A:C1:C6:E6:B9"
11+
intermediate_cert_1_path="integration_tests/constants/intermediate_with_same_subject_and_skid_1"
12+
intermediate_cert_2_path="integration_tests/constants/intermediate_with_same_subject_and_skid_2"
13+
intermediate_cert_1_serial_number="3"
14+
intermediate_cert_2_serial_number="4"
15+
leaf_cert_subject="MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQ="
16+
leaf_cert_subject_key_id="12:16:55:8E:5E:2A:DF:04:D7:E6:FE:D1:53:69:61:98:EF:17:2F:03"
17+
leaf_cert_path="integration_tests/constants/leaf_with_same_subject_and_skid"
18+
leaf_cert_serial_number="5"
19+
20+
trustee_account="jack"
21+
second_trustee_account="alice"
22+
23+
test_divider
24+
25+
echo "REMOVE X509 CERTIFICATES"
26+
27+
echo "Propose and approve root certificate 1"
28+
result=$(echo "$passphrase" | dcld tx pki propose-add-x509-root-cert --certificate="$root_cert_1_path" --vid "$root_cert_vid" --from $trustee_account --yes)
29+
check_response "$result" "\"code\": 0"
30+
result=$(echo "$passphrase" | dcld tx pki approve-add-x509-root-cert --subject="$root_cert_subject" --subject-key-id="$root_cert_subject_key_id" --from $second_trustee_account --yes)
31+
check_response "$result" "\"code\": 0"
32+
33+
echo "Add an intermediate certificate with serialNumber 3"
34+
result=$(echo "$passphrase" | dcld tx pki add-x509-cert --certificate="$intermediate_cert_1_path" --from $trustee_account --yes)
35+
check_response "$result" "\"code\": 0"
36+
37+
echo "Add an intermediate certificate with serialNumber 4"
38+
result=$(echo "$passphrase" | dcld tx pki add-x509-cert --certificate="$intermediate_cert_2_path" --from $trustee_account --yes)
39+
check_response "$result" "\"code\": 0"
40+
41+
echo "Add a leaf certificate with serialNumber 5"
42+
result=$(echo "$passphrase" | dcld tx pki add-x509-cert --certificate="$leaf_cert_path" --from $trustee_account --yes)
43+
check_response "$result" "\"code\": 0"
44+
45+
echo "Request all approved root certificates."
46+
result=$(dcld query pki all-x509-certs)
47+
echo $result | jq
48+
check_response "$result" "\"subject\": \"$root_cert_subject\""
49+
check_response "$result" "\"subject\": \"$intermediate_cert_subject\""
50+
check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\""
51+
check_response "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
52+
check_response "$result" "\"subjectKeyId\": \"$leaf_cert_subject_key_id\""
53+
check_response "$result" "\"serialNumber\": \"$root_cert_1_serial_number\""
54+
check_response "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
55+
check_response "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
56+
check_response "$result" "\"serialNumber\": \"$leaf_cert_serial_number\""
57+
58+
echo "Revoke an intermediate certificate with serialNumber 3"
59+
result=$(echo "$passphrase" | dcld tx pki revoke-x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id" --serial-number="$intermediate_cert_1_serial_number" --from=$trustee_account --yes)
60+
check_response "$result" "\"code\": 0"
61+
62+
echo "Request all revoked certificates should contain only one intermediate certificate with serialNumber 3"
63+
result=$(dcld query pki all-revoked-x509-certs)
64+
echo $result | jq
65+
check_response "$result" "\"subject\": \"$intermediate_cert_subject\""
66+
check_response "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
67+
check_response "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
68+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
69+
70+
echo "Remove intermediate certificate with invalid serialNumber"
71+
result=$(echo "$passphrase" | dcld tx pki remove-x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id" --serial-number="invalid" --from=$trustee_account --yes)
72+
check_response "$result" "\"code\": 404"
73+
74+
echo "Remove intermediate certificate with serialNumber 3"
75+
result=$(echo "$passphrase" | dcld tx pki remove-x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id" --serial-number="$intermediate_cert_1_serial_number" --from=$trustee_account --yes)
76+
check_response "$result" "\"code\": 0"
77+
78+
echo "Request all certificates should not contain intermediate certificate with serialNumber 3"
79+
result=$(dcld query pki all-x509-certs)
80+
echo $result | jq
81+
check_response "$result" "\"subject\": \"$root_cert_subject\""
82+
check_response "$result" "\"subject\": \"$intermediate_cert_subject\""
83+
check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\""
84+
check_response "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
85+
check_response "$result" "\"subjectKeyId\": \"$leaf_cert_subject_key_id\""
86+
check_response "$result" "\"serialNumber\": \"$root_cert_1_serial_number\""
87+
check_response "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
88+
check_response "$result" "\"serialNumber\": \"$leaf_cert_serial_number\""
89+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
90+
91+
echo "Request approved certificates by an intermediate certificate's subject and subjectKeyId should contain only one certificate with serialNumber 4"
92+
result=$(dcld query pki x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id")
93+
echo $result | jq
94+
check_response "$result" "\"subject\": \"$intermediate_cert_subject\""
95+
check_response "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
96+
check_response "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
97+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
98+
99+
echo "Remove an intermediate certificate with subject and subjectKeyId"
100+
result=$(echo "$passphrase" | dcld tx pki remove-x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id" --from=$trustee_account --yes)
101+
check_response "$result" "\"code\": 0"
102+
103+
echo "Request approved certificates by an intermediate certificate's subject and subjectKeyId should be empty"
104+
result=$(dcld query pki x509-cert --subject="$intermediate_cert_subject" --subject-key-id="$intermediate_cert_subject_key_id")
105+
echo $result | jq
106+
check_response "$result" "Not Found"
107+
response_does_not_contain "$result" "\"subject\": \"$intermediate_cert_subject\""
108+
response_does_not_contain "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
109+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
110+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
111+
112+
echo "Request all revoked certificates should be empty"
113+
result=$(dcld query pki all-revoked-x509-certs)
114+
echo $result | jq
115+
check_response "$result" "\[\]"
116+
response_does_not_contain "$result" "\"subject\": \"$intermediate_cert_subject\""
117+
response_does_not_contain "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
118+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
119+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
120+
121+
echo "Request all certificates should contain only root and leaf certificates"
122+
result=$(dcld query pki all-x509-certs)
123+
echo $result | jq
124+
check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\""
125+
check_response "$result" "\"subjectKeyId\": \"$leaf_cert_subject_key_id\""
126+
check_response "$result" "\"serialNumber\": \"$root_cert_1_serial_number\""
127+
check_response "$result" "\"serialNumber\": \"$leaf_cert_serial_number\""
128+
response_does_not_contain "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
129+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
130+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
131+
132+
echo "Remove leaf certificate"
133+
result=$(echo "$passphrase" | dcld tx pki remove-x509-cert --subject="$leaf_cert_subject" --subject-key-id="$leaf_cert_subject_key_id" --from=$trustee_account --yes)
134+
check_response "$result" "\"code\": 0"
135+
136+
echo "Request approved leaf certificates should be empty"
137+
result=$(dcld query pki x509-cert --subject="$leaf_cert_subject" --subject-key-id="$leaf_cert_subject_key_id")
138+
echo $result | jq
139+
check_response "$result" "Not Found"
140+
response_does_not_contain "$result" "\"subject\": \"$leaf_cert_subject\""
141+
response_does_not_contain "$result" "\"subjectKeyId\": \"$leaf_cert_subject_key_id\""
142+
response_does_not_contain "$result" "\"serialNumber\": \"$leaf_cert_serial_number"
143+
144+
echo "Request all certificates should contain only root certificate"
145+
result=$(dcld query pki all-x509-certs)
146+
echo $result | jq
147+
check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\""
148+
check_response "$result" "\"serialNumber\": \"$root_cert_1_serial_number\""
149+
response_does_not_contain "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
150+
response_does_not_contain "$result" "\"subjectKeyId\": \"$leaf_cert_subject_key_id"
151+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""
152+
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_2_serial_number\""
153+
response_does_not_contain "$result" "\"serialNumber\": \"$leaf_cert_serial_number"
154+
155+
test_divider

integration_tests/constants/constants.go

+47-22
Original file line numberDiff line numberDiff line change
@@ -463,47 +463,69 @@ XWQLy4RZmLIkrm7vj3uFWRpi7lOBkAPOgCm04RTYqJJwnI0UeJmvaxoFd42J+k3D
463463
xEsSrRoqMgkOX01+kkNn8Ugv3bEfeJ4=
464464
-----END CERTIFICATE-----`
465465
IntermediateWithSameSubjectAndSKID1 = `-----BEGIN CERTIFICATE-----
466-
MIIDhzCCAm+gAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
466+
MIIDlTCCAn2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
467467
ETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhOZXcgWW9yazEYMBYGA1UECgwP
468468
RXhhbXBsZSBDb21wYW55MRkwFwYDVQQLDBBUZXN0aW5nIERpdmlzaW9uMRgwFgYD
469-
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE1MTE1MTE1WhgPMzAyMzA2MTgx
470-
MTUxMTVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
469+
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE2MDY1NTA0WhgPMzAyMzA2MTkw
470+
NjU1MDRaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
471471
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUA
472472
A4IBDwAwggEKAoIBAQDmdvkss9fh7NRVNAKbrt9zReTNUwMsUxf6ryvepNUxEc6o
473473
bGDS8yunS9QVpqf9BVQfM0tCzrewif1EDetdPYIMnC9o34nF095/4E5v+aoKabzG
474474
wuyibKjtKVSl+dy0p42UJtScwzZRqLXIZxhmefh2CZT4q9Fs4y2qnCBtFqaWCToT
475475
rcNWAQNBZ0E6S2ZulxXsdMoOGJ4iYPjAhqSbejcrN0McBudYq97pvEInG3HbyX2o
476476
IGtZznGtwG326l9SV4OvmofxrvLjhx/nOauSBbbJcPWy3L10FWDZZ2h8ddpvx6I6
477-
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjQjBAMB0GA1UdDgQW
477+
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjUDBOMB0GA1UdDgQW
478478
BBQuEztEUiww6ez7Rfpd5QQKwcbmuTAfBgNVHSMEGDAWgBQzXgwHRPi1nM1VAZtt
479-
cSODb9DUvjANBgkqhkiG9w0BAQsFAAOCAQEAdKy4xLM2gRWB53LTlbvuGls3bDVD
480-
bTar/qTh3yPHc4ugtfQOlLfVD85nJykogiV9ZcT01OdKPeTbeGB93mlqpqIsirkW
481-
ei6ZuBjnX6e4QXcHAo0om6hylSKjC6NEsIPHRuNeEvtHb7M9eMIXfxpjVuWZoYcq
482-
cDtxXeARbH7QaeiKgN1qqKiuwLY1SnExABr10keLILJYYxCZmyp7GXfh8+eSKc4l
483-
l039fvhGiSmDipcVRwZxVfvu6KUtY1QpL5185bjTeD35QL71Ix69ahEaaMn9Gy+T
484-
TMkW9/LTRgnlWI4+ghvGykOsIbJwpGpfiRO3/ytgh4snUbEsFBLkLujk5w==
485-
-----END CERTIFICATE-----
486-
`
479+
cSODb9DUvjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBm1hCN9XFd
480+
2LnrxZkNr0RGMuSsFKIT8B7/gXmgDtkFKb84GcT/rFYGch4Nc6sVXQLFQWGsYCO9
481+
OKZdiJGx4TOkGZuo1waa3/JzwDxLHh/2d7CLrEuGQnEo2evw+yj8AwkjWml+5zjn
482+
L3bG9iZ1JQSUsGiVIHtUVYTGetyUy+SuJxuVvx359hc5foRuNiKDhQW7mwXWv+ua
483+
xfBPUaspjiGALO8hBKlbVxt0RWv5MGyg2JJbSt9Ijexa6aoLzynq5gpSoEfQABUp
484+
wbfDZe4Cbio4ndASlsbtpo/5ZOuQKn9Wp54meOotFDrFntnD7XFohxMJc5YY0F1q
485+
Yk3FHd02VN0M
486+
-----END CERTIFICATE-----`
487487
IntermediateWithSameSubjectAndSKID2 = `-----BEGIN CERTIFICATE-----
488-
MIIDhzCCAm+gAwIBAgIBBDANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
488+
MIIDlTCCAn2gAwIBAgIBBDANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
489489
ETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhOZXcgWW9yazEYMBYGA1UECgwP
490490
RXhhbXBsZSBDb21wYW55MRkwFwYDVQQLDBBUZXN0aW5nIERpdmlzaW9uMRgwFgYD
491-
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE1MTE1MTIzWhgPMzAyMzA2MTgx
492-
MTUxMjNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
491+
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE2MDY1NzQ4WhgPMzAyMzA2MTkw
492+
NjU3NDhaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
493493
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUA
494494
A4IBDwAwggEKAoIBAQDmdvkss9fh7NRVNAKbrt9zReTNUwMsUxf6ryvepNUxEc6o
495495
bGDS8yunS9QVpqf9BVQfM0tCzrewif1EDetdPYIMnC9o34nF095/4E5v+aoKabzG
496496
wuyibKjtKVSl+dy0p42UJtScwzZRqLXIZxhmefh2CZT4q9Fs4y2qnCBtFqaWCToT
497497
rcNWAQNBZ0E6S2ZulxXsdMoOGJ4iYPjAhqSbejcrN0McBudYq97pvEInG3HbyX2o
498498
IGtZznGtwG326l9SV4OvmofxrvLjhx/nOauSBbbJcPWy3L10FWDZZ2h8ddpvx6I6
499-
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjQjBAMB0GA1UdDgQW
499+
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjUDBOMB0GA1UdDgQW
500500
BBQuEztEUiww6ez7Rfpd5QQKwcbmuTAfBgNVHSMEGDAWgBQzXgwHRPi1nM1VAZtt
501-
cSODb9DUvjANBgkqhkiG9w0BAQsFAAOCAQEACUrYb9YNJ7ZH+bj99QmczoVEfZ4B
502-
q9gMgwK48RsNV7Zu+JNsMtz0QhSu2coOJx43vZskgzSaMkPTUuThkjUJJifnPVGw
503-
YpWL6RQaQkn8YNCJMWrRvnNnAcJ2sIQgg5fCWf4cO/PepPZRzojMOBX8a1TOs/53
504-
QTHh3yB5FYrW6ekQayLyoyK+NZ6O2sXEXTgHT9jLlrjnH9d6X18tbWmbglsDk4TL
505-
sjM+VdY9b/3SGHgGObPXkCdACI0v5kfHiUU5Z0zmNNtyNA0qbOBj8BPkOnq/zd2j
506-
3T2pMP5BtRfBLiBJmEJlkDN90xa9A3kdgC+GUNvDCqd3Gv05uGuJYtu0og==
501+
cSODb9DUvjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQClVhy+Gtd7
502+
5lOwDaT4m+J5FXyxMI6Lh7OydDcpsbUeIKtw0ODgCBFTrwtmYfqlJ35msKOwCOvp
503+
L4LVxnUJGCV6dRuQgGFYnhJDwKdAI9aH2b51ZJoVuHxpoqpwkwFjYEzRzP1otkW9
504+
b5VmtGeujfP12ptzqhmwmQ/z9yFDkKjwTcq02n1NGzc4CcygkQKZbr64HW17nsq/
505+
AWNUMVCMnWrkYaFjBH21+RZ+zkdOVQXjtp7EZhQzLPhqrg4phLe1L+SztCJN/VrN
506+
/sptlM3aW8XXI2pLbYAMCNpqQftnkdOOYfnJmf1A7x3eeDQHWiRj3FBHHGqZydmV
507+
OtwplWOnxNQw
508+
-----END CERTIFICATE-----`
509+
510+
LeafCertWithSameSubjectAndSKID = `-----BEGIN CERTIFICATE-----
511+
MIIDSTCCAjGgAwIBAgIBBTANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJBVTET
512+
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
513+
dHkgTHRkMCAXDTI0MDIxNjA2NTkwMloYDzMwMjMwNjE5MDY1OTAyWjBFMQswCQYD
514+
VQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQg
515+
V2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
516+
oCiuqhgIgU89pQ3/nT7ccFbqrmSbyRc/5jfYw83VDuSE4SkPwEml268k8XRoUjdh
517+
sLkDROlR3hab0Ez/eI9LBLXXFWB3qlAJ2OfDkZ+RMLVIGqMxckn2bfnYtUITSVzD
518+
FWWvanb7+wACW6MDH3f/FLLblII21XAcljluzPQbVZoCimh33CS5VOI68y/Esjlz
519+
8HDhXDuxyswIjGMjCnKaFS0vQsySC+M4nqLKdJ0HDPNVMjeUtVIUCKke0rOFDTUZ
520+
nDmBHfdOoHtBiCeZzNH7s2ER4NCwXZmSNXev8CHwmZqaIUSRMsmOxbw3I7KpRBFf
521+
hObeLm55aVS2FEMH68H0FQIDAQABo0IwQDAdBgNVHQ4EFgQUEhZVjl4q3wTX5v7R
522+
U2lhmO8XLwMwHwYDVR0jBBgwFoAULhM7RFIsMOns+0X6XeUECsHG5rkwDQYJKoZI
523+
hvcNAQELBQADggEBAHK9fmY6C9FyzVNh6RTKNT6FL3ozr+WvmKJmE7WcxqAEW6JZ
524+
rtihObu2y1B7e74umOwa1QJd7EFyMm4qnXYT2PepnanxTnz0EST9ZuhM3GpM1FP6
525+
fjlqLDHoQ1UhBmEnocFTqd7QEZtUbRWPnlJw0ZK2uFK7IYmlnBKkewPCLVGI3ihx
526+
al/8sTx3xx7fWpS+rJ3jviCpHgP+cGV/ANg8hOlyr68u0FE+x6pye00TmxcFzDuo
527+
5/OA9jGQln82Z8inmc05wZPQPpjZxdCQteqJkNl7PrklgO5EevG9JlUArIets2Py
528+
2Vciq5eYOIi+PlP+HI5QzlZYxSqFjJrFcfzYCJ4=
507529
-----END CERTIFICATE-----`
508530

509531
RootIssuer = "MDQxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApzb21lLXN0YXRlMRAwDgYDVQQKDAdyb290LWNh"
@@ -521,6 +543,9 @@ sjM+VdY9b/3SGHgGObPXkCdACI0v5kfHiUU5Z0zmNNtyNA0qbOBj8BPkOnq/zd2j
521543
IntermediateCertWithSameSubjectAndSKIDSubjectKeyID = "2E:13:3B:44:52:2C:30:E9:EC:FB:45:FA:5D:E5:04:0A:C1:C6:E6:B9"
522544
IntermediateCertWithSameSubjectAndSKID1SerialNumber = "3"
523545
IntermediateCertWithSameSubjectAndSKID2SerialNumber = "4"
546+
LeafCertWithSameSubjectAndSKIDSubject = "MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQ="
547+
LeafCertWithSameSubjectAndSKIDSubjectKeyID = "12:16:55:8E:5E:2A:DF:04:D7:E6:FE:D1:53:69:61:98:EF:17:2F:03"
548+
LeafCertWithSameSubjectAndSKIDSerialNumber = "5"
524549

525550
IntermediateIssuer = "MDQxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApzb21lLXN0YXRlMRAwDgYDVQQKDAdyb290LWNh"
526551
IntermediateAuthorityKeyID = "5A:88:0E:6C:36:53:D0:7F:B0:89:71:A3:F4:73:79:09:30:E6:2B:DB"
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIDhzCCAm+gAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
2+
MIIDlTCCAn2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
33
ETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhOZXcgWW9yazEYMBYGA1UECgwP
44
RXhhbXBsZSBDb21wYW55MRkwFwYDVQQLDBBUZXN0aW5nIERpdmlzaW9uMRgwFgYD
5-
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE1MTE1MTE1WhgPMzAyMzA2MTgx
6-
MTUxMTVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
5+
VQQDDA93d3cuZXhhbXBsZS5jb20wIBcNMjQwMjE2MDY1NTA0WhgPMzAyMzA2MTkw
6+
NjU1MDRaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
77
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUA
88
A4IBDwAwggEKAoIBAQDmdvkss9fh7NRVNAKbrt9zReTNUwMsUxf6ryvepNUxEc6o
99
bGDS8yunS9QVpqf9BVQfM0tCzrewif1EDetdPYIMnC9o34nF095/4E5v+aoKabzG
1010
wuyibKjtKVSl+dy0p42UJtScwzZRqLXIZxhmefh2CZT4q9Fs4y2qnCBtFqaWCToT
1111
rcNWAQNBZ0E6S2ZulxXsdMoOGJ4iYPjAhqSbejcrN0McBudYq97pvEInG3HbyX2o
1212
IGtZznGtwG326l9SV4OvmofxrvLjhx/nOauSBbbJcPWy3L10FWDZZ2h8ddpvx6I6
13-
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjQjBAMB0GA1UdDgQW
13+
oCfqYRNMqsDPfd7eagbDObMApguhQ1Hl60NJW2KBAgMBAAGjUDBOMB0GA1UdDgQW
1414
BBQuEztEUiww6ez7Rfpd5QQKwcbmuTAfBgNVHSMEGDAWgBQzXgwHRPi1nM1VAZtt
15-
cSODb9DUvjANBgkqhkiG9w0BAQsFAAOCAQEAdKy4xLM2gRWB53LTlbvuGls3bDVD
16-
bTar/qTh3yPHc4ugtfQOlLfVD85nJykogiV9ZcT01OdKPeTbeGB93mlqpqIsirkW
17-
ei6ZuBjnX6e4QXcHAo0om6hylSKjC6NEsIPHRuNeEvtHb7M9eMIXfxpjVuWZoYcq
18-
cDtxXeARbH7QaeiKgN1qqKiuwLY1SnExABr10keLILJYYxCZmyp7GXfh8+eSKc4l
19-
l039fvhGiSmDipcVRwZxVfvu6KUtY1QpL5185bjTeD35QL71Ix69ahEaaMn9Gy+T
20-
TMkW9/LTRgnlWI4+ghvGykOsIbJwpGpfiRO3/ytgh4snUbEsFBLkLujk5w==
21-
-----END CERTIFICATE-----
15+
cSODb9DUvjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBm1hCN9XFd
16+
2LnrxZkNr0RGMuSsFKIT8B7/gXmgDtkFKb84GcT/rFYGch4Nc6sVXQLFQWGsYCO9
17+
OKZdiJGx4TOkGZuo1waa3/JzwDxLHh/2d7CLrEuGQnEo2evw+yj8AwkjWml+5zjn
18+
L3bG9iZ1JQSUsGiVIHtUVYTGetyUy+SuJxuVvx359hc5foRuNiKDhQW7mwXWv+ua
19+
xfBPUaspjiGALO8hBKlbVxt0RWv5MGyg2JJbSt9Ijexa6aoLzynq5gpSoEfQABUp
20+
wbfDZe4Cbio4ndASlsbtpo/5ZOuQKn9Wp54meOotFDrFntnD7XFohxMJc5YY0F1q
21+
Yk3FHd02VN0M
22+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)