blob: 019c845cafe0a65463074bb41839c200523bb11d [file] [log] [blame]
Darren Krahn43e12d82017-02-24 16:26:31 -08001#!/bin/bash
2
3#
4# Copyright (C) 2016 The Android Open Source Project
5#
6# Permission is hereby granted, free of charge, to any person
7# obtaining a copy of this software and associated documentation
8# files (the "Software"), to deal in the Software without
9# restriction, including without limitation the rights to use, copy,
10# modify, merge, publish, distribute, sublicense, and/or sell copies
11# of the Software, and to permit persons to whom the Software is
12# furnished to do so, subject to the following conditions:
13#
14# The above copyright notice and this permission notice shall be
15# included in all copies or substantial portions of the Software.
16#
17# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24# SOFTWARE.
25#
26
27# This shell-script generates ATX test data in the working directory.
28# An avbtool executable is assumed to reside in the parent directory
29# of this script.
30#
31# The *atx* test data in the test/data/ directory was generated with
32# this script. It is consistent with the expectations of avbtool unit
33# tests and ATX unit tests. This script exists as a record of how the
34# data was generated and as a convenience if it ever needs to be
35# generated again.
36#
37# Typical usage:
38#
39# $ cd test/data; ../avb_atx_generate_test_data
40
41set -e
42
43TMP_FILE=$(mktemp /tmp/atx_generator.XXXXXXXXXX)
44trap "rm -f '${TMP_FILE}'" EXIT
45
46AVBTOOL=$(dirname "$0")/../avbtool
47
48echo AVBTOOL = ${AVBTOOL}
49
50# Get a random product ID.
51head -c 16 /dev/urandom > atx_product_id.bin
52
53# Generate key pairs.
54openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -outform PEM \
55 -out testkey_atx_prk.pem
56openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -outform PEM \
57 -out testkey_atx_pik.pem
58openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -outform PEM \
59 -out testkey_atx_psk.pem
60
61# Construct permanent attributes.
62${AVBTOOL} make_atx_permanent_attributes --output=atx_permanent_attributes.bin \
63 --product_id=atx_product_id.bin --root_authority_key=testkey_atx_prk.pem
64
65# Construct a PIK certificate.
66echo -n "fake PIK subject" > ${TMP_FILE}
67${AVBTOOL} make_atx_certificate --output=atx_pik_certificate.bin \
68 --subject=${TMP_FILE} --subject_key=testkey_atx_pik.pem \
69 --subject_is_intermediate_authority --subject_key_version 42 \
70 --authority_key=testkey_atx_prk.pem
71
72# Construct a PSK certificate.
73${AVBTOOL} make_atx_certificate --output=atx_psk_certificate.bin \
74 --subject=atx_product_id.bin --subject_key=testkey_atx_psk.pem \
75 --subject_key_version 42 --authority_key=testkey_atx_pik.pem
76
77# Construct metadata.
78${AVBTOOL} make_atx_metadata --output=atx_metadata.bin \
79 --intermediate_key_certificate=atx_pik_certificate.bin \
80 --product_key_certificate=atx_psk_certificate.bin
81