From bfae75d93d3a2da9d8e07600fc9608eeacfd3026 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 22 Dec 2025 22:01:58 +0100 Subject: [PATCH] age,plugin: wrap more errors --- age.go | 10 +++++++--- plugin/client.go | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/age.go b/age.go index 00c39f6..91314b4 100644 --- a/age.go +++ b/age.go @@ -137,7 +137,7 @@ func Encrypt(dst io.Writer, recipients ...Recipient) (io.WriteCloser, error) { for i, r := range recipients { stanzas, l, err := wrapWithLabels(r, fileKey) if err != nil { - return nil, fmt.Errorf("failed to wrap key for recipient #%d: %v", i, err) + return nil, fmt.Errorf("failed to wrap key for recipient #%d: %w", i, err) } sort.Strings(l) if i == 0 { @@ -155,7 +155,7 @@ func Encrypt(dst io.Writer, recipients ...Recipient) (io.WriteCloser, error) { hdr.MAC = mac } if err := hdr.Marshal(dst); err != nil { - return nil, fmt.Errorf("failed to write header: %v", err) + return nil, fmt.Errorf("failed to write header: %w", err) } nonce := make([]byte, streamNonceSize) @@ -163,7 +163,7 @@ func Encrypt(dst io.Writer, recipients ...Recipient) (io.WriteCloser, error) { return nil, err } if _, err := dst.Write(nonce); err != nil { - return nil, fmt.Errorf("failed to write nonce: %v", err) + return nil, fmt.Errorf("failed to write nonce: %w", err) } return stream.NewWriter(streamKey(fileKey, nonce), dst) @@ -210,6 +210,10 @@ func (*NoIdentityMatchError) Error() string { return "no identity matched any of the recipients" } +func (e *NoIdentityMatchError) Unwrap() []error { + return e.Errors +} + // Decrypt decrypts a file encrypted to one or more identities. // // It returns a Reader reading the decrypted plaintext of the age file read diff --git a/plugin/client.go b/plugin/client.go index cd3a852..c2b62b4 100644 --- a/plugin/client.go +++ b/plugin/client.go @@ -76,7 +76,7 @@ func (r *Recipient) WrapWithLabels(fileKey []byte) (stanzas []*age.Stanza, label conn, err := openClientConnection(r.name, "recipient-v1") if err != nil { - return nil, nil, fmt.Errorf("couldn't start plugin: %v", err) + return nil, nil, fmt.Errorf("couldn't start plugin: %w", err) } defer conn.Close() @@ -229,7 +229,7 @@ func (i *Identity) Unwrap(stanzas []*age.Stanza) (fileKey []byte, err error) { conn, err := openClientConnection(i.name, "identity-v1") if err != nil { - return nil, fmt.Errorf("couldn't start plugin: %v", err) + return nil, fmt.Errorf("couldn't start plugin: %w", err) } defer conn.Close()