Skip to content

Commit 3ccc231

Browse files
committed
#535 Add new txn to remove non-root certificates
Fix linter error Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> Signed-off-by: Abdulbois <abdulbois123@gmail.com>
1 parent 1844e3d commit 3ccc231

File tree

4 files changed

+57
-35
lines changed

4 files changed

+57
-35
lines changed

integration_tests/cli/pki-remove-x509-certificates.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_se
112112
echo "Request all revoked certificates should be empty"
113113
result=$(dcld query pki all-revoked-x509-certs)
114114
echo $result | jq
115-
check_response "$result" "Not Found"
115+
check_response "$result" "\[\]"
116116
response_does_not_contain "$result" "\"subject\": \"$intermediate_cert_subject\""
117117
response_does_not_contain "$result" "\"subjectKeyId\": \"$intermediate_cert_subject_key_id\""
118118
response_does_not_contain "$result" "\"serialNumber\": \"$intermediate_cert_1_serial_number\""

integration_tests/grpc_rest/pki/helpers.go

+33-33
Original file line numberDiff line numberDiff line change
@@ -1789,36 +1789,6 @@ func Demo(suite *utils.TestSuite) {
17891789
require.Equal(suite.T, 1, len(certs.Certs))
17901790
require.Equal(suite.T, testconstants.IntermediateCertWithSameSubjectAndSKID2SerialNumber, certs.Certs[0].SerialNumber)
17911791

1792-
// Revoke Root certificate with serialNumber 2
1793-
msgProposeRevokeX509RootCert = pkitypes.MsgProposeRevokeX509RootCert{
1794-
Subject: testconstants.RootCertWithSameSubjectAndSKIDSubject,
1795-
SubjectKeyId: testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID,
1796-
SerialNumber: testconstants.RootCertWithSameSubjectAndSKID2SerialNumber,
1797-
Signer: jackAccount.Address,
1798-
}
1799-
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgProposeRevokeX509RootCert}, jackName, jackAccount)
1800-
require.NoError(suite.T, err)
1801-
1802-
msgApproveRevokeX509RootCert = pkitypes.MsgApproveRevokeX509RootCert{
1803-
Subject: testconstants.RootCertWithSameSubjectAndSKIDSubject,
1804-
SubjectKeyId: testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID,
1805-
SerialNumber: testconstants.RootCertWithSameSubjectAndSKID2SerialNumber,
1806-
Signer: aliceAccount.Address,
1807-
}
1808-
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgApproveRevokeX509RootCert}, aliceName, aliceAccount)
1809-
require.NoError(suite.T, err)
1810-
1811-
// Request revoked Root certificate with serialNumber 2
1812-
revokedCertificate, _ = GetRevokedX509Cert(suite, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID)
1813-
require.Equal(suite.T, 2, len(revokedCertificate.Certs))
1814-
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKIDSubject, revokedCertificate.Subject)
1815-
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID, revokedCertificate.SubjectKeyId)
1816-
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKID2SerialNumber, revokedCertificate.Certs[1].SerialNumber)
1817-
require.True(suite.T, revokedCertificate.Certs[1].IsRoot)
1818-
1819-
_, err = GetX509Cert(suite, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID)
1820-
suite.AssertNotFound(err)
1821-
18221792
// Remove x509 certificate with invalid serialNumber
18231793
msgRemoveX509Cert := pkitypes.MsgRemoveX509Cert{
18241794
Subject: testconstants.IntermediateCertWithSameSubjectAndSKIDSubject,
@@ -1837,7 +1807,7 @@ func Demo(suite *utils.TestSuite) {
18371807
}
18381808
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgRemoveX509Cert}, aliceName, aliceAccount)
18391809
require.NoError(suite.T, err)
1840-
// Check that it's removed from revoked list
1810+
// Check that two intermediate certificates removed
18411811
_, err = GetRevokedX509Cert(suite, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
18421812
suite.AssertNotFound(err)
18431813
_, err = GetX509Cert(suite, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
@@ -1896,7 +1866,7 @@ func Demo(suite *utils.TestSuite) {
18961866

18971867
_, err = GetX509Cert(suite, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
18981868
suite.AssertNotFound(err)
1899-
certs, _ = GetX509Cert(suite, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber)
1869+
certs, _ = GetX509Cert(suite, testconstants.LeafCertWithSameSubjectAndSKIDSubject, testconstants.LeafCertWithSameSubjectAndSKIDSubjectKeyID)
19001870
require.Equal(suite.T, 1, len(certs.Certs))
19011871
require.Equal(suite.T, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber, certs.Certs[0].SerialNumber)
19021872

@@ -1909,6 +1879,36 @@ func Demo(suite *utils.TestSuite) {
19091879
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgRemoveX509Cert}, aliceName, aliceAccount)
19101880
require.NoError(suite.T, err)
19111881

1912-
_, err = GetX509Cert(suite, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber)
1882+
_, err = GetX509Cert(suite, testconstants.LeafCertWithSameSubjectAndSKIDSubject, testconstants.LeafCertWithSameSubjectAndSKIDSubjectKeyID)
1883+
suite.AssertNotFound(err)
1884+
1885+
// Revoke Root certificate with serialNumber 2
1886+
msgProposeRevokeX509RootCert = pkitypes.MsgProposeRevokeX509RootCert{
1887+
Subject: testconstants.RootCertWithSameSubjectAndSKIDSubject,
1888+
SubjectKeyId: testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID,
1889+
SerialNumber: testconstants.RootCertWithSameSubjectAndSKID2SerialNumber,
1890+
Signer: jackAccount.Address,
1891+
}
1892+
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgProposeRevokeX509RootCert}, jackName, jackAccount)
1893+
require.NoError(suite.T, err)
1894+
1895+
msgApproveRevokeX509RootCert = pkitypes.MsgApproveRevokeX509RootCert{
1896+
Subject: testconstants.RootCertWithSameSubjectAndSKIDSubject,
1897+
SubjectKeyId: testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID,
1898+
SerialNumber: testconstants.RootCertWithSameSubjectAndSKID2SerialNumber,
1899+
Signer: aliceAccount.Address,
1900+
}
1901+
_, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgApproveRevokeX509RootCert}, aliceName, aliceAccount)
1902+
require.NoError(suite.T, err)
1903+
1904+
// Request revoked Root certificate with serialNumber 2
1905+
revokedCertificate, _ = GetRevokedX509Cert(suite, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID)
1906+
require.Equal(suite.T, 2, len(revokedCertificate.Certs))
1907+
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKIDSubject, revokedCertificate.Subject)
1908+
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID, revokedCertificate.SubjectKeyId)
1909+
require.Equal(suite.T, testconstants.RootCertWithSameSubjectAndSKID2SerialNumber, revokedCertificate.Certs[1].SerialNumber)
1910+
require.True(suite.T, revokedCertificate.Certs[1].IsRoot)
1911+
1912+
_, err = GetX509Cert(suite, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.RootCertWithSameSubjectAndSKIDSubjectKeyID)
19131913
suite.AssertNotFound(err)
19141914
}

x/pki/handler_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -1723,6 +1723,12 @@ func TestHandler_RemoveX509Cert_BySubjectAndSKID(t *testing.T) {
17231723
require.Equal(t, 2, len(allCerts[0].Certs)+len(allCerts[1].Certs))
17241724
_, err = queryApprovedCertificates(setup, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
17251725
require.Equal(t, codes.NotFound, status.Code(err))
1726+
// check that unique certificates does not exists
1727+
found := setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID1SerialNumber)
1728+
require.Equal(t, false, found)
1729+
found = setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID2SerialNumber)
1730+
require.Equal(t, false, found)
1731+
17261732
leafCerts, _ := queryApprovedCertificates(setup, testconstants.LeafCertWithSameSubjectAndSKIDSubject, testconstants.LeafCertWithSameSubjectAndSKIDSubjectKeyID)
17271733
require.Equal(t, 1, len(leafCerts.Certs))
17281734
require.Equal(t, testconstants.LeafCertWithSameSubjectAndSKIDSerialNumber, leafCerts.Certs[0].SerialNumber)
@@ -1796,6 +1802,12 @@ func TestHandler_RemoveX509Cert_BySerialNumber(t *testing.T) {
17961802
_, err = queryApprovedCertificates(setup, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
17971803
require.Equal(t, codes.NotFound, status.Code(err))
17981804

1805+
// check that unique certificates does not exists
1806+
found := setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID1SerialNumber)
1807+
require.Equal(t, false, found)
1808+
found = setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID2SerialNumber)
1809+
require.Equal(t, false, found)
1810+
17991811
leafCerts, _ = queryApprovedCertificates(setup, testconstants.LeafCertWithSameSubjectAndSKIDSubject, testconstants.LeafCertWithSameSubjectAndSKIDSubjectKeyID)
18001812
require.Equal(t, 1, len(leafCerts.Certs))
18011813
}
@@ -1862,6 +1874,12 @@ func TestHandler_RemoveX509Cert_RevokedAndApprovedCertificate(t *testing.T) {
18621874
require.Equal(t, codes.NotFound, status.Code(err))
18631875
_, err = queryRevokedCertificates(setup, testconstants.IntermediateCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKIDSubjectKeyID)
18641876
require.Equal(t, codes.NotFound, status.Code(err))
1877+
1878+
// check that unique certificates does not exists
1879+
found := setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID1SerialNumber)
1880+
require.Equal(t, false, found)
1881+
found = setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootCertWithSameSubjectAndSKIDSubject, testconstants.IntermediateCertWithSameSubjectAndSKID2SerialNumber)
1882+
require.Equal(t, false, found)
18651883
}
18661884

18671885
func TestHandler_RemoveX509Cert_RevokedCertificate(t *testing.T) {
@@ -1923,6 +1941,10 @@ func TestHandler_RemoveX509Cert_RevokedCertificate(t *testing.T) {
19231941
require.Equal(t, codes.NotFound, status.Code(err))
19241942
_, err = queryRevokedCertificates(setup, testconstants.IntermediateSubject, testconstants.IntermediateSubjectKeyID)
19251943
require.Equal(t, codes.NotFound, status.Code(err))
1944+
1945+
// check that unique certificate does not exists
1946+
found := setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.IntermediateIssuer, testconstants.IntermediateSerialNumber)
1947+
require.Equal(t, false, found)
19261948
}
19271949

19281950
func TestHandler_RemoveX509Cert_CertificateDoesNotExist(t *testing.T) {

x/pki/keeper/msg_server_remove_x_509_cert.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func (k msgServer) RemoveX509Cert(goCtx context.Context, msg *types.MsgRemoveX50
1414

1515
aprCerts, foundApproved := k.GetApprovedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
1616
revCerts, foundRevoked := k.GetRevokedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
17-
certificates := append(aprCerts.Certs, revCerts.Certs...)
17+
certificates := append(aprCerts.Certs, revCerts.Certs...) //nolint:gocritic
1818
if len(certificates) == 0 {
1919
return nil, pkitypes.NewErrCertificateDoesNotExist(msg.Subject, msg.SubjectKeyId)
2020
}

0 commit comments

Comments
 (0)