summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2022-11-14 14:19:18 +0100
committergjoranv <gv@verizonmedia.com>2022-11-15 10:37:19 +0100
commitbc24031511038576f304dcc37974e2058d93a390 (patch)
tree1b8a79dc4d5393054ba8d90e4615485194208f50 /config-provisioning
parentd9394d9c527ff1ef36729861eb29a2da76768fde (diff)
Add 'wireguardPubKey' field to Node
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java b/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java
new file mode 100644
index 00000000000..4df6d402ce3
--- /dev/null
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java
@@ -0,0 +1,30 @@
+package com.yahoo.config.provision;
+
+import ai.vespa.validation.PatternedStringWrapper;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps a Wireguard key.
+ * For security reasons, this should only be used for public keys, although private keys use the same format.
+ *
+ * @author gjoranv
+ */
+public class WireguardKey extends PatternedStringWrapper<WireguardKey> {
+
+ // See https://lists.zx2c4.com/pipermail/wireguard/2020-December/006222.html
+ private static final Pattern pattern = Pattern.compile("^[A-Za-z0-9+/]{42}[A|E|I|M|Q|U|Y|c|g|k|o|s|w|4|8|0]=$");
+
+ public WireguardKey(String value) {
+ super(value, pattern, "Wireguard key");
+ }
+
+ public static WireguardKey from(String value) {
+ return new WireguardKey(value);
+ }
+
+ @Override
+ public String toString() {
+ return "Wireguard key '" + value() + "'";
+ }
+}