func processFile()

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
}