this repo has no description
1package crypto
2
3import (
4 "bytes"
5 "fmt"
6 "io"
7 "os"
8
9 "filippo.io/age"
10)
11
12// DecryptFile decrypts the given file using the given identities
13func DecryptFile(inputPath string, identities []age.Identity) ([]byte, error) {
14 data, err := os.ReadFile(inputPath)
15 if err != nil {
16 return nil, fmt.Errorf("failed to read encrypted file: %w", err)
17 }
18 return DecryptBytes(data, identities)
19}
20
21// DecryptBytes decrypts the given bytes using the given identities
22func DecryptBytes(encrypted []byte, identities []age.Identity) ([]byte, error) {
23
24 dec, err := age.Decrypt(bytes.NewReader(encrypted), identities...)
25 if err != nil {
26 return nil, fmt.Errorf("age decryption failed: %w", err)
27 }
28
29 var out bytes.Buffer
30 if _, err := io.Copy(&out, dec); err != nil {
31 return nil, fmt.Errorf("failed to read decrypted data: %w", err)
32 }
33
34 return out.Bytes(), nil
35}