aboutsummaryrefslogtreecommitdiff
path: root/keys.go
diff options
context:
space:
mode:
Diffstat (limited to 'keys.go')
-rw-r--r--keys.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/keys.go b/keys.go
new file mode 100644
index 0000000..d96d999
--- /dev/null
+++ b/keys.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "bytes"
+ "crypto/sha512"
+
+ "github.com/agl/ed25519"
+)
+
+type Sig struct {
+ PKAlg [2]byte
+ KeyNum [KeyNumLen]byte
+ Sig [ed25519.SignatureSize]byte
+}
+
+type PubKey struct {
+ PKAlg [2]byte
+ KeyNum [KeyNumLen]byte
+ PubKey [ed25519.PublicKeySize]byte
+}
+
+type EncKey struct {
+ PKAlg [2]byte
+ KDFAlg [2]byte
+ KDFRounds uint32 // network byte order
+ Salt [16]byte
+ Checksum [8]byte
+ KeyNum [KeyNumLen]byte
+ SecKey [ed25519.PrivateKeySize]byte
+}
+
+func (v *EncKey) Valid() bool {
+ sum := sha512.Sum512(v.SecKey[:])
+ return bytes.Equal(sum[:len(v.Checksum)], v.Checksum[:])
+}