diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-02-04 18:03:31 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-02-04 22:02:53 +0100 |
commit | cb4bb63030d09afe7ee78fd49613b86709fdc006 (patch) | |
tree | b33248ec5791faded576d4ca7d88851baefd136f | |
parent | 05b03c675090df893e8317983702c9661dfc319b (diff) |
uapi: allow unsetting device private key with /dev/null
-rw-r--r-- | device/noise-types.go | 9 | ||||
-rw-r--r-- | device/uapi.go | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/device/noise-types.go b/device/noise-types.go index 6b1f16f..a1976ff 100644 --- a/device/noise-types.go +++ b/device/noise-types.go @@ -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[:]) } diff --git a/device/uapi.go b/device/uapi.go index 999eeb5..72611ab 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -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} |