diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-07-19 14:30:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-19 14:30:27 +0200 |
commit | 46ba1b00aa19e937e2c257b34c23417adeef56eb (patch) | |
tree | 7e595f7ca0c17bc74b07c18472f4cd2d4f57c4d4 /security-utils/src/main/java/com/yahoo/security/tls/policy | |
parent | 8be6dd28753425126507b68c93a24607124871eb (diff) | |
parent | 529a26d7e1062a006196366454f1a047ca31202c (diff) |
Merge pull request #23496 from vespa-engine/bjorncs/capabilitiesv8.21.11
Bjorncs/capabilities
Diffstat (limited to 'security-utils/src/main/java/com/yahoo/security/tls/policy')
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java | 6 | ||||
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/policy/CapabilitySet.java | 15 |
2 files changed, 19 insertions, 2 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java index 136022e2ed9..5e49a5b341c 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java @@ -8,10 +8,14 @@ import java.util.Set; */ 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) @@ -23,4 +27,6 @@ public record AuthorizedPeers(Set<PeerPolicy> peerPolicies) { return Set.copyOf(peerPolicies); } + public boolean isEmpty() { return peerPolicies.isEmpty(); } + } diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/CapabilitySet.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/CapabilitySet.java index 44ff1eedfb0..50de98c621c 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/policy/CapabilitySet.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/CapabilitySet.java @@ -3,10 +3,12 @@ package com.yahoo.security.tls.policy; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import java.util.stream.Collectors; @@ -56,18 +58,27 @@ public class CapabilitySet { return new CapabilitySet(caps); } + public static CapabilitySet unionOf(Collection<CapabilitySet> capSets) { + EnumSet<Capability> union = EnumSet.noneOf(Capability.class); + capSets.forEach(cs -> union.addAll(cs.caps)); + return new CapabilitySet(union); + } + public static CapabilitySet from(EnumSet<Capability> caps) { return new CapabilitySet(EnumSet.copyOf(caps)); } public static CapabilitySet from(Collection<Capability> caps) { return new CapabilitySet(EnumSet.copyOf(caps)); } public static CapabilitySet from(Capability... caps) { return new CapabilitySet(EnumSet.copyOf(List.of(caps))); } public static CapabilitySet all() { return ALL_CAPABILITIES; } public static CapabilitySet none() { return NO_CAPABILITIES; } - public boolean hasAllCapabilities() { return this.caps.equals(ALL_CAPABILITIES.caps); } + public boolean hasAll() { return this.caps.equals(ALL_CAPABILITIES.caps); } + public boolean hasNone() { return this.caps.equals(NO_CAPABILITIES.caps); } - public SortedSet<String> toCapabilityNames() { + public SortedSet<String> toNames() { return caps.stream().map(Capability::asString).collect(Collectors.toCollection(TreeSet::new)); } + public Set<Capability> asSet() { return Collections.unmodifiableSet(caps); } + @Override public String toString() { return "CapabilitySet{" + |