in tink-envelope-encryption-sample/encrypted_keyset_cli.go [99:145]
func processFile(mode string, outputPath string, inputPath string, keysetPath string, associatedData string, masterKey tink.AEAD) error {
// Read the encrypted keyset
keysetFile, err := os.Open(keysetPath)
if err != nil {
log.Fatal("error opening keyset file: %v", err)
}
defer keysetFile.Close()
keysetHandle, err := keyset.Read(keyset.NewJSONReader(keysetFile), masterKey)
if err != nil {
log.Fatal("error reading encrypted keyset: %v", err)
}
// Get the primitive
cipher, err := aead.New(keysetHandle)
if err != nil {
log.Fatal("error getting primitive: %v", err)
}
// Read the input file
inputData, err := os.ReadFile(inputPath)
if err != nil {
log.Fatal("error reading input file: %v", err)
}
var outputData []byte
if mode == "encrypt" {
outputData, err = cipher.Encrypt(inputData, []byte(associatedData))
if err != nil {
log.Fatal("error encrypting data: %v", err)
}
}
if mode == "decrypt" {
outputData, err = cipher.Decrypt(inputData, []byte(associatedData))
if err != nil {
log.Fatal("error decrypting data: %v", err)
}
}
// Write the output file
if err := os.WriteFile(outputPath, outputData, 0644); err != nil {
log.Fatal("error writing output file: %v", err)
}
return nil
}