Skip to content

Commit 1a1f3f2

Browse files
committed
Only perform OCSP check after signature validation to avoid unnecessary OCSP requests and require adding OcspValidationInfo on signature validation exceptions.
1 parent 9ac02d7 commit 1a1f3f2

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/main/java/eu/webeid/security/validator/AuthTokenValidatorImpl.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ private ValidationInfo validateToken(WebEidAuthToken token, String currentChalle
163163
final X509Certificate subjectCertificate = CertificateLoader.decodeCertificateFromBase64(token.getUnverifiedCertificate());
164164

165165
simpleSubjectCertificateValidators.executeFor(subjectCertificate);
166-
OcspValidationInfo ocspValidationInfo = validateCertificateTrust(subjectCertificate);
166+
final SubjectCertificateTrustedValidator certTrustedValidator = validateCertificateTrust(subjectCertificate);
167167

168168
// It is guaranteed that if the signature verification succeeds, then the origin and challenge
169169
// have been implicitly and correctly verified without the need to implement any additional checks.
@@ -172,6 +172,7 @@ private ValidationInfo validateToken(WebEidAuthToken token, String currentChalle
172172
subjectCertificate.getPublicKey(),
173173
currentChallengeNonce);
174174

175+
final OcspValidationInfo ocspValidationInfo = validateCertificateRevocationStatus(certTrustedValidator, subjectCertificate);
175176
return new ValidationInfo(subjectCertificate, ocspValidationInfo);
176177
}
177178

@@ -183,12 +184,16 @@ private ValidationInfo validateToken(WebEidAuthToken token, String currentChalle
183184
*
184185
* @return ocsp validation information if revocation check is performed, null otherwise
185186
*/
186-
private OcspValidationInfo validateCertificateTrust(X509Certificate subjectCertificate) throws AuthTokenException {
187-
final SubjectCertificateTrustedValidator certTrustedValidator =
188-
new SubjectCertificateTrustedValidator(trustedCACertificateAnchors, trustedCACertificateCertStore);
187+
private SubjectCertificateTrustedValidator validateCertificateTrust(X509Certificate subjectCertificate) throws AuthTokenException {
188+
SubjectCertificateTrustedValidator certTrustedValidator = new SubjectCertificateTrustedValidator(trustedCACertificateAnchors, trustedCACertificateCertStore);
189189
certTrustedValidator.validateCertificateTrusted(subjectCertificate);
190-
return configuration.isUserCertificateRevocationCheckWithOcspEnabled() ? new SubjectCertificateNotRevokedValidator(resilientOcspService, certTrustedValidator)
191-
.validateCertificateNotRevoked(subjectCertificate) : null;
190+
return certTrustedValidator;
192191
}
193192

193+
private OcspValidationInfo validateCertificateRevocationStatus(SubjectCertificateTrustedValidator certTrustedValidator, X509Certificate subjectCertificate) throws AuthTokenException {
194+
return configuration.isUserCertificateRevocationCheckWithOcspEnabled()
195+
? new SubjectCertificateNotRevokedValidator(resilientOcspService, certTrustedValidator)
196+
.validateCertificateNotRevoked(subjectCertificate)
197+
: null;
198+
}
194199
}

0 commit comments

Comments
 (0)