Skip to content

Commit b0bd067

Browse files
SanderKondratjevNortalmrts
authored andcommitted
NFC-171 Allow compatible Web eID minor versions
Signed-off-by: Sander Kondratjev <sander.kondratjev@nortal.com> Co-authored-by: Mart Somermaa <mrts@users.noreply.github.com>
1 parent 87840fe commit b0bd067

4 files changed

Lines changed: 17 additions & 11 deletions

File tree

src/main/java/eu/webeid/security/validator/versionvalidators/AuthTokenVersion11Validator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,13 @@
5454
import java.util.Arrays;
5555
import java.util.List;
5656
import java.util.Set;
57+
import java.util.regex.Pattern;
5758

5859
import static eu.webeid.security.util.Strings.isNullOrEmpty;
5960

6061
class AuthTokenVersion11Validator extends AuthTokenVersion1Validator implements AuthTokenVersionValidator {
6162

62-
private static final Set<String> V11_SUPPORTED_TOKEN_FORMAT = Set.of("web-eid:1.1");
63+
private static final Pattern V11_SUPPORTED_TOKEN_FORMAT_PATTERN = Pattern.compile("^web-eid:1\\.1$");
6364
private static final Set<String> SUPPORTED_SIGNING_CRYPTO_ALGORITHMS = Set.of("ECC", "RSA");
6465
private static final Set<String> SUPPORTED_SIGNING_PADDING_SCHEMES = Set.of("NONE", "PKCS1.5", "PSS");
6566
private static final Set<String> SUPPORTED_SIGNING_HASH_FUNCTIONS = Set.of(
@@ -94,8 +95,8 @@ public AuthTokenVersion11Validator(
9495
}
9596

9697
@Override
97-
public boolean supports(String format) {
98-
return format != null && V11_SUPPORTED_TOKEN_FORMAT.contains(format);
98+
protected Pattern getSupportedFormatPattern() {
99+
return V11_SUPPORTED_TOKEN_FORMAT_PATTERN;
99100
}
100101

101102
@Override

src/main/java/eu/webeid/security/validator/versionvalidators/AuthTokenVersion1Validator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@
3636
import java.security.cert.TrustAnchor;
3737
import java.security.cert.X509Certificate;
3838
import java.util.Set;
39+
import java.util.regex.Pattern;
3940

4041
class AuthTokenVersion1Validator implements AuthTokenVersionValidator {
4142

4243
private static final String V1_SUPPORTED_TOKEN_FORMAT_PREFIX = "web-eid:1";
43-
private static final Set<String> SUPPORTED_TOKEN_FORMATS = Set.of(V1_SUPPORTED_TOKEN_FORMAT_PREFIX, "web-eid:1.0");
44+
private static final Pattern V1_SUPPORTED_TOKEN_FORMAT_PATTERN = Pattern.compile("^web-eid:1(?:\\.\\d+)?$");
4445
private final SubjectCertificateValidatorBatch simpleSubjectCertificateValidators;
4546
private final Set<TrustAnchor> trustedCACertificateAnchors;
4647
private final CertStore trustedCACertificateCertStore;
@@ -69,7 +70,11 @@ public AuthTokenVersion1Validator(
6970

7071
@Override
7172
public boolean supports(String format) {
72-
return format != null && SUPPORTED_TOKEN_FORMATS.contains(format);
73+
return format != null && getSupportedFormatPattern().matcher(format).matches();
74+
}
75+
76+
protected Pattern getSupportedFormatPattern() {
77+
return V1_SUPPORTED_TOKEN_FORMAT_PATTERN;
7378
}
7479

7580
@Override

src/test/java/eu/webeid/security/validator/versionvalidators/AuthTokenVersion11ValidatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ void setUp() {
8383

8484
@ParameterizedTest
8585
@ValueSource(strings = {"web-eid:1.1"})
86-
void whenFormatIsV11OrPrefixedVariant_thenSupportsReturnsTrue(String format) {
86+
void whenFormatIsV11_thenSupportsReturnsTrue(String format) {
8787
assertThat(validator.supports(format)).isTrue();
8888
}
8989

9090
@ParameterizedTest
9191
@NullAndEmptySource
92-
@ValueSource(strings = {"web-eid:1", "web-eid:1.0", "web-eid:1.1.0", "web-eid:1.10", "web-eid:2", "webauthn:1.1"})
92+
@ValueSource(strings = {"web-eid:1", "web-eid:1.0", "web-eid:1.1.0", "web-eid:1.10", "web-eid:1.2", "web-eid:2", "webauthn:1.1"})
9393
void whenFormatIsNullEmptyOrNotV11_thenSupportsReturnsFalse(String format) {
9494
assertThat(validator.supports(format)).isFalse();
9595
}

src/test/java/eu/webeid/security/validator/versionvalidators/AuthTokenVersion1ValidatorTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ class AuthTokenVersion1ValidatorTest {
6161
);
6262

6363
@ParameterizedTest
64-
@ValueSource(strings = {"web-eid:1", "web-eid:1.0"})
65-
void whenFormatIsV1OrV10_thenSupportsReturnsTrue(String format) {
64+
@ValueSource(strings = {"web-eid:1", "web-eid:1.0", "web-eid:1.1", "web-eid:1.10", "web-eid:1.999"})
65+
void whenFormatIsValidMajorV1Format_thenSupportsReturnsTrue(String format) {
6666
assertThat(validator.supports(format)).isTrue();
6767
}
6868

6969
@ParameterizedTest
7070
@NullAndEmptySource
71-
@ValueSource(strings = {"web-eid", "web-eid:1.1", "web-eid:1.10", "web-eid:0.9", "web-eid:2", "webauthn:1"})
72-
void whenFormatIsNullEmptyOrNotV1_thenSupportsReturnsFalse(String format) {
71+
@ValueSource(strings = {"web-eid", "web-eid:1.", "web-eid:1.0TEST", "web-eid:1.1.0", "web-eid:0.9", "web-eid:2", "webauthn:1"})
72+
void whenFormatIsNullEmptyOrMalformedOrNotV1_thenSupportsReturnsFalse(String format) {
7373
assertThat(validator.supports(format)).isFalse();
7474
}
7575

0 commit comments

Comments
 (0)