Skip to content

Commit e50f3df

Browse files
committed
Error messages improvements
Fix bug related to error messages while removing NOC certificates Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> Signed-off-by: Abdulbois <abdulbois123@gmail.com>
1 parent af3e987 commit e50f3df

4 files changed

+42
-17
lines changed

x/pki/handler_remove_noc_ica_cert_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ func TestHandler_RemoveNocX509IcaCert_ByOtherVendor(t *testing.T) {
436436
vendorAccAddress2.String(), testconstants.NocCert1Subject, testconstants.NocCert1SubjectKeyID, testconstants.NocCert1SerialNumber)
437437
_, err = setup.Handler(setup.Ctx, removeIcaCert)
438438
require.Error(t, err)
439-
require.True(t, pkitypes.ErrCertificateDoesNotExist.Is(err))
439+
require.True(t, pkitypes.ErrCertVidNotEqualAccountVid.Is(err))
440440
}
441441

442442
func TestHandler_RemoveNocX509IcaCert_SenderNotVendor(t *testing.T) {

x/pki/handler_remove_noc_root_cert_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ func TestHandler_RemoveNocX509RootCert_ByOtherVendor(t *testing.T) {
491491
vendorAccAddress2.String(), testconstants.NocRootCert1Subject, testconstants.NocRootCert1SubjectKeyID, testconstants.NocRootCert1SerialNumber)
492492
_, err := setup.Handler(setup.Ctx, removeIcaCert)
493493
require.Error(t, err)
494-
require.True(t, pkitypes.ErrCertificateDoesNotExist.Is(err))
494+
require.True(t, pkitypes.ErrCertVidNotEqualAccountVid.Is(err))
495495
}
496496

497497
func TestHandler_RemoveNocX509RootCert_SenderNotVendor(t *testing.T) {

x/pki/keeper/msg_server_remove_noc_x_509_ica_cert.go

+17-7
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,30 @@ func (k msgServer) RemoveNocX509IcaCert(goCtx context.Context, msg *types.MsgRem
2626
signerAccount, _ := k.dclauthKeeper.GetAccountO(ctx, signerAddr)
2727
accountVid := signerAccount.VendorID
2828

29-
icaCerts, foundActive := k.GetNocIcaCertificatesBySubjectAndSKID(ctx, accountVid, msg.Subject, msg.SubjectKeyId)
29+
icaCerts, foundActive := k.GetApprovedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
3030
revCerts, foundRevoked := k.GetRevokedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
3131
certificates := icaCerts.Certs
3232
certificates = append(certificates, revCerts.Certs...)
3333
if len(certificates) == 0 {
3434
return nil, pkitypes.NewErrCertificateDoesNotExist(msg.Subject, msg.SubjectKeyId)
3535
}
3636

37+
cert := certificates[0]
38+
// Existing certificate must be Root certificate
39+
if cert.IsRoot {
40+
return nil, pkitypes.NewErrMessageExpectedNonRoot(cert.Subject, cert.SubjectKeyId)
41+
}
42+
3743
// Existing certificate must be NOC certificate
38-
if !certificates[0].IsNoc {
44+
if !cert.IsNoc {
3945
return nil, pkitypes.NewErrProvidedNocCertButExistingNotNoc(msg.Subject, msg.SubjectKeyId)
4046
}
4147

48+
// account VID must be same as VID of existing certificates
49+
if accountVid != cert.Vid {
50+
return nil, pkitypes.NewErrRevokeCertVidNotEqualToAccountVid(cert.Vid, accountVid)
51+
}
52+
4253
if err = k.EnsureVidMatches(ctx, certificates[0].Owner, msg.Signer); err != nil {
4354
return nil, err
4455
}
@@ -59,19 +70,18 @@ func (k msgServer) RemoveNocX509IcaCert(goCtx context.Context, msg *types.MsgRem
5970

6071
if foundActive {
6172
// Remove from Approved lists
62-
aprCerts, _ := k.GetApprovedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
63-
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &aprCerts.Certs)
64-
k.removeApprovedX509Cert(ctx, certID, &aprCerts, msg.SerialNumber)
73+
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &icaCerts.Certs)
74+
k.removeApprovedX509Cert(ctx, certID, &icaCerts, msg.SerialNumber)
6575

6676
// Remove from ICA lists
67-
k.RemoveNocIcaCertificateBySerialNumber(ctx, icaCerts.Vid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
77+
k.RemoveNocIcaCertificateBySerialNumber(ctx, accountVid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
6878
}
6979
if foundRevoked {
7080
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &revCerts.Certs)
7181
k.removeOrUpdateRevokedX509Cert(ctx, certID, &revCerts)
7282
}
7383
} else {
74-
k.RemoveNocIcaCertificate(ctx, certID.Subject, certID.SubjectKeyId, icaCerts.Vid)
84+
k.RemoveNocIcaCertificate(ctx, certID.Subject, certID.SubjectKeyId, accountVid)
7585
// remove from approved list
7686
k.RemoveApprovedCertificates(ctx, certID.Subject, certID.SubjectKeyId)
7787
// remove from subject -> subject key ID map

x/pki/keeper/msg_server_remove_noc_x_509_root_cert.go

+23-8
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,30 @@ func (k msgServer) RemoveNocX509RootCert(goCtx context.Context, msg *types.MsgRe
2626
signerAccount, _ := k.dclauthKeeper.GetAccountO(ctx, signerAddr)
2727
accountVid := signerAccount.VendorID
2828

29-
nocCerts, foundActive := k.GetNocRootCertificatesByVidAndSkid(ctx, accountVid, msg.SubjectKeyId)
29+
nocCerts, foundActive := k.GetApprovedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
3030
revCerts, foundRevoked := k.GetRevokedNocRootCertificates(ctx, msg.Subject, msg.SubjectKeyId)
3131
certificates := nocCerts.Certs
3232
certificates = append(certificates, revCerts.Certs...)
3333
if len(certificates) == 0 {
3434
return nil, pkitypes.NewErrCertificateDoesNotExist(msg.Subject, msg.SubjectKeyId)
3535
}
3636

37+
cert := certificates[0]
38+
// Existing certificate must be Root certificate
39+
if !cert.IsRoot {
40+
return nil, pkitypes.NewErrMessageExistingCertIsNotRoot(cert.Subject, cert.SubjectKeyId)
41+
}
42+
43+
// Existing certificate must be NOC certificate
44+
if !cert.IsNoc {
45+
return nil, pkitypes.NewErrProvidedNocCertButExistingNotNoc(msg.Subject, msg.SubjectKeyId)
46+
}
47+
48+
// account VID must be same as VID of existing certificates
49+
if accountVid != cert.Vid {
50+
return nil, pkitypes.NewErrRevokeCertVidNotEqualToAccountVid(cert.Vid, accountVid)
51+
}
52+
3753
certID := types.CertificateIdentifier{
3854
Subject: msg.Subject,
3955
SubjectKeyId: msg.SubjectKeyId,
@@ -50,23 +66,22 @@ func (k msgServer) RemoveNocX509RootCert(goCtx context.Context, msg *types.MsgRe
5066

5167
if foundActive {
5268
// Remove from Approved lists
53-
aprCerts, _ := k.GetApprovedCertificates(ctx, msg.Subject, msg.SubjectKeyId)
54-
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &aprCerts.Certs)
55-
k.removeApprovedX509Cert(ctx, certID, &aprCerts, msg.SerialNumber)
69+
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &nocCerts.Certs)
70+
k.removeApprovedX509Cert(ctx, certID, &nocCerts, msg.SerialNumber)
5671

5772
// Remove from NOC lists
58-
k.RemoveNocRootCertificateBySerialNumber(ctx, nocCerts.Vid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
59-
k.RemoveNocRootCertificateByVidSubjectSkidAndSerialNumber(ctx, nocCerts.Vid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
73+
k.RemoveNocRootCertificateBySerialNumber(ctx, accountVid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
74+
k.RemoveNocRootCertificateByVidSubjectSkidAndSerialNumber(ctx, accountVid, certID.Subject, certID.SubjectKeyId, msg.SerialNumber)
6075
}
6176

6277
if foundRevoked {
6378
removeCertFromList(certBySerialNumber.Issuer, certBySerialNumber.SerialNumber, &revCerts.Certs)
6479
k._removeRevokedNocX509RootCert(ctx, certID, &revCerts)
6580
}
6681
} else {
67-
k.RemoveNocRootCertificate(ctx, nocCerts.Vid, certID.Subject, certID.SubjectKeyId)
82+
k.RemoveNocRootCertificate(ctx, accountVid, certID.Subject, certID.SubjectKeyId)
6883
// remove from vid, subject key id map
69-
k.RemoveNocRootCertificatesByVidAndSkid(ctx, nocCerts.Vid, certID.SubjectKeyId)
84+
k.RemoveNocRootCertificatesByVidAndSkid(ctx, accountVid, certID.SubjectKeyId)
7085
// remove from revoked noc root certs
7186
k.RemoveRevokedNocRootCertificates(ctx, certID.Subject, certID.SubjectKeyId)
7287
// remove from revoked list

0 commit comments

Comments
 (0)