summaryrefslogtreecommitdiffstats
path: root/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
diff options
context:
space:
mode:
Diffstat (limited to 'security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java')
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java25
1 files changed, 22 insertions, 3 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
index 4f028d8b1ab..1eef3a67521 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
@@ -11,18 +11,32 @@ public class RequiredPeerCredential {
public enum Field { CN, SAN_DNS }
private final Field field;
- private final HostGlobPattern pattern;
+ private final Pattern pattern;
- public RequiredPeerCredential(Field field, HostGlobPattern pattern) {
+ private RequiredPeerCredential(Field field, Pattern pattern) {
this.field = field;
this.pattern = pattern;
}
+ public static RequiredPeerCredential of(Field field, String pattern) {
+ return new RequiredPeerCredential(field, createPattern(field, pattern));
+ }
+
+ private static Pattern createPattern(Field field, String pattern) {
+ switch (field) {
+ case CN:
+ case SAN_DNS:
+ return new HostGlobPattern(pattern);
+ default:
+ throw new IllegalArgumentException("Unknown field: " + field);
+ }
+ }
+
public Field field() {
return field;
}
- public HostGlobPattern pattern() {
+ public Pattern pattern() {
return pattern;
}
@@ -47,4 +61,9 @@ public class RequiredPeerCredential {
public int hashCode() {
return Objects.hash(field, pattern);
}
+
+ public interface Pattern {
+ String asString();
+ boolean matches(String fieldValue);
+ }
}