diff options
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.java | 25 |
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); + } } |