this repo has no description
at main 35 lines 852 B view raw
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}