@@ -26,14 +26,30 @@ func (k msgServer) RemoveNocX509RootCert(goCtx context.Context, msg *types.MsgRe
26
26
signerAccount , _ := k .dclauthKeeper .GetAccountO (ctx , signerAddr )
27
27
accountVid := signerAccount .VendorID
28
28
29
- nocCerts , foundActive := k .GetNocRootCertificatesByVidAndSkid (ctx , accountVid , msg .SubjectKeyId )
29
+ nocCerts , foundActive := k .GetApprovedCertificates (ctx , msg . Subject , msg .SubjectKeyId )
30
30
revCerts , foundRevoked := k .GetRevokedNocRootCertificates (ctx , msg .Subject , msg .SubjectKeyId )
31
31
certificates := nocCerts .Certs
32
32
certificates = append (certificates , revCerts .Certs ... )
33
33
if len (certificates ) == 0 {
34
34
return nil , pkitypes .NewErrCertificateDoesNotExist (msg .Subject , msg .SubjectKeyId )
35
35
}
36
36
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
+
37
53
certID := types.CertificateIdentifier {
38
54
Subject : msg .Subject ,
39
55
SubjectKeyId : msg .SubjectKeyId ,
@@ -50,23 +66,22 @@ func (k msgServer) RemoveNocX509RootCert(goCtx context.Context, msg *types.MsgRe
50
66
51
67
if foundActive {
52
68
// 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 )
56
71
57
72
// 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 )
60
75
}
61
76
62
77
if foundRevoked {
63
78
removeCertFromList (certBySerialNumber .Issuer , certBySerialNumber .SerialNumber , & revCerts .Certs )
64
79
k ._removeRevokedNocX509RootCert (ctx , certID , & revCerts )
65
80
}
66
81
} else {
67
- k .RemoveNocRootCertificate (ctx , nocCerts . Vid , certID .Subject , certID .SubjectKeyId )
82
+ k .RemoveNocRootCertificate (ctx , accountVid , certID .Subject , certID .SubjectKeyId )
68
83
// remove from vid, subject key id map
69
- k .RemoveNocRootCertificatesByVidAndSkid (ctx , nocCerts . Vid , certID .SubjectKeyId )
84
+ k .RemoveNocRootCertificatesByVidAndSkid (ctx , accountVid , certID .SubjectKeyId )
70
85
// remove from revoked noc root certs
71
86
k .RemoveRevokedNocRootCertificates (ctx , certID .Subject , certID .SubjectKeyId )
72
87
// remove from revoked list
0 commit comments