| # Copyright 2018 The Fuchsia Authors. All rights reserved. | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | declare_args() { | 
 |   # Location of CloudKMS crypto keys within the fuchsia infra GCE project. | 
 |   cloudkms_key_dir = | 
 |       "projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys" | 
 | } | 
 |  | 
 | # Describes a 'secret', a plaintext to be supplied to a test at runtime. The | 
 | # JSON spec of the secret and its associated ciphertext file will be written to | 
 | # $root_build_dir/secret_specs/$target_name.json | 
 | # and | 
 | # $root_build_dir/secret_spec/ciphertext/$target_name.ciphertext | 
 | # respectively. | 
 | # | 
 | # Parameters | 
 | # | 
 | #   key_name | 
 | #     Required: Name of the private key used for encryption. It is assumed that this key | 
 | #     lives in CloudKMS at | 
 | #     projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys/<key_name> | 
 | # | 
 | #   ciphertext_file | 
 | #     Required: Relative path to a text file containing the encrypted plaintext | 
 | #     (maximum 64KiB) | 
 | template("secret_spec") { | 
 |   assert(defined(invoker.key_name), "key_name must be defined.") | 
 |   assert(defined(invoker.ciphertext_file), "ciphertext_file must be defined.") | 
 |  | 
 |   secret_spec_dir = "$root_build_dir/secret_specs" | 
 |  | 
 |   copy(target_name) { | 
 |     sources = [ | 
 |       invoker.ciphertext_file, | 
 |     ] | 
 |     outputs = [ | 
 |       "$secret_spec_dir/ciphertext/$target_name.ciphertext", | 
 |     ] | 
 |   } | 
 |  | 
 |   secret_spec = { | 
 |     cloudkms_key_path = "$cloudkms_key_dir/${invoker.key_name}" | 
 |     ciphertext_file = invoker.ciphertext_file | 
 |   } | 
 |  | 
 |   write_file("$secret_spec_dir/$target_name.json", secret_spec, "json") | 
 | } |