Skip to content

Commit f14b326

Browse files
NFC-46 Fix challenge and nonce and ocsp related issues
1 parent 3435762 commit f14b326

File tree

3 files changed

+22
-34
lines changed

3 files changed

+22
-34
lines changed

src/main/java/eu/webeid/security/authtoken/WebEidAuthToken.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public class WebEidAuthToken {
3333
private String signature;
3434
private String algorithm;
3535
private String format;
36+
private String challenge;
3637

37-
// NFC-specific fields
3838
private String unverifiedSigningCertificate;
3939
private List<SupportedSignatureAlgorithm> supportedSignatureAlgorithms;
4040

@@ -70,6 +70,14 @@ public void setFormat(String format) {
7070
this.format = format;
7171
}
7272

73+
public String getChallenge() {
74+
return challenge;
75+
}
76+
77+
public void setChallenge(String challenge) {
78+
this.challenge = challenge;
79+
}
80+
7381
public String getUnverifiedSigningCertificate() {
7482
return unverifiedSigningCertificate;
7583
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,6 @@ final class AuthTokenValidatorImpl implements AuthTokenValidator {
8787
new SubjectCertificatePolicyValidator(configuration.getDisallowedSubjectCertificatePolicies())::validateCertificatePolicies
8888
);
8989

90-
this.nfcAuthTokenValidator = new NfcAuthTokenValidator(
91-
simpleSubjectCertificateValidators,
92-
getCertTrustValidators()
93-
);
94-
9590
if (configuration.isUserCertificateRevocationCheckWithOcspEnabled()) {
9691
// The OCSP client may be provided by the API consumer.
9792
this.ocspClient = Objects.requireNonNull(ocspClient, "OCSP client must not be null when OCSP check is enabled");
@@ -102,6 +97,11 @@ final class AuthTokenValidatorImpl implements AuthTokenValidator {
10297
trustedCACertificateCertStore));
10398
}
10499

100+
this.nfcAuthTokenValidator = new NfcAuthTokenValidator(
101+
simpleSubjectCertificateValidators,
102+
this::getCertTrustValidators
103+
);
104+
105105
authTokenSignatureValidator = new AuthTokenSignatureValidator(configuration.getSiteOrigin());
106106
}
107107

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

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,3 @@
1-
/*
2-
* Copyright (c) 2020-2025 Estonian Information System Authority
3-
*
4-
* Permission is hereby granted, free of charge, to any person obtaining a copy
5-
* of this software and associated documentation files (the "Software"), to deal
6-
* in the Software without restriction, including without limitation the rights
7-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8-
* copies of the Software, and to permit persons to whom the Software is
9-
* furnished to do so, subject to the following conditions:
10-
*
11-
* The above copyright notice and this permission notice shall be included in all
12-
* copies or substantial portions of the Software.
13-
*
14-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20-
* SOFTWARE.
21-
*/
22-
231
package eu.webeid.security.validator;
242

253
import eu.webeid.security.authtoken.SupportedSignatureAlgorithm;
@@ -32,20 +10,21 @@
3210
import java.security.cert.X509Certificate;
3311
import java.util.List;
3412
import java.util.Set;
13+
import java.util.function.Supplier;
3514

3615
import static eu.webeid.security.util.Strings.isNullOrEmpty;
3716

3817
public class NfcAuthTokenValidator {
3918

4019
private final SubjectCertificateValidatorBatch simpleSubjectCertificateValidators;
41-
private final SubjectCertificateValidatorBatch certTrustValidators;
20+
private final Supplier<SubjectCertificateValidatorBatch> certTrustValidatorsSupplier;
4221

4322
NfcAuthTokenValidator(
4423
SubjectCertificateValidatorBatch simpleSubjectCertificateValidators,
45-
SubjectCertificateValidatorBatch certTrustValidators
24+
Supplier<SubjectCertificateValidatorBatch> certTrustValidatorsSupplier
4625
) {
4726
this.simpleSubjectCertificateValidators = simpleSubjectCertificateValidators;
48-
this.certTrustValidators = certTrustValidators;
27+
this.certTrustValidatorsSupplier = certTrustValidatorsSupplier;
4928
}
5029

5130
void validate(WebEidAuthToken token, X509Certificate subjectCertificate) throws AuthTokenException {
@@ -59,19 +38,20 @@ void validate(WebEidAuthToken token, X509Certificate subjectCertificate) throws
5938

6039
validateSupportedSignatureAlgorithms(token.getSupportedSignatureAlgorithms());
6140

62-
final X509Certificate signingCertificate = CertificateLoader.decodeCertificateFromBase64(token.getUnverifiedSigningCertificate());
41+
final X509Certificate signingCertificate =
42+
CertificateLoader.decodeCertificateFromBase64(token.getUnverifiedSigningCertificate());
6343

6444
if (!subjectCertificate.getSubjectX500Principal().equals(signingCertificate.getSubjectX500Principal())) {
6545
throw new AuthTokenParseException("Signing certificate subject does not match authentication certificate subject");
6646
}
6747

6848
simpleSubjectCertificateValidators.executeFor(signingCertificate);
69-
certTrustValidators.executeFor(signingCertificate);
49+
certTrustValidatorsSupplier.get().executeFor(signingCertificate);
7050
}
7151

7252
private static void validateSupportedSignatureAlgorithms(List<SupportedSignatureAlgorithm> algorithms) throws AuthTokenParseException {
7353
boolean hasInvalid = algorithms.stream().anyMatch(supportedSignatureAlgorithm ->
74-
!isValidCryptoAlgorithm(supportedSignatureAlgorithm.getCryptoAlgorithm())
54+
!isValidCryptoAlgorithm(supportedSignatureAlgorithm.getCryptoAlgorithm())
7555
|| !isValidHashFunction(supportedSignatureAlgorithm.getHashFunction())
7656
|| !isValidPaddingScheme(supportedSignatureAlgorithm.getPaddingScheme())
7757
);

0 commit comments

Comments
 (0)