@@ -54,30 +54,19 @@ func (k msgServer) ApproveRevokeX509RootCert(goCtx context.Context, msg *types.M
54
54
if ! found {
55
55
return nil , pkitypes .NewErrCertificateDoesNotExist (msg .Subject , msg .SubjectKeyId )
56
56
}
57
-
58
- var certBySerialNumber * types.Certificate
59
- // Assign the approvals to the root certificate
60
- for _ , cert := range certificates .Certs {
61
- if cert .IsRoot {
62
- cert .Approvals = revocation .Approvals
63
- }
64
- if msg .SerialNumber != "" && cert .SerialNumber == msg .SerialNumber {
65
- certBySerialNumber = cert
66
-
67
- break
68
- }
69
- }
70
57
certID := types.CertificateIdentifier {
71
58
Subject : msg .Subject ,
72
59
SubjectKeyId : msg .SubjectKeyId ,
73
60
}
74
- k .RemoveProposedCertificateRevocation (ctx , msg .Subject , msg .SubjectKeyId , msg .SerialNumber )
75
61
k .AddRevokedRootCertificate (ctx , certID )
62
+ k .RemoveProposedCertificateRevocation (ctx , msg .Subject , msg .SubjectKeyId , msg .SerialNumber )
76
63
64
+ certBySerialNumber , _ := findCertificate (msg .SerialNumber , & certificates .Certs )
77
65
if certBySerialNumber != nil {
78
- k ._removeAndRevokeBySerialNumber (ctx , certBySerialNumber , certID , certificates )
66
+ certBySerialNumber .Approvals = revocation .Approvals
67
+ k ._removeAndRevokeBySerialNumber (ctx , certBySerialNumber , certificates )
79
68
} else {
80
- k ._removeAndRevoke (ctx , certID , certificates )
69
+ k ._removeAndRevoke (ctx , revocation . Approvals , certificates )
81
70
}
82
71
} else {
83
72
k .SetProposedCertificateRevocation (ctx , revocation )
@@ -86,30 +75,44 @@ func (k msgServer) ApproveRevokeX509RootCert(goCtx context.Context, msg *types.M
86
75
return & types.MsgApproveRevokeX509RootCertResponse {}, nil
87
76
}
88
77
89
- func (k msgServer ) _removeAndRevoke (ctx sdk.Context , certID types.CertificateIdentifier , certificates types.ApprovedCertificates ) {
90
- k .AddRevokedCertificates (ctx , certificates )
91
- k .RemoveApprovedCertificates (ctx , certID .Subject , certID .SubjectKeyId )
92
- k .RevokeChildCertificates (ctx , certID .Subject , certID .SubjectKeyId )
93
-
78
+ func (k msgServer ) _removeAndRevoke (ctx sdk.Context , approvals []* types.Grant , certificates types.ApprovedCertificates ) {
79
+ // Assign the approvals to the root certificate
80
+ for _ , cert := range certificates .Certs {
81
+ if cert .IsRoot {
82
+ cert .Approvals = approvals
83
+ }
84
+ }
85
+ certID := types.CertificateIdentifier {
86
+ Subject : certificates .Subject ,
87
+ SubjectKeyId : certificates .SubjectKeyId ,
88
+ }
94
89
// remove from root certs index, add to revoked root certs
95
90
k .RemoveApprovedRootCertificate (ctx , certID )
91
+ k .AddRevokedCertificates (ctx , certificates )
92
+ k .RemoveApprovedCertificates (ctx , certificates .Subject , certificates .SubjectKeyId )
93
+ k .RevokeChildCertificates (ctx , certificates .Subject , certificates .SubjectKeyId )
96
94
// remove from subject -> subject key ID map
97
- k .RemoveApprovedCertificateBySubject (ctx , certID .Subject , certID .SubjectKeyId )
95
+ k .RemoveApprovedCertificateBySubject (ctx , certificates .Subject , certificates .SubjectKeyId )
98
96
// remove from subject key ID -> certificates map
99
- k .RemoveApprovedCertificatesBySubjectKeyID (ctx , certID .Subject , certID .SubjectKeyId )
97
+ k .RemoveApprovedCertificatesBySubjectKeyID (ctx , certificates .Subject , certificates .SubjectKeyId )
100
98
}
101
- func (k msgServer ) _removeAndRevokeBySerialNumber (ctx sdk.Context , cert * types.Certificate , certID types. CertificateIdentifier , certificates types.ApprovedCertificates ) {
99
+ func (k msgServer ) _removeAndRevokeBySerialNumber (ctx sdk.Context , cert * types.Certificate , certificates types.ApprovedCertificates ) {
102
100
k .AddRevokedCertificates (ctx ,
103
101
types.ApprovedCertificates {
104
102
Subject : cert .Subject ,
105
103
SubjectKeyId : cert .SubjectKeyId ,
106
104
Certs : []* types.Certificate {cert },
107
105
})
108
- k .removeCertFromList (cert .SerialNumber , & certificates )
106
+ k .removeCertFromList (cert .Issuer , cert . SerialNumber , & certificates )
109
107
if len (certificates .Certs ) == 0 {
110
108
k .RemoveApprovedCertificates (ctx , cert .Subject , cert .SubjectKeyId )
111
109
k .RevokeChildCertificates (ctx , cert .Subject , cert .SubjectKeyId )
112
- k .RemoveApprovedRootCertificate (ctx , certID )
110
+ k .RemoveApprovedRootCertificate (ctx ,
111
+ types.CertificateIdentifier {
112
+ Subject : certificates .Subject ,
113
+ SubjectKeyId : certificates .SubjectKeyId ,
114
+ },
115
+ )
113
116
k .RemoveApprovedCertificateBySubject (ctx , cert .Subject , cert .SubjectKeyId )
114
117
k .RemoveApprovedCertificatesBySubjectKeyID (ctx , cert .Subject , cert .SubjectKeyId )
115
118
} else {
0 commit comments