age: add EncryptReader pull-based encryption API

Fixes #644
Fixes #654
Updates #638
This commit is contained in:
Filippo Valsorda
2025-12-25 20:48:28 +01:00
parent 92ac13f51c
commit ec92694aad
5 changed files with 245 additions and 66 deletions
+14 -2
View File
@@ -288,7 +288,7 @@ func testVectorRoundTrip(t *testing.T, v *vector) {
t.Run("STREAM", func(t *testing.T) {
nonce, payload := payload[:16], payload[16:]
key := streamKey(v.fileKey[:], nonce)
r, err := stream.NewReader(key, bytes.NewReader(payload))
r, err := stream.NewDecryptReader(key, bytes.NewReader(payload))
if err != nil {
t.Fatal(err)
}
@@ -297,7 +297,7 @@ func testVectorRoundTrip(t *testing.T, v *vector) {
t.Fatal(err)
}
buf := &bytes.Buffer{}
w, err := stream.NewWriter(key, buf)
w, err := stream.NewEncryptWriter(key, buf)
if err != nil {
t.Fatal(err)
}
@@ -310,6 +310,18 @@ func testVectorRoundTrip(t *testing.T, v *vector) {
if !bytes.Equal(buf.Bytes(), payload) {
t.Error("got a different STREAM ciphertext")
}
buf.Reset()
er, err := stream.NewEncryptReader(key, bytes.NewReader(plaintext))
if err != nil {
t.Fatal(err)
}
ciphertext, err := io.ReadAll(er)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(ciphertext, payload) {
t.Error("got a different STREAM ciphertext from EncryptReader")
}
})
}
}