# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

template("genopenssl_key") {
  forward_variables_from(invoker,
                         [
                           "openssl_pem_in_dir",
                           "openssl_pem_out_dir",
                         ])
  if (!defined(openssl_pem_in_dir)) {
    openssl_pem_in_dir = "."
  }
  openssl_pem_in_dir = rebase_path(openssl_pem_in_dir)
  pem_dir = "${root_gen_dir}/${openssl_pem_out_dir}"

  action_foreach(target_name) {
    sources = invoker.sources
    script = "//common-mk/file_generator_wrapper.py"
    outputs = [ "${pem_dir}/{{source_name_part}}.pub.pem" ]
    args = [
      "openssl",
      "rsa",
      "-in",
      "${openssl_pem_in_dir}/{{source_file_part}}",
      "-pubout",
      "-out",
      "${pem_dir}/{{source_name_part}}.pub.pem",
    ]
  }
}
