]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
uapi: allow unsetting device private key with /dev/null
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 4 Feb 2020 17:03:31 +0000 (18:03 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 4 Feb 2020 21:02:53 +0000 (22:02 +0100)
device/noise-types.go
device/uapi.go

index 6b1f16f5179ba674ee6e523d9e51eb1844d4d8bf..a1976ff8384de82bf9584981a379950424a1c049 100644 (file)
@@ -52,6 +52,15 @@ func (key *NoisePrivateKey) FromHex(src string) (err error) {
        return
 }
 
+func (key *NoisePrivateKey) FromMaybeZeroHex(src string) (err error) {
+       err = loadExactHex(key[:], src)
+       if key.IsZero() {
+               return
+       }
+       key.clamp()
+       return
+}
+
 func (key NoisePrivateKey) ToHex() string {
        return hex.EncodeToString(key[:])
 }
index 999eeb5a02862906eade2e1b44a3eb32cdac2d93..72611ab5e93cdf2432a3bbfc3d9dcbed7dba0840 100644 (file)
@@ -138,7 +138,7 @@ func (device *Device) IpcSetOperation(socket *bufio.Reader) *IPCError {
                        switch key {
                        case "private_key":
                                var sk NoisePrivateKey
-                               err := sk.FromHex(value)
+                               err := sk.FromMaybeZeroHex(value)
                                if err != nil {
                                        logError.Println("Failed to set private_key:", err)
                                        return &IPCError{ipc.IpcErrorInvalid}