accessory: make create_new_hammer_like_keys generates correct key name

create_new_hammer_like_keys.sh generates a key pair with hard-coded
filename "key_hammerlike.*". And we usually ask the croskeymanagers
team to manually rename it to the correct device name (e.g.
b:213403966). The manual step sometimes confuses people.

Modify the script to make create_new_hammer_like_keys.sh takes an extra
keyname argument and generates the correct filename at once.

BUG=b:213922329
TEST=1) normal usage
       ./create_new_hammer_like_keys.sh foo
     2) error (two keyname provided)
       ./create_new_hammer_like_keys.sh foo bar
     3) error (missing keyname)
       ./create_new_hammer_like_keys.sh
     4) also check efs keygen
       ./create_new_ec_efs_key.sh
BRANCH=none

Change-Id: I2a2e24b77961ea2d744ac65d835446a74381e004
Signed-off-by: Ting Shen <phoenixshen@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3398389
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
diff --git a/scripts/keygeneration/accessory/common_leverage_hammer.sh b/scripts/keygeneration/accessory/common_leverage_hammer.sh
index 1e0f712..7c51af1 100644
--- a/scripts/keygeneration/accessory/common_leverage_hammer.sh
+++ b/scripts/keygeneration/accessory/common_leverage_hammer.sh
@@ -7,13 +7,27 @@
 # Load common constants and functions.
 . "$(dirname "$0")/../common.sh"
 
+: "${HAS_ARG_KEYNAME:=}"
+
 usage() {
-  cat <<EOF
+  if [[ -n "${HAS_ARG_KEYNAME}" ]]; then
+    cat <<EOF
+Usage: ${PROG} <keyname> [options]
+
+Arguments:
+  keyname:                   Name of the hammer device (e.g. Staff, Wand).
+
+Options:
+  -o, --output_dir <dir>:    Where to write the keys (default is cwd)
+EOF
+  else
+    cat <<EOF
 Usage: ${PROG} [options]
 
 Options:
   -o, --output_dir <dir>:    Where to write the keys (default is cwd)
 EOF
+  fi
 
   if [[ $# -ne 0 ]]; then
     die "$*"
@@ -40,8 +54,7 @@
 # to specific accessory's name.
 leverage_hammer_to_create_key() {
   local output_dir="${PWD}"
-  local key_name="$1"
-  shift
+  local key_name=""
 
   while [[ $# -gt 0 ]]; do
     case "$1" in
@@ -51,19 +64,26 @@
     -o|--output_dir)
       output_dir="$2"
       if [[ ! -d "${output_dir}" ]]; then
-        die "output dir ("${output_dir}") doesn't exist."
+        die "output dir (\"${output_dir}\") doesn't exist."
       fi
       shift
       ;;
     -*)
-      usage "Unknown option: "$1""
+      usage "Unknown option: \"$1\""
       ;;
     *)
-      usage "Unknown argument "$1""
+      if [[ -n "${key_name}" ]]; then
+        usage "Unknown argument \"$1\""
+      fi
+      key_name="$1"
       ;;
     esac
     shift
   done
 
+  if [[ -z "${key_name}" ]]; then
+    usage "Missing key name"
+  fi
+
   generate_rsa3072_exp3_key "${output_dir}" "${key_name}"
 }
diff --git a/scripts/keygeneration/accessory/create_new_hammer_like_keys.sh b/scripts/keygeneration/accessory/create_new_hammer_like_keys.sh
index 3d5c96e..96d2da0 100755
--- a/scripts/keygeneration/accessory/create_new_hammer_like_keys.sh
+++ b/scripts/keygeneration/accessory/create_new_hammer_like_keys.sh
@@ -5,12 +5,13 @@
 # found in the LICENSE file.
 
 # Load common constants and functions.
+export HAS_ARG_KEYNAME=1
 . "$(dirname "$0")/common_leverage_hammer.sh"
 
 main() {
   set -e
 
-  leverage_hammer_to_create_key "hammerlike" "$@"
+  leverage_hammer_to_create_key "$@"
 }
 
 main "$@"