48 lines
983 B
Go
48 lines
983 B
Go
package agehd
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"testing"
|
|
|
|
"filippo.io/age"
|
|
)
|
|
|
|
const mnemonic = "abandon abandon abandon abandon abandon " +
|
|
"abandon abandon abandon abandon abandon abandon about"
|
|
|
|
func TestEncryptDecrypt(t *testing.T) {
|
|
id, err := DeriveIdentity(mnemonic, 0)
|
|
if err != nil {
|
|
t.Fatalf("derive: %v", err)
|
|
}
|
|
|
|
t.Logf("secret: %s", id.String())
|
|
t.Logf("recipient: %s", id.Recipient().String())
|
|
|
|
var ct bytes.Buffer
|
|
w, err := age.Encrypt(&ct, id.Recipient())
|
|
if err != nil {
|
|
t.Fatalf("encrypt init: %v", err)
|
|
}
|
|
if _, err = io.WriteString(w, "hello world"); err != nil {
|
|
t.Fatalf("write: %v", err)
|
|
}
|
|
if err = w.Close(); err != nil {
|
|
t.Fatalf("encrypt close: %v", err)
|
|
}
|
|
|
|
r, err := age.Decrypt(bytes.NewReader(ct.Bytes()), id)
|
|
if err != nil {
|
|
t.Fatalf("decrypt init: %v", err)
|
|
}
|
|
dec, err := io.ReadAll(r)
|
|
if err != nil {
|
|
t.Fatalf("read: %v", err)
|
|
}
|
|
|
|
if got := string(dec); got != "hello world" {
|
|
t.Fatalf("round-trip mismatch: %q", got)
|
|
}
|
|
}
|