Skip to content

Commit 3613b96

Browse files
JuergenReppSITAndreasFuchsTPM
authored andcommitted
xtpm2_getekcertificate: Provide option -u for certs in NV ram.
The option --ek-public (-u) can now used to select the certifcate in NV ram that will be written to the output file. Example: tpm2_createek -G ecc384 -u ek_ecc384.pub -c ek_ecc384.ctx tpm2_getekcertificate -o ek_ecc384.cert -u ek_ecc384.pub An integration test for ecc and rsa certificates is added. Signed-off-by: Juergen Repp <juergen_repp@web.de>
1 parent 2df9b2e commit 3613b96

File tree

3 files changed

+409
-70
lines changed

3 files changed

+409
-70
lines changed

man/tpm2_getekcertificate.1.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ tpm2_getekcertificate -X -x -o ECcert.bin -u ek.pub
134134
```bash
135135
tpm2_getekcertificate -o ECcert.bin
136136
```
137+
## Retrieve EK certificate from TPM NV indices for an EK public key, fail otherwise.
138+
```bash
139+
tpm2_createek -G ecc384 -u ek_ecc384.pub -c ek_ecc384.ctx
140+
tpm2_getekcertificate -o ek_ecc384.cert -u ek_ecc384.pub
141+
```
137142

138143
## Retrieve multiple EK certificates from TPM NV indices only, fail otherwise.
139144
```bash

test/integration/tests/getekcertificate.sh

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,22 +147,22 @@ tpm2 nvundefine -C p $ECC_EK_CERT_NV_INDEX
147147
create_self_signed_ek_cert(){
148148
case "$1" in
149149
*rsa_3072)
150-
openssl genpkey -algorithm RSA -out priv_key.pem \
150+
openssl genpkey -algorithm RSA -out $3 \
151151
-pkeyopt rsa_keygen_bits:3072 > /dev/null 2>&1
152-
openssl req -new -key priv_key.pem -x509 -days 1 \
152+
openssl req -new -key $3 -x509 -days 1 \
153153
-subj "/" -outform DER -out $2
154154
;;
155155
*ecc_nist_p384)
156-
openssl ecparam -name secp384r1 -genkey -out priv_key.pem > /dev/null 2>&1
157-
openssl req -new -key priv_key.pem -x509 -days 1 \
156+
openssl ecparam -name secp384r1 -genkey -out $3 > /dev/null 2>&1
157+
openssl req -new -key $3 -x509 -days 1 \
158158
-subj "/" -outform DER -out $2
159159
;;
160160
*) echo "Unsupported key type $1"; return 1;;
161161
esac
162162
}
163163

164-
create_self_signed_ek_cert rsa_3072 rsa_ek_cert.der
165-
create_self_signed_ek_cert ecc_nist_p384 ecc_ek_cert.der
164+
create_self_signed_ek_cert rsa_3072 rsa_ek_cert.der rsa_priv.pem
165+
create_self_signed_ek_cert ecc_nist_p384 ecc_ek_cert.der ecc_priv.pem
166166

167167
define_ek_cert_nv_index rsa_ek_cert.der $RSA_3072_EK_CERT_NV_INDEX
168168
define_ek_cert_nv_index ecc_ek_cert.der $ECC_NIST_P384_EK_CERT_NV_INDEX
@@ -183,4 +183,18 @@ tpm2 getekcertificate -o nv_rsa_ek_cert.der -o nv_ecc_ek_cert.der
183183
diff nv_ecc_ek_cert.der ecc_low_range_ek_cert.der
184184
diff nv_rsa_ek_cert.der rsa_ek_cert.der
185185

186+
# Check usage of --ek_public (-u) param
187+
188+
tpm2 loadexternal -r rsa_priv.pem -Grsa -c rsa_priv.ctx
189+
tpm2 readpublic -c rsa_priv.ctx -o rsa_pub.tss
190+
tpm2 getekcertificate -u rsa_pub.tss -o nv_rsa_ek_cert.der
191+
diff nv_rsa_ek_cert.der rsa_ek_cert.der
192+
193+
tpm2 loadexternal -r ecc_priv.pem -Gecc -c ecc_priv.ctx
194+
tpm2 readpublic -c ecc_priv.ctx -o ecc_pub.tss
195+
tpm2 getekcertificate -u ecc_pub.tss -o nv_ecc_ek_cert.der
196+
diff nv_ecc_ek_cert.der ecc_ek_cert.der
197+
198+
rm nv_rsa_ek_cert.der nv_ecc_ek_cert.der -f
199+
186200
exit 0

0 commit comments

Comments
 (0)