summaryrefslogtreecommitdiffstats
path: root/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java
diff options
context:
space:
mode:
Diffstat (limited to 'security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java')
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java
new file mode 100644
index 00000000000..9631ab32334
--- /dev/null
+++ b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.security.tls;
+
+import java.util.Set;
+
+/**
+ * @author bjorncs
+ */
+public record AuthorizedPeers(Set<PeerPolicy> peerPolicies) {
+
+ private static final AuthorizedPeers EMPTY = new AuthorizedPeers(Set.of());
+
+ public AuthorizedPeers {
+ peerPolicies = verifyPeerPolicies(peerPolicies);
+ }
+
+ public static AuthorizedPeers empty() { return EMPTY; }
+
+ private static Set<PeerPolicy> verifyPeerPolicies(Set<PeerPolicy> peerPolicies) {
+ long distinctNames = peerPolicies.stream()
+ .map(PeerPolicy::policyName)
+ .distinct()
+ .count();
+ if (distinctNames != peerPolicies.size()) {
+ throw new IllegalArgumentException("'authorized-peers' contains entries with duplicate names");
+ }
+ return Set.copyOf(peerPolicies);
+ }
+
+ public boolean isEmpty() { return peerPolicies.isEmpty(); }
+
+}