aboutsummaryrefslogtreecommitdiff
path: root/kdf.go
diff options
context:
space:
mode:
Diffstat (limited to 'kdf.go')
-rw-r--r--kdf.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/kdf.go b/kdf.go
new file mode 100644
index 0000000..8926216
--- /dev/null
+++ b/kdf.go
@@ -0,0 +1,21 @@
+package main
+
+import (
+ "dim13.org/signify/bhash"
+ "dim13.org/signify/key"
+)
+
+func Kdf(enc *key.Enc, ask func() (string, error)) error {
+ if enc.KDFRounds == 0 {
+ return nil
+ }
+ pass, err := ask()
+ if err != nil {
+ return err
+ }
+ xor := bhash.Pbkdf([]byte(pass), enc.Salt[:], int(enc.KDFRounds), len(enc.Key))
+ for i := range xor {
+ enc.Key[i] ^= xor[i]
+ }
+ return nil
+}