blob: 4e61d9f11b1d2733013f786e4994c75ad77776d6 [file] [log] [blame]
Subkey
======
A TA or a subkey can be signed with a subkey instead of the root key. Here
we're trying to describe the relationship between the different subkeys and
keys used for the subkey test TAs.
We start with a two level subkey hierachy to be able to test more when the
subkey chain consist of more than a single subkey signed with the root key.
The relationship of the different subkeys and TAs are as follows:
root_key
|-- identity_subkey2
| `-- subkey2_ta
`-- top_level_subkey
`-- mid_level_subkey
`-- subkey1_ta
The keys themselves where generated using:
openssl genrsa -out top_level_subkey.pem
openssl genrsa -out mid_level_subkey.pem
openssl genrsa -out identity_subkey2.pem
The top level subkey is signed with the root key using (where the UUID is
generated):
../../optee_os/scripts/sign_encrypt.py sign-subkey \
--uuid f04fa996-148a-453c-b037-1dcfbad120a6 \
--key ../../optee_os/keys/default_ta.pem --in top_level_subkey.pem \
--out top_level_subkey.bin --max-depth 4 --name-size 64 \
--subkey-version 1
The mid level subkey has to have a UUID in the namespace of the top level
level subkey. The UUID is determined as
UUIDv5_SHA512(f04fa996-148a-453c-b037-1dcfbad120a6, "mid_level_subkey") =
1a5948c5-1aa0-518c-86f4-be6f6a057b16
where UUIDv5_SHA512() denotes the UUIDv5 scheme with SHA512 used instead of
SHA1 and truncated to 20 bytes
The sign script can do this with:
../../optee_os/scripts/sign_encrypt.py subkey-uuid --in top_level_subkey.bin \
--name mid_level_subkey
Subkey UUID: f04fa996-148a-453c-b037-1dcfbad120a6
Next subkey UUID: 1a5948c5-1aa0-518c-86f4-be6f6a057b16
The mid level subkey is signed using:
../../optee_os/scripts/sign_encrypt.py sign-subkey \
--uuid 1a5948c5-1aa0-518c-86f4-be6f6a057b16 \
--key top_level_subkey.pem --subkey top_level_subkey.bin \
--name-size 64 --subkey-version 1 \
--name mid_level_subkey \
--in mid_level_subkey.pem --out mid_level_subkey.bin
The UUID of subkey1 TA is calculated using:
../../optee_os/scripts/sign_encrypt.py subkey-uuid --in mid_level_subkey.bin \
--name subkey1_ta
Subkey UUID: f04fa996-148a-453c-b037-1dcfbad120a6
Subkey UUID: 1a5948c5-1aa0-518c-86f4-be6f6a057b16
Next subkey UUID: 5c206987-16a3-59cc-ab0f-64b9cfc9e758
Subkey1 TA is signed as part of the build process.
The identity_subkey2 subkey is signed using (where the UUID is generated):
../../optee_os/scripts/sign_encrypt.py sign-subkey \
--uuid a720ccbb-51da-417d-b82e-e5445d474a7a \
--key ../../optee_os/keys/default_ta.pem --in identity_subkey2.pem \
--out identity_subkey2.bin --max-depth 0 --name-size 0 \
--subkey-version 1