aboutsummaryrefslogtreecommitdiff
path: root/crypto/key.go
diff options
context:
space:
mode:
authorebiggers <ebiggers@google.com>2020-01-22 19:16:20 -0800
committerGitHub <noreply@github.com>2020-01-22 19:16:20 -0800
commit303616dc52e2b1e71883417a291f07c59025215d (patch)
tree7cbace927ccef0392706fff52d1a56cb906f52ee /crypto/key.go
parent059482129c5fdafebc582887a4ae4ef80988b708 (diff)
parent8cd1b3ba2e7a12cd68e2dfd0cbb5ec09ff92783b (diff)
Merge pull request #167 from ebiggers/recovery-passphrase
Automatically generate recovery passphrase when useful
Diffstat (limited to 'crypto/key.go')
-rw-r--r--crypto/key.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/crypto/key.go b/crypto/key.go
index 2220652..77adc95 100644
--- a/crypto/key.go
+++ b/crypto/key.go
@@ -195,6 +195,16 @@ func (key *Key) UnsafeToCString() unsafe.Pointer {
return data
}
+// Clone creates a key as a copy of another one.
+func (key *Key) Clone() (*Key, error) {
+ newKey, err := NewBlankKey(key.Len())
+ if err != nil {
+ return nil, err
+ }
+ copy(newKey.data, key.data)
+ return newKey, nil
+}
+
// NewKeyFromCString creates of a copy of some C string's data in a key. Note
// that the original C string is not modified at all, so steps must be taken to
// ensure that this original copy is secured.