age: add EncryptReader pull-based encryption API

Fixes #644
Fixes #654
Updates #638
This commit is contained in:
Filippo Valsorda
2025-12-25 19:50:48 +01:00
parent 92ac13f51c
commit ec92694aad
5 changed files with 245 additions and 66 deletions

View File

@@ -486,3 +486,30 @@ func TestDetachedHeader(t *testing.T) {
t.Errorf("wrong data: %q, expected %q", outBytes, helloWorld)
}
}
func TestEncryptReader(t *testing.T) {
a, err := age.GenerateX25519Identity()
if err != nil {
t.Fatal(err)
}
r, err := age.EncryptReader(strings.NewReader(helloWorld), a.Recipient())
if err != nil {
t.Fatal(err)
}
buf := &bytes.Buffer{}
if _, err := io.Copy(buf, r); err != nil {
t.Fatal(err)
}
out, err := age.Decrypt(buf, a)
if err != nil {
t.Fatal(err)
}
outBytes, err := io.ReadAll(out)
if err != nil {
t.Fatal(err)
}
if string(outBytes) != helloWorld {
t.Errorf("wrong data: %q, excepted %q", outBytes, helloWorld)
}
}