summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorNamyoon Woo <namyoon@chromium.org>2020-02-28 09:44:46 -0800
committerCommit Bot <commit-bot@chromium.org>2020-03-09 21:48:18 +0000
commit5ccb5c7cc9c448b66c6f8e0abbb2dd785da0efb7 (patch)
tree84f6021a658d5b8b11c7612dafac86ede442b27a /util
parent97c73303cf9d5f6c8b6e871ddebd01a8e4ce4206 (diff)
downloadchrome-ec-5ccb5c7cc9c448b66c6f8e0abbb2dd785da0efb7.tar.gz
remove cr50 related files
BUG=b:149350081 BRANCH=none TEST=build all, and emerged ec related packages for host and octopus. $ make buildall -j $ cros_workon --host list chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-ec chromeos-base/chromeos-ec-headers chromeos-base/ec-devutils chromeos-base/ec-utils chromeos-base/ec-utils-test dev-util/hdctools $ sudo emerge chromeos-cr50-dev -j $ sudo emerge chromeos-ec -j $ sudo emerge chromeos-ec-headers -j $ sudo emerge ec-devutils -j $ sudo emerge ec-utils -j $ sudo emerge ec-utils-test -j $ sudo emerge hdctools -j $ cros_workon-octopus list chromeos-base/chromeos-ec chromeos-base/chromeos-ec-headers chromeos-base/ec-devutils chromeos-base/ec-utils chromeos-base/ec-utils-test dev-util/hdctools $ sudo emerge-octopus chromeos-ec -j $ sudo emerge-octopus chromeos-ec-headers -j $ sudo emerge-octopus ec-devutils -j $ sudo emerge-octopus ec-utils -j $ sudo emerge-octopus ec-utils-test -j $ sudo emerge-octopus hdctools -j Signed-off-by: Namyoon Woo <namyoon@chromium.org> Change-Id: If751b26b0635b0021c077338e96eaa8e8dcf17a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2080631 Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Diffstat (limited to 'util')
-rwxr-xr-xutil/g_regs77
-rwxr-xr-xutil/signer/bs342
-rw-r--r--util/signer/cr50_RW-prod.pem.pub9
-rw-r--r--util/signer/cr50_rom0-dev-blsign.pem.pub9
-rwxr-xr-xutil/signer/create_released_image.sh232
-rw-r--r--util/signer/ec_RW-manifest-dev.json48
-rw-r--r--util/signer/ec_RW-manifest-prod.json52
-rw-r--r--util/signer/fuses.xml2034
-rw-r--r--util/signer/loader-testkey-A.pem27
-rw-r--r--util/signer/rom-testkey-A.pem39
10 files changed, 0 insertions, 2869 deletions
diff --git a/util/g_regs b/util/g_regs
deleted file mode 100755
index 28e6f4a53d..0000000000
--- a/util/g_regs
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/perl
-# Copyright 2015 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.
-
-use strict;
-our $opt_D;
-
-use File::Basename;
-my $progdir = dirname($0);
-my $prog = basename($0);
-
-use Getopt::Std;
-my $usage = "
-Usage: $prog [HEADER]
-
-This converts the FPGA release's generated C header file into the
-hw_regdefs.h file that is included by chip/g/registers.h.
-Mostly it just prefaces the macros with GC_ to avoid name collision.
-
-";
-getopts('D') or die $usage;
-
-
-print "/*
- * Copyright 2015 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.
- */
-
-/* This file is autogenerated by the $prog utility. Do not edit. */
-
-";
-
-while(<>)
-{
- if ( s/\b\w+_REGDEFS_H/__EC_CHIP_G_CR50_FPGA_REGDEFS_H/g )
- {
- print;
- next;
- }
-
- if ( s/__ENABLE_FLASH_DFT_DEFINITIONS__/GC__ENABLE_FLASH_DFT_DEFINITIONS__/g )
- {
- print;
- next;
- }
-
- if ( s/\bFLASH_DFT/GC_FLASH_DFT/g )
- {
- print;
- next;
- }
-
- if ( m/^#define\s+(\S+)\s+(\S+)\s*$/ )
- {
- my ($k,$v) = ($1,$2);
-
- if ($k =~ m/^IRQNUM/) {
- # irqnums must be decimal
- $v = 0 + hex($v);
- }
- $k = "GC_$k";
- printf("#define %-40s %s\n", $k, $v);
- if ( $k =~ m/0_BASE_ADDR$/ ) {
- $k =~ s/0_BASE_ADDR/_BASE_ADDR/;
- printf("#define %-40s %s\n", $k, $v);
- }
- next;
- }
-
- next if m!//!;
- next if m!/\*! .. m!\*/!;
-
- print;
-}
-
diff --git a/util/signer/bs b/util/signer/bs
deleted file mode 100755
index 23ee46039a..0000000000
--- a/util/signer/bs
+++ /dev/null
@@ -1,342 +0,0 @@
-#!/bin/bash
-
-#
-# Copyright 2016 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.
-#
-# This script is a utility which allows to create differently signed CR50
-# images from different sources.
-#
-set -e
-set -u
-
-progname=$(basename $0)
-
-OD="/usr/bin/od"
-
-tmpf="/tmp/bs_manifest.$$"
-trap "{ if [[ -f 1.flat ]]; then rm -rf [01].flat ${tmpf} ; fi; }" EXIT
-
-usage() {
- local rv="${1}"
- cat <<EOF
-
-This script allows to sign CR50 RW images. By default it uses ec.RW.elf and
-ec.RW_B.elf in build/cr50/RW as inputs and util/signer/ec_RW-manifest-dev.json
-as the manifest, and places the newly signed images into build/cr50/ec.bin.
-
-The only outside dependency of this script is the signing utility itself,
-which is expected to be available as /usr/bin/cr50-codesigner.
-
-The utility can be installed by running 'sudo emerge cr50-utils',
-
-The following command line options are accepted:
-
- b1 - generate signature for the b1 version of the H1 chip
- elves <elf1> <elf2> - sign the supplied elf files instead of the default
- ones. Handy if the builder generated files need to be signed
- help - print this message
- hex - generate hex output instead of binary (place in 0.signed.hex and
- 1.signed.hex in the local directory)
- prod - sign with prod key (no debug image will be signed)
-
-This script also allows to sign dev images for running on prod RO. To do that
-invoke this script as follows:
-
- H1_DEVIDS='<dev id0> <dev id1>' ${progname} [other options, if any]
-
-where <dev id0> <dev id1> are values reported by sysinfo command in the
-DEV_ID: line when run on the CR50 for which the image is built.
-
-The same values can be obtained in the lsusb command output:
-
- lsusb -vd 18d1:5014 | grep -i serial
-
-note that the lsusb reported values are in hex and need to be prefixed with
-0x.
-
-Finally, this script also allows to specify the board ID fields of the RW
-headers. The fields come from the evironment variable CR50_BOARD_ID, which is
-required to include three colon separated fields. The first field is a four
-letter board RLZ code, the second field is board id mask in hex, no 0x prefix,
-and the third field - board ID flags, again, hex, no 0x prefix.
-
-CR50_BOARD_ID='XXYY:ffffff00:ff00' ${progname} [other options, if any]
-
-both H1_DEVIDS and CR50_BOARD_ID can be defined independently.
-
-EOF
- exit "${rv}"
-}
-
-# This function modifies the manifest to include device ID and board ID nodes,
-# if H1_DEVIDS and CR50_BOARD_ID are defined in the environment, respectively,
-tweak_manifest () {
- local sub
-
- # If defined, plug in dev ID nodes before the 'fuses' node.
- if [[ -z "${do_prod}" && -n "${H1_DEVIDS}" ]]; then
- echo "creating a customized DEV image for DEV IDS ${H1_DEVIDS}"
- sub=$(printf "\\\n \"DEV_ID0\": %s,\\\n \"DEV_ID1\": %s," ${H1_DEVIDS})
- sed -i "s/\"fuses\": {/\"fuses\": {${sub}/" "${tmpf}"
- fi
-
- if [[ -z "${CR50_BOARD_ID}" ]]; then
- return
- fi
-
- # CR50_BOARD_ID is set, let's parse it and plug in the board ID related
- # nodes into manifest before the 'fuses' node.
- local bid_params
- local rlz
-
- bid_params=( $(echo $CR50_BOARD_ID | sed 's/:/ /g') )
- # A very basic sanity check: it needs to consist of three colon separated
- # fields.
- if [[ ${#bid_params[@]} != 3 ]]; then
- echo "Wrong board ID string \"$CR50_BOARD_ID\"}" >&2
- exit 1
- fi
-
- if [[ "${bid_params[0]}" == "0" ]] ; then
- rlz="0"
- elif [[ ${#bid_params[0]} == 4 ]] ; then
- # Convert 4 char board RLZ code from ASCII to hex
- rlz="0x$(echo -n ${bid_params[0]} | hexdump -ve '/1 "%02x"')"
- else
- echo "Invalid RLZ ${bid_params[0]}"
- exit 1
- fi
-
- # Prepare text of all three board ID related nodes
- sub="$(printf "\\\n\"board_id\": %s,\\\n" "${rlz}")"
- sub+="$(printf "\"board_id_mask\": %s,\\\n" "0x${bid_params[1]}")"
- sub+="$(printf "\"board_id_flags\": %s,\\\n" "0x${bid_params[2]}")"
- sed -i "s/\"fuses\": {/${sub}\"fuses\": {/" "${tmpf}"
-}
-
-# This function accepts two arguments, names of two binary files.
-#
-# It searches the first passed in file for the first 8 bytes of the second
-# passed in file. The od utility is used to generate full hex dump of the
-# first file (16 bytes per line) and the first 8 bytes of the second file.
-#
-# grep is used to check if the pattern is present in the full dump. If the
-# pattern is not found, the first file is dumped again, this time with an 8
-# byte offset into the file. This makes sure that if the match is present, but
-# is spanning two lines of the original hex dump, it is in a single dump line
-# the second time around.
-find_blob_in_blob() {
- local main_blob="${1}"
- local pattern_blob="${2}"
- local pattern
- local od_options="-An -tx1"
-
- # Get the first 8 bytes of the pattern blob.
- pattern="$(${OD} ${od_options} -N8 "${pattern_blob}")"
-
- if "${OD}" ${od_options} "${main_blob}" | grep "${pattern}" > /dev/null; then
- return 0
- fi
-
- # Just in case pattern was wrapped in the previous od output, let's do it
- # again with an 8 bytes offset
- if "${OD}" ${od_options} -j8 "${main_blob}" |
- grep "${pattern}" > /dev/null; then
- return 0
- fi
-
- return 1
-}
-
-# This function accepts two arguments, names of the two elf files.
-#
-# The files are searched for test RMA public key patterns - x25519 or p256,
-# both files are supposed to have pattern of one of these keys and not the
-# other. If this holds true the function prints the public key base name. If
-# not both files include the same key, or include more than one key, the
-# function reports failure and exits the script.
-determine_rma_key_base() {
- local base_name="${EC_ROOT}/board/cr50/rma_key_blob"
- local curve
- local curves=( "x25519" "p256" )
- local elf
- local elves=( "$1" "$2" )
- local key_file
- local mask=1
- local result=0
-
- for curve in ${curves[@]}; do
- key_file="${base_name}.${curve}.test"
- for elf in ${elves[@]}; do
- if find_blob_in_blob "${elf}" "${key_file}"; then
- result=$(( result | mask ))
- fi
- mask=$(( mask << 1 ))
- done
- done
-
- case "${result}" in
- (3) curve="x25519";;
- (12) curve="p256";;
- (*) echo "could not determine key type in the elves" >&2
- exit 1
- ;;
- esac
-
- echo "${base_name}.${curve}"
-}
-
-SIGNER="cr50-codesigner"
-if ! which "${SIGNER}" 2>/dev/null > /dev/null; then
- echo "${SIGNER} is not available, try running 'sudo emerge cr50-utils'" >&2
- exit 1
-fi
-
-# This is where the new signed image will be pasted into.
-: ${RESULT_FILE=build/cr50/ec.bin}
-TMP_RESULT_FILE="${RESULT_FILE}.tmp"
-
-if [[ -z "${CROS_WORKON_SRCROOT}" ]]; then
- echo "${progname}: This script must run inside Chrome OS chroot" >&2
- exit 1
-fi
-
-: ${CR50_BOARD_ID=}
-: ${H1_DEVIDS=}
-EC_ROOT="${CROS_WORKON_SRCROOT}/src/platform/ec"
-EC_BIN_ROOT="${EC_ROOT}/util/signer"
-
-do_hex=
-do_b1=
-do_prod=
-
-# Prepare the default manifest.
-cp "${EC_BIN_ROOT}/ec_RW-manifest-dev.json" "${tmpf}"
-
-elves=( build/cr50/RW/ec.RW.elf build/cr50/RW/ec.RW_B.elf )
-cd "${EC_ROOT}"
-while (( $# )); do
- param="${1}"
- case "${param}" in
- (hex) do_hex='true';;
- (b1)
- do_b1='true'
- sed -i 's/\(.*FW_DEFINED_DATA_BLK0.*\): 2/\1: 0/' "${tmpf}"
- ;;
- (elves)
- if [[ (( $# < 3 )) ]]; then
- echo "two elf file names are required" >&2
- exit 1
- fi
- elves=( $2 $3 )
- shift
- shift
- ;;
- (prod)
- do_prod='true'
- ;;
- (help)
- usage 0
- ;;
- (*)
- usage 1
- ;;
- esac
- shift
-done
-
-if [[ -z "${do_hex}" && ! -f "${RESULT_FILE}" ]]; then
- echo "${RESULT_FILE} not found. Run 'make BOARD=cr50' first" >&2
- exit 1
-fi
-
-if [[ -n "${do_prod}" && -n "${do_b1}" ]]; then
- echo "can not build prod images for B1, sorry..."
- exit 1
-fi
-
-# If signing a chip factory image (version 0.0.22) do not try figuring out the
-# RMA keys.
-ignore_rma_keys="$(awk '
- BEGIN {count = 0};
- /"major": 0,/ {count += 1};
- /"minor": 22,/ {count += 1};
- END {{if (count == 2) {print "yes"};}}' \
- "${EC_BIN_ROOT}/ec_RW-manifest-prod.json")"
-
-if [ "${ignore_rma_keys}" != "yes" ]; then
- rma_key_base="$(determine_rma_key_base ${elves[@]})"
-else
- echo "Ignofing RMA keys for factory branch"
-fi
-
-signer_command_params=()
-signer_command_params+=(--b -x ${EC_BIN_ROOT}/fuses.xml)
-if [[ -z "${do_prod}" ]]; then
- signer_command_params+=(-k ${EC_BIN_ROOT}/cr50_rom0-dev-blsign.pem.pub)
-else
- cp "${EC_BIN_ROOT}/ec_RW-manifest-prod.json" "${tmpf}"
- signer_command_params+=(-k ${EC_BIN_ROOT}/cr50_RW-prod.pem.pub)
- # Swap test public RMA server key with the prod version.
- if [ "${ignore_rma_keys}" != "yes" ]; then
- signer_command_params+=(-S "${rma_key_base}.test","${rma_key_base}.prod")
- fi
-fi
-signer_command_params+=(-j ${tmpf})
-
-if [[ -n "${do_hex}" ]]; then
- dst_suffix='signed.hex'
-else
- signer_command_params+=(--format=bin)
- dst_suffix='flat'
-fi
-
-tweak_manifest
-
-count=0
-for elf in ${elves[@]}; do
- if [[ -n "${do_prod}" ]]; then
- if strings "${elf}" | egrep -q "(DBG|SQA)/cr50"; then
- echo "Will not sign debug or SQA image with prod keys" >&2
- exit 1
- fi
- fi
- signed_file="${count}.${dst_suffix}"
-
- # Make sure output file is not owned by root
- touch "${signed_file}"
- command="${SIGNER} ${signer_command_params[@]} -i ${elf} -o ${signed_file}"
- if ! ${command}; then
- echo "${progname}: \"${command}\" failed" >&2
- exit 1
- fi
-
- if [ "${ignore_rma_keys}" != "yes" ]; then
- if find_blob_in_blob "${signed_file}" "${rma_key_base}.test"; then
- echo "${progname}: test RMA key in the signed image!" >&2
- rm *."${dst_suffix}"
- exit 1
- fi
-
- if ! find_blob_in_blob "${signed_file}" "${rma_key_base}.prod"; then
- echo "${progname}: prod RMA key not in the signed image!" >&2
- rm *."${dst_suffix}"
- exit 1
- fi
- fi
- : $(( count++ ))
-done
-
-if [[ -z "${do_hex}" ]]; then
- # Full binary image is required, paste the newly signed blobs into the
- # output image, preserving it in case dd fails for whatever reason.
- cp "${RESULT_FILE}" "${TMP_RESULT_FILE}"
- dd if="0.flat" of="${TMP_RESULT_FILE}" seek=16384 bs=1 conv=notrunc
- dd if="1.flat" of="${TMP_RESULT_FILE}" seek=278528 bs=1 conv=notrunc
- rm [01].flat
- mv "${TMP_RESULT_FILE}" "${RESULT_FILE}"
-fi
-
-echo "SUCCESS!!!"
diff --git a/util/signer/cr50_RW-prod.pem.pub b/util/signer/cr50_RW-prod.pem.pub
deleted file mode 100644
index f043eea161..0000000000
--- a/util/signer/cr50_RW-prod.pem.pub
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAthqml36PUHk5MgurodTG
-puEsqK9/28/gEiCZGgfKL2rZKzU7CSiD82nmMgMoaxNTcPZgln+WELXIZUv81Up3
-GT6dA2dSDSQgmdgI1/x3OkEf9BkmHajuvhZTDteI18X/9TsXwly9zoxEFRy/JW8X
-Cz9/eOE7xcgoIzji0WmnosMKyxiOv67hhH+JvJ01uQhcxOag2606uIBknovHZT7l
-kf3RsEquoZqGK2WFwin9gl4KXv8yQ2F0h9LnfezIURWuz4J6pNc8EI7jYeP5eBrJ
-AfE8HsnDD6I2OpoNNM0BnbPq7gbn5CJJn5bZ6dNM4YBH8saJgNVBYOV9XqHdtiLV
-uwIBAw==
------END PUBLIC KEY-----
diff --git a/util/signer/cr50_rom0-dev-blsign.pem.pub b/util/signer/cr50_rom0-dev-blsign.pem.pub
deleted file mode 100644
index 4e4e765ca5..0000000000
--- a/util/signer/cr50_rom0-dev-blsign.pem.pub
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA3BvAb0OUrzmPfwQPOz7D
-c5JOiiv6p9Es42XR4kLajBPIJog4ZMIFHrTk8R3IvQkt5TQb7SbvAv/rDESVLplM
-OJX9/5i5MK4Wh6j/msopEwRfdCgHD5dXOSN3mqC8bqyWhspF0L9fUlZXAsPD0zUe
-sXNL0dTSuvE4GZ53WoE8bM9d1w5A6L9NzODAgI1hOFqg9qnpir9R/CWiH0/JwlbP
-k5amvRfVFPeyivq4zRW4LGa6I3woVjp36iRUYEktbvabq6/qmAGDiL4hy4AHhLGn
-2g7s1sY6V9W9cYQQ7sja8x+xqH4Mwt1QxlLoGrVfhf0sh0hUETnUPSXwZFRQqU+0
-4QIBAw==
------END PUBLIC KEY-----
diff --git a/util/signer/create_released_image.sh b/util/signer/create_released_image.sh
deleted file mode 100755
index f5d4673887..0000000000
--- a/util/signer/create_released_image.sh
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-
-#
-# Copyright 2017 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.
-#
-# This script is a utility which allows to sign prod CR50 images for release
-# and place them in a tarball suitable for uploading to the BCS.
-#
-# The util/signer/ec_RW-manifest-prod.json manifest present in the EC
-# directory is used for signing.
-#
-
-set -u
-
-# A very crude RO verification function. The key signature found at a fixed
-# offset into the RO blob must match the RO type. Prod keys have bit D2 set to
-# one, dev keys have this bit set to zero.
-verify_ro() {
- local ro_bin="${1}"
- local type_expected="${2}"
- local key_byte
-
- if [ ! -f "${ro_bin}" ]; then
- echo "${ro_bin} not a file!" >&2
- exit 1
- fi
-
- # Key signature's lowest byte is byte #5 in the line at offset 0001a0.
- key_byte="$(od -Ax -t x1 -v "${ro_bin}" | awk '/0001a0/ {print $6};')"
- case "${key_byte}" in
- (?[4567cdef])
- if [ "${type_expected}" == "prod" ]; then
- return 0
- fi
- ;;
- (?[012389ab])
- if [ "${type_expected}" == "dev" ]; then
- return 0
- fi
- ;;
- esac
-
- echo "RO key in ${ro_bin} does not match type ${type_expected}" >&2
- exit 1
-}
-
-# This function prepares a full CR50 image, consisting of two ROs and two RWs
-# placed at their respective offsets into the resulting blob. It invokes the
-# bs (binary signer) script to actually convert elf versions of RWs into
-# binaries and sign them.
-#
-# The signed image is placed in the directory named as concatenation of RO and
-# RW version numbers and board ID fields, if set to non-default. The ebuild
-# downloading the tarball from the BCS expects the image to be in that
-# directory.
-prepare_image() {
- local awk_prog
- local count=0
- local extra_param=
- local image_type="${1}"
- local raw_version
- local ro_a_hex="$(readlink -f "${2}")"
- local ro_b_hex="$(readlink -f "${3}")"
- local rw_a="$(readlink -f "${4}")"
- local rw_b="$(readlink -f "${5}")"
- local version
-
- for f in "${ro_a_hex}" "${ro_b_hex}"; do
- if ! objcopy -I ihex "${f}" -O binary "${TMPD}/${count}.bin"; then
- echo "failed to convert ${f} from hex to bin" >&2
- exit 1
- fi
- verify_ro "${TMPD}/${count}.bin" "${image_type}"
- : $(( count += 1 ))
- done
-
- if [ "${image_type}" == "prod" ]; then
- extra_param+=' prod'
- fi
-
- if ! "${EC_ROOT}/util/signer/bs" ${extra_param} elves \
- "${rw_a}" "${rw_b}" > /dev/null;
- then
- echo "Failed invoking ${EC_ROOT}/util/signer/bs ${extra_param} " \
- "elves ${rw_a} ${rw_b}" >&2
- exit 1
- fi
-
- dd if="${TMPD}/0.bin" of="${RESULT_FILE}" conv=notrunc
- dd if="${TMPD}/1.bin" of="${RESULT_FILE}" seek=262144 bs=1 conv=notrunc
-
- # A typical Cr50 version reported by gsctool looks as follows:
- # RO_A:0.0.10 RW_A:0.0.22[ABCD:00000013:00000012] ...(the same for R[OW]_B).
- #
- # In case Board ID field is not set in the image, it is reported as
- # [00000000:00000000:00000000]
- #
- # We want the generated tarball file name to include all relevant version
- # fields. Let's retrieve the version string and process it using awk to
- # generate the proper file name. Only the RO_A and RW_A version numbers are
- # used, this script trusts the user to submit for processing a proper image
- # where both ROs and both RWs are of the same version respectively.
- #
- # As a result, blob versions are converted as follows:
- # RO_A:0.0.10 RW_A:0.0.22[ABCD:00000013:00000012] into
- # r0.0.10.w0.0.22_ABCD_00000013_00000012
- #
- # RO_A:0.0.10 RW_A:0.0.22[00000000:00000000:00000000] into
- # r0.0.10.w0.0.22
- #
- # The below awk program accomplishes this preprocessing.
- awk_prog='/^RO_A:/ {
- # drop the RO_A/RW_A strings
- gsub(/R[OW]_A:/, "")
- # Drop default mask value completely.
- gsub(/\[00000000:00000000:00000000\]/, "")
- # If there is a non-default mask:
- # - replace opening brackets and colons with underscores.
- gsub(/[\[\:]/, "_")
- # - drop the trailing bracket.
- gsub(/\]/, "")
- # Print filtered out RO_A and RW_A values
- print "r" $1 ".w" $2
-}'
-
- raw_version="$("${GSCTOOL}" -b "${RESULT_FILE}")" ||
- ( echo "${ME}: Failed to retrieve blob version" >&2 && exit 1 )
-
- version="$(awk "${awk_prog}" <<< "${raw_version}" )"
- if [ -z "${dest_dir}" ]; then
- # Note that this is a global variable
- dest_dir="cr50.${version}"
- if [ ! -d "${dest_dir}" ]; then
- mkdir "${dest_dir}"
- else
- echo "${dest_dir} already exists, will overwrite" >&2
- fi
- elif [ "${dest_dir}" != "cr50.${version}" ]; then
- echo "dev and prod versions mismatch!" >&2
- exit 1
- fi
-
- cp "${RESULT_FILE}" "${dest_dir}/cr50.bin.${image_type}"
- echo "saved ${image_type} binary in ${dest_dir}/cr50.bin.${image_type}"
-}
-
-# Execution starts here ===========================
-ME="$(basename $0)"
-
-if [ -z "${CROS_WORKON_SRCROOT}" ]; then
- echo "${ME}: This script must run inside Chrome OS chroot" >&2
- exit 1
-fi
-
-SCRIPT_ROOT="${CROS_WORKON_SRCROOT}/src/scripts"
-. "${SCRIPT_ROOT}/build_library/build_common.sh" || exit 1
-
-TMPD="$(mktemp -d /tmp/${ME}.XXXXX)"
-trap "/bin/rm -rf ${TMPD}" SIGINT SIGTERM EXIT
-
-EC_ROOT="${CROS_WORKON_SRCROOT}/src/platform/ec"
-RESULT_FILE="${TMPD}/release.bin"
-dest_dir=
-IMAGE_SIZE='524288'
-export RESULT_FILE
-
-GSCTOOL="/usr/sbin/gsctool"
-if [[ ! -x "${GSCTOOL}" ]]; then
- emerge_command="USE=cr50_onboard sudo -E emerge ec-utils"
- echo "${ME}: gsctool not found, run \"${emerge_command}\"" >&2
- exit 1
-fi
-
-DEFINE_string cr50_board_id "" \
- "Optional string representing Board ID field of the Cr50 RW header.
-Consists of three fields separated by colon: <RLZ>:<hex mask>:<hex flags>"
-
-# Do not put this before the DEFINE_ invocations - they routinely experience
-# error return values.
-set -e
-
-FLAGS_HELP="usage: ${ME} [flags] <blobs>
-
-blobs are:
- <prod RO A>.hex <prod RO B>.hex <RW.elf> <RW_B.elf>
- or
- <prod RO A>.hex <prod RO B>.hex <dir>
- where <dir> contains files named ec.RW.elf and ec.RW_B.elf
-"
-
-# Parse command line.
-FLAGS "$@" || exit 1
-
-eval set -- "${FLAGS_ARGV}"
-
-if [[ $# == 3 && -d "${3}" ]]; then
- rw_a="${3}/ec.RW.elf"
- rw_b="${3}/ec.RW_B.elf"
-elif [[ $# == 4 ]]; then
- rw_a="${3}"
- rw_b="${4}"
-else
- flags_help
- exit 1
-fi
-
-prod_ro_a="${1}"
-prod_ro_b="${2}"
-
-dd if=/dev/zero bs="${IMAGE_SIZE}" count=1 2>/dev/null |
- tr \\000 \\377 > "${RESULT_FILE}"
-if [ "$(stat -c '%s' "${RESULT_FILE}")" != "${IMAGE_SIZE}" ]; then
- echo "Failed creating ${RESULT_FILE}" >&2
- exit 1
-fi
-
-# Used by the bs script.
-export CR50_BOARD_ID="${FLAGS_cr50_board_id}"
-
-prepare_image 'prod' "${prod_ro_a}" "${prod_ro_b}" "${rw_a}" "${rw_b}"
-tarball="${dest_dir}.tbz2"
-tar jcf "${tarball}" "${dest_dir}"
-rm -rf "${dest_dir}"
-
-bcs_path="gs://chromeos-localmirror-private/distfiles/cr50"
-echo "SUCCESS!!!!!!"
-echo "use the below commands to copy the new image to the GFS"
-echo "gsutil cp ${tarball} ${bcs_path}"
-echo "gsutil acl ch -g cr50-firmware@google.com:R ${bcs_path}/${tarball}"
-
diff --git a/util/signer/ec_RW-manifest-dev.json b/util/signer/ec_RW-manifest-dev.json
deleted file mode 100644
index 1f65d68e91..0000000000
--- a/util/signer/ec_RW-manifest-dev.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-// List of fuses and their expected values.
-"fuses": {
- "FLASH_PERSO_PAGE_LOCK": 5, // individualized
- "FW_DEFINED_DATA_BLK0": 2, // kevin EVT 1
- "FW_DEFINED_DATA_EXTRA_BLK6": 0 // escape hatch
-},
-// Rollback state.
-"info": {
- "2": -1, "3": -1, "4": -1, "5": -1, "6": -1,
- "7": -1, "8": -1, "9": -1, "10": -1, "11": -1, "12": -1 , "13": -1,
- "14": -1, "15": -1, "16": -1, "17": -1, "18": -1, "19": -1, "20": -1,
- "21": -1, "22": -1, "23": -1, "24": -1, "25": -1, "26": -1, "27": -1,
- "28": -1, "29": -1, "30": -1, "31": -1, "32": -1, "33": -1, "34": -1,
- "35": -1, "36": -1, "37": -1, "38": -1, "39": -1, "40": -1, "41": -1,
- "42": -1, "43": -1, "44": -1, "45": -1, "46": -1, "47": -1, "48": -1,
- "49": -1, "50": -1, "51": -1, "52": -1, "53": -1, "54": -1, "55": -1,
- "56": -1, "57": -1, "58": -1, "59": -1, "60": -1, "61": -1, "62": -1,
- "63": -1, "64": -1, "65": -1, "66": -1, "67": -1, "68": -1, "69": -1,
- "70": -1, "71": -1, "72": -1, "73": -1, "74": -1, "75": -1, "76": -1,
- "77": -1, "78": -1, "79": -1, "80": -1, "81": -1, "82": -1, "83": -1,
- "84": -1, "85": -1, "86": -1, "87": -1, "88": -1, "89": -1, "90": -1,
- "91": -1, "92": -1, "93": -1, "94": -1, "95": -1, "96": -1, "97": -1,
- "98": -1, "99": -1, "100": -1, "101": -1, "102": -1, "103": -1, "104": -1,
-"105": -1, "106": -1, "107": -1, "108": -1, "109": -1, "110": -1, "111": -1,
-"112": -1, "113": -1, "114": -1, "115": -1, "116": -1, "117": -1, "118": -1,
-"119": -1, "120": -1, "121": -1, "122": -1, "123": -1, "124": -1, "125": -1,
-"126": -1, "127": -1
-},
-
- // Note: tag needs to match what cros_personalize anticipated!
- // https://cs.corp.google.com/search/?q=kCrosFwr
- "tag": "00000000000000000000000000000000000000000000000000000000",
-
- // cros_loader uses b1-dev key as key to verify RW with
- "keyid": 860844255, // b1-dev, RO 0.0.11 key
-
- "p4cl": 177, // P4 sync cl for XML we link against. 177 == 0xb1.
-
- "timestamp": 0,
- "epoch": 0, // FWR diversification contributor, 32 bits.
- "major": 4, // FW2_HIK_CHAIN counter.
- "minor": 24, // Mostly harmless version field.
- "applysec": -1, // Mask to and with fuse BROM_APPLYSEC.
- "config1": 13, // Which BROM_CONFIG1 actions to take before launching.
- "err_response": 0, // Mask to or with fuse BROM_ERR_RESPONSE.
- "expect_response": 3 // purgatory level when expectation fails.
-}
diff --git a/util/signer/ec_RW-manifest-prod.json b/util/signer/ec_RW-manifest-prod.json
deleted file mode 100644
index 4d725af315..0000000000
--- a/util/signer/ec_RW-manifest-prod.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-// List of fuses and their expected values.
-"fuses": {
- "FLASH_PERSO_PAGE_LOCK": 5, // individualized
- "FW_DEFINED_DATA_BLK0": 2, // cros SKU
- "FW_DEFINED_DATA_EXTRA_BLK6": 0 // escape hatch
-},
-// Rollback state.
-"info": {
- "2": -1, "3": -1, "4": -1, "5": -1, "6": -1,
- "7": -1, "8": -1, "9": -1, "10": -1, "11": -1, "12": -1 , "13": -1,
- "14": -1, "15": -1, "16": -1, "17": -1, "18": -1, "19": -1, "20": -1,
- "21": -1, "22": -1, "23": -1, "24": -1, "25": -1, "26": -1, "27": -1,
- "28": -1, "29": -1, "30": -1, "31": -1, "32": -1, "33": -1, "34": -1,
- "35": -1, "36": -1, "37": -1, "38": -1, "39": -1, "40": -1, "41": -1,
- "42": -1, "43": -1, "44": -1, "45": -1, "46": -1, "47": -1, "48": -1,
- "49": -1, "50": -1, "51": -1, "52": -1, "53": -1, "54": -1, "55": -1,
- "56": -1, "57": -1, "58": -1, "59": -1, "60": -1, "61": -1, "62": -1,
- "63": -1, "64": -1, "65": -1, "66": -1, "67": -1, "68": -1, "69": -1,
- "70": -1, "71": -1, "72": -1, "73": -1, "74": -1, "75": -1, "76": -1,
- "77": -1, "78": -1, "79": -1, "80": -1, "81": -1, "82": -1, "83": -1,
- "84": -1, "85": -1, "86": -1, "87": -1, "88": -1, "89": -1, "90": -1,
- "91": -1, "92": -1, "93": -1, "94": -1, "95": -1, "96": -1, "97": -1,
- "98": -1, "99": -1, "100": -1, "101": -1, "102": -1, "103": -1, "104": -1,
-"105": -1, "106": -1, "107": -1, "108": -1, "109": -1, "110": -1, "111": -1,
-"112": -1, "113": -1, "114": -1, "115": -1, "116": -1, "117": -1, "118": -1,
-"119": -1, "120": -1, "121": -1, "122": -1, "123": -1, "124": -1, "125": -1,
-"126": -1, "127": -1
-},
-
- // Note: tag needs to match what cros_personalize anticipated!
- // https://cs.corp.google.com/search/?q=kCrosFwr
- "tag": "00000000000000000000000000000000000000000000000000000000",
-
- // cros_loader uses b1-dev key as key to verify RW with
- //"keyid": -1187158727, // b1-dev key
- "keyid": -561489779, // prod RW key
-
- "p4cl": 177, // P4 sync cl for XML we link against. 177 == 0xb1.
-
- // Make sure a value is there so that current time is not used, and make
- // sure the value is small so that any dev build with the same
- // epoch/major/minor would be preferred
- "timestamp": 1,
- "epoch": 0, // FWR diversification contributor, 32 bits.
- "major": 3, // FW2_HIK_CHAIN counter.
- "minor": 24, // Mostly harmless version field.
- "applysec": -1, // Mask to and with fuse BROM_APPLYSEC.
- "config1": 13, // Which BROM_CONFIG1 actions to take before launching.
- "err_response": 0, // Mask to or with fuse BROM_ERR_RESPONSE.
- "expect_response": 3 // purgatory level when expectation fails.
-}
diff --git a/util/signer/fuses.xml b/util/signer/fuses.xml
deleted file mode 100644
index 627c8796b8..0000000000
--- a/util/signer/fuses.xml
+++ /dev/null
@@ -1,2034 +0,0 @@
-<ArrayType>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK0_INTG_CHKSUM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>0</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>24</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK0_INTG_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>1</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DS_GRP0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>2</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>9</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DS_GRP1</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>3</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>9</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DS_GRP2</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>4</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>9</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DEV_ID0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>5</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>32</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DEV_ID1</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>6</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>32</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK1_INTG_CHKSUM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>7</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>24</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK1_INTG_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>8</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB0_POST_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>9</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB0_POST_PATCNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>10</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB0_POST_WARMUP_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>11</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB0_POST_WARMUP_CNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>12</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB1_POST_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>13</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB1_POST_PATCNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>14</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB1_POST_WARMUP_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>15</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB1_POST_WARMUP_CNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>16</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB2_POST_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>17</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB2_POST_PATCNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>18</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB2_POST_WARMUP_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>19</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB2_POST_WARMUP_CNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>20</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB3_POST_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>21</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB3_POST_PATCNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>22</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB3_POST_WARMUP_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>23</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB3_POST_WARMUP_CNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>24</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB4_POST_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>25</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB4_POST_PATCNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>26</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB4_POST_WARMUP_OVRD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>27</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LB4_POST_WARMUP_CNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>28</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>MBIST_POST_SEQ</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>29</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>25</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LBIST_POST_SEQ</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>30</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>25</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>LBIST_VIA_TAP_DIS</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>31</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>MBIST_VIA_TAP_DIS</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>32</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TAP_DISABLE</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>33</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RNGBIST_AR_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>34</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TESTMODE_KEYS_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>35</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>PKG_ID</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>36</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BIN_ID</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>37</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_JTR_OSC48_CC_TRIM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>38</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_JTR_OSC48_CC_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>39</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_JTR_OSC60_CC_TRIM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>40</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_JTR_OSC60_CC_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>41</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_TIMER_OSC48_CC_TRIM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>42</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_TIMER_OSC48_CC_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>43</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_TIMER_OSC48_FC_TRIM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>44</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>5</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_TIMER_OSC48_FC_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>45</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_RTC_OSC256K_CC_TRIM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>46</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RC_RTC_OSC256K_CC_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>47</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>SEL_VREG_REG_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>48</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>SEL_VREF_REG</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>49</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>4</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>SEL_VREF_BATMON_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>50</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>SEL_VREF_BATMON</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>51</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>X_OSC_LDO_CTRL_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>52</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>X_OSC_LDO_CTRL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>53</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>4</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TEMP_OFFSET_CAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>54</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>12</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TRNG_LDO_CTRL_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>55</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TRNG_LDO_CTRL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>56</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>5</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TRNG_ANALOG_CTRL_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>57</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TRNG_ANALOG_CTRL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>58</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>4</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>EXT_XTAL_PDB</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>59</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>DIS_EXT_XTAL_CLK_TREE</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>60</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>OBFUSCATION_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>61</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>HIK_CREATE_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>62</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK2_INTG_CHKSUM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>63</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>24</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK2_INTG_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>64</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>TESTMODE_OTPW_DIS</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>65</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>HKEY_WDOG_TIMER_EN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>66</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FLASH_PERSO_PAGE_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>67</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>ALERT_RSP_CFG</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>68</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK3_INTG_CHKSUM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>69</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>24</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK3_INTG_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>70</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_BLK0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>71</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_BROM_ERR_RESPONSE</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>72</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>16</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_BROM_APPLYSEC</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>73</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>12</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_BROM_CONFIG0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>74</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_BROM_CONFIG1</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>75</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_MODE_DBG_OVRD_DIS</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>76</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_MODE_OUTPUT_OVRD_DIS</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>77</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>7</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_CLK10HZ_COUNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>78</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>16</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_SHORT_DELAY_COUNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>79</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>16</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_LONG_DELAY_COUNT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>80</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DEBOUNCE_PERIOD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>81</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>16</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DEBOUNCE_BYPASS_PWRB</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>82</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DEBOUNCE_BYPASS_KEY0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>83</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DEBOUNCE_BYPASS_KEY1</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>84</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO0_VAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>85</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO1_VAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>86</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO2_VAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>87</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO0_HOLD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>88</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO1_HOLD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>89</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_KEY_COMBO2_HOLD</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>90</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_BLOCK_KEY0_SEL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>91</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_BLOCK_KEY1_SEL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>92</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_BLOCK_KEY0_VAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>93</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_BLOCK_KEY1_VAL</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>94</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_AC_PRESENT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>95</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_PWRB_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>96</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_PWRB_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>97</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_KEY0_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>98</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_KEY0_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>99</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_KEY1_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>100</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_KEY1_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>101</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_EC_RST</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>102</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_POL_BATT_DISABLE</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>103</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>1</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_AC_PRESENT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>104</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_ENTERING_RW</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>105</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_PWRB_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>106</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_PWRB_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>107</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_KEY0_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>108</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_KEY0_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>109</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_KEY1_IN</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>110</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_TERM_KEY1_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>111</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DRIVE_PWRB_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>112</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DRIVE_KEY0_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>113</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DRIVE_KEY1_OUT</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>114</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DRIVE_EC_RST</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>115</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>RBOX_DRIVE_BATT_DISABLE</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>116</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>2</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK4_INTG_CHKSUM</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>117</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>24</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>BNK4_INTG_LOCK</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>118</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>3</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK0</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>119</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK1</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>120</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK2</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>121</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK3</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>122</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK4</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>123</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK5</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>124</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>8</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
- <HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>FW_DEFINED_DATA_EXTRA_BLK6</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>125</Value>
- </HashItem>
- <HashItem>
- <Key>Width</Key>
- <Value>5</Value>
- </HashItem>
- </HashType>
-</ArrayItem>
-<ArrayItem>
-<HashType>
- <HashItem>
- <Key>RegName</Key>
- <Value>SWDP_P4_LAST_SYNC</Value>
- </HashItem>
- <HashItem>
- <Key>Default</Key>
- <Value>177</Value>
- </HashItem>
- <HashItem>
- <Key>FuseLogicalOffset</Key>
- <Value>0</Value>
- </HashItem>
-</HashType>
-</ArrayItem>
-</ArrayType>
diff --git a/util/signer/loader-testkey-A.pem b/util/signer/loader-testkey-A.pem
deleted file mode 100644
index ea16e603e9..0000000000
--- a/util/signer/loader-testkey-A.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEogIBAAKCAQEAp/kh8/NGr1GUMA6c0tq9cRhVMaMwhYCF6mkpeW/D+1k3lL5q
-pkjqDcYBZG4xbhdCgEH9ppPYKzwKBVieWuqf7uymLBlCLmaPA6P4J+IwhS001WoD
-0kACEhnbL4xeP21fwuz9/u6ucoM8kJsFV/gacADmuOKTrU89Kyj2J5iLWVQPMMAM
-BOk+3BNamWwnCRk+CvcT+EQHtzcFkK2avm4HUQNSzhL407NbvsHwUjv7N6wtjeu5
-VLaTLTHxk9Z5savcn2jgxWASn4M59dpD7KSTYi4LsY8NPUWswz0E2a0vk8rfthtA
-amTkU4MT9ohVYq2JTCj5DC3DV/0Z7xiZ+ZsYPQIBAwKCAQBv+2v394R04Q11XxM3
-PH5LZY4hF3WuVa6cRhumSoKnkM+4fvHEMJwJLquYSXZJZNcAK/5vDTrHfVwDkGmR
-8b/0ncQdZiwe7woCbVAalssDc3iORq021Va2u+d1CD7U85Usnf6p9HRMV321vK46
-pWb1Ve8l7GJziijHcKQaZbI7jEq4JKyk9lL7seEWjf2zHyiLnh8wxQK7Ebizrqw9
-EIH3tmC6JKvbGJPizQ6tz1O0bVwiaHmZObouRxBTE8fL2zuSmJunqsYK4xqWfRsb
-+RcSDndzBTW89qZr7i3h22g8jUsMiPBqV9/l9w1dOxnWwAtQSHfebcCA2u3OxUGM
-9dpTAoGBANhm0GYySwuCJc8lJpsBUl2tbuw7pzRdDe8BuqGv2aaEHx7arwFat1AA
-ZHVlQquWaKxwCuyFY/QlGq4uTNHhkBgygnFeEvtZ0KaKSVBBXY0Fbhq+N6rsX7FQ
-eRb4sz7We/aFR2K1V52dHaetOjMBfLhX1e7dZRwX8xnSSKuQeB6DAoGBAMa1uKLb
-LLbgYrnScI97GCOMGvjzdU9BjoGBbPay+53ZUqLcLPWwVy3qKeToQlISn3bqRBZp
-fAfCrKro6/weUusRAYXrzO41XeuJ1UsBUWPBqj3Gz5G1dAHQ3qkOMNRievieBnUV
-iXbdctg9dXufEL/75lZhJAZ+wZtmqAwVsjI/AoGBAJBEiu7MMgesGTTDbxIA4ZPI
-9J19GiLos/Sr0cEf5m8Cv2nnH1Y8ejVVmE5Dgce5mx2gB0hY7U1uEcl0MzaWYBAh
-rEuUDKeRNcRcMOArk7NY9BHUJRydlSDgULn7IinkUqRY2kHOOmkTaRpzfCIA/dA6
-jp8+Q2gP92aMMHJgUBRXAoGBAIR5JcHncySVlyaMSwpSEBeyvKX3o4ortFZWSKR3
-Umk7jGySyKPK5MlGxpia1uFhv6ScLWRGUq/XHcdF8qgUN0dgq66dM0l46UexONyr
-i5fWcX6EimEjoqvglHC0II2W/KW+rvi5Bk8+TJAo+P0UtdVSmY7rbVmp1meZxV1j
-zCF/AoGAcm2nAn275kfGZjXkTCYTZ6IXJgxcc4vXhv573UfNIJnC0Sg9rsgFiXHc
-nuQwFh5pTm4hU7uEknc/IobFLdCqM9mqujuYmboj0pmbRfOsjV9hqcmuo1OrSbJa
-gozzsNqU2I6srVW5SlCwWu1c4rBlBZvcdUtBRRb2b6bnhe29ykg=
------END RSA PRIVATE KEY-----
diff --git a/util/signer/rom-testkey-A.pem b/util/signer/rom-testkey-A.pem
deleted file mode 100644
index 77a69d8448..0000000000
--- a/util/signer/rom-testkey-A.pem
+++ /dev/null
@@ -1,39 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIG4AIBAAKCAYB7AIp3IzOv+FL4TNw2NwTD/Zx/ZOXmRYN14bICBHv9SufXlHT3
-klWR6GYZdGrY4/8VViz+Ax2JU6Rjgm7R4+Dh0Ny8TSlhIFloyVE2Dgb463hONrH+
-N09r7xPM34dMNJRQcd/2ptYD1Q+fnsg874EZtLXY2/b11jjj9mxyDru33MzNcQYm
-lTcAMayQs/nvBzsaUqJvMn89OtMg9BnKJwapcLvFywtNrCiC4iywqQSiqLt/FrbK
-nZd03Z/dT42fHt5h4MYfvT61S6XnkeOgFXD3lDHMbtD/Xg7eDT5Oh+wkSyXlpZHr
-HRLWkvZGSbHwywU91G/K8O05jnhv1q9Tawvxs5AKuqvOjNrhY8u8LgoJ88XhGvGQ
-yzhJuOeuEWomV/9F4CZqbFJ/+mFPRUfbjpRoauX0GCoO/BSSIgijlF2Ax1SoaZoi
-bY8E2TJUBXvxifMvHg/zdxiHeAR/8G5g43jfZz4HJ8PIHdmXRz5/IeK5IdEgSnxx
-5b3Rv/amI6vOe40CAQMCggGAUgBcT2zNH/rh+t3oJCSt1/5oVO3umYOs+UEhVq2n
-/jHv5Q2jT7bjtpruu6Lx5e1UuOQd/qy+W40YQlb0i+1Alos90t4blhWQ8IY2JAlZ
-+0eliXnL/s+KR/S33epaMs24NaE/+cSOrTi1FRSFffUAu83OkJKko+Ql7U7y9rR9
-JT3d3ktZbw4kqsvIYHf79K98vDcW9MxU03yMwKK73BoEcPXSg9yyM8gbAewdyxtY
-bHB8/2R53GkPoz5qk4peahSTRslgZHmnUc4zHp0lmy8LOvaGm++wb1m+5sw/8cte
-Kjdyh7KFYH1Sdzin5Fw5oabdIz+oercj34JJP1Gx1TV0oQA7yjCWDfVfnGgoN7AX
-3QNSW5HonmkaY5TYZ+la7kGocxewN1pLtun03OZDQlpF73dXWYZFWfky4Lc2Egkk
-rE2LjmFQQ5YlYOB+qaxaZCOM7i8BYJHwAMT1kKDXoqqdqqqLwcJcorXdYXME0IMS
-OIfFDhhYgUF1f5Ex/DgcG0RrAoHBAPl7mWuOjpCo6eNcFICvIoR64dNF0ud9lvUG
-RiUD5wTnR0cyGuWqvfDFYw1G4gUQsVsE/dOWPkevetb4RZAMie0tvbR2FIYL0ZgV
-vdbV7puSLWjZF3Ap2AnX9dH7HrxADPd1y84JvhQK3zTurz35AhGEQZM4GyAunxEh
-zfMew3fCKoMzsmky92q+IN4Za6HZPkOMzfJDlc/nRZIU5riCQsoKFWboO2Y9hQUg
-royXy7+CE18jE8QJ6qzt5JgdiPYOxQKBwH43HB14NSntb1ZKFrafvZqnhg9BdXDZ
-2Y7UmD7S9+AQstLnrvS2WTL4l2J4eXlACC3v9T9H+SKbj7nj3wOOUxMFeKb7tjOQ
-+d6x0ZHP96LcnO7m/TMDuKqBrUA4QwS1daHG0klbItmQks79M7oOKW+zoVqWpufX
-qS/taZVn4waQ2M+j71PZX4jKU3dpiLl7YYZKv/BYmrZpTpTqRDRhSZVdVv2b/W3P
-iH/6CLnFe6TUFiwC4+v5ouV4RxOx+K+GKQKBwQCmUmZHtF8LG0aXkrhVyhcC/JaM
-2TdE/mSjWYQYrUSt74TaIWdDxylLLkII2ewDYHY8rf6NDtQvylHkpYO1XbFIySki
-+WMEB+EQDn6POUm9DB5F5g+gG+Vb5U6L/L8oKrNPo900Bn64Bz94nx9+pgFhAtZi
-JWdqyb9gwTP3adelLBxXd8xGIfpHKWs+u50WkNQtCIlMLQ6Kmi5hY0R7AYHcBrjv
-RXzu064Dax8IZTJ/rAzqF2KCsUcd8+26vltOtIMCgcBUJL1o+s4b85+O3A8kan5n
-GllfgPj15pEJ4xAp4fqVYHc3RR9NzuYh+w+W+vumKrAen/jU2qYXEl/RQpStCYy3
-WPsZ/SQiYKaUdou2iqUXPb30mf4iAnscVnOAJYIDI6PBLzbbkhc7tbc0qM0mtBuf
-zRY8ZG9FOnDKnkZjmpdZteXfwp+NO5UF3Dek8QXQ/Ouu3H/1kGckRjRjRtgi64Zj
-k49TvVOeilr//AXRLlJt4rlyrJfypmyY+toNIVB1BBsCgcEA5IYJrpO5qGVWlfnX
-70deEyhKUhEXs91b6Vcf8KJNtxBao3H2B8uGtPrx0nCtxgI7XPYDiqIZ3cQDrjct
-4cLTah0hwaxnoKsB0aGbRWccpn6uDpqa5TVMBIVwUiyWVd+spAxxRDNIcSWn8lYM
-pK6Hc54XEJbaXJXTrAPGj8r4eCScRvJDqJnSzVDTztu1EoHvHrFVFkTMELFhIEmf
-duSuLGNMweNghh8yN5ipOSVp3qog2/hv3l79HIPhVHf3G17j
------END RSA PRIVATE KEY-----