]> git.proxmox.com Git - swtpm.git/blob - tests/test_tpm2_swtpm_cert_ecc
packaging: track dbgsym package for swtpm-libs and swtpm-tools
[swtpm.git] / tests / test_tpm2_swtpm_cert_ecc
1 #!/usr/bin/env bash
2
3 # For the license, see the LICENSE file in the root directory.
4
5 ROOT=${abs_top_builddir:-$(dirname "$0")/..}
6 TESTDIR=${abs_top_testdir:-$(dirname "$0")}
7
8 SWTPM_CERT=${SWTPM_CERT:-${ROOT}/src/swtpm_cert/swtpm_cert}
9
10 cert="$(mktemp)" || exit 1
11
12 trap "cleanup" SIGTERM EXIT
13
14
15 function cleanup()
16 {
17 rm -f ${cert}
18 }
19
20 function check_cert_size()
21 {
22 local cert="$1"
23 local exp="$2"
24
25 # Unfortunately different GnuTLS versions may create certs of different
26 # sizes; deactivate this test for now
27 return
28
29 local size=$(stat -c%s ${cert} 2>/dev/null)
30 if [ $size -ne $exp ]; then
31 echo "Warning: Certificate file has unexpected size."
32 echo " Expected: $exp; found: $size"
33 fi
34 }
35
36 ${SWTPM_CERT} \
37 --tpm2 \
38 --signkey ${TESTDIR}/data/signkey.pem \
39 --issuercert ${TESTDIR}/data/issuercert.pem \
40 --out-cert ${cert} \
41 --ecc-x 61eaf811ea582656ca2a835dd1b9cd63eb196d7ff62711d6e9b8f85e580a47ca \
42 --ecc-y a51efdc71fd6c791a24a75beb50526aa81b44cc598e65b2d5e116084aea4cb5b \
43 --days 3650 \
44 --pem \
45 --tpm-manufacturer IBM --tpm-model swtpm-libtpms --tpm-version 2.0 \
46 --tpm-spec-family 2.0 --tpm-spec-revision 146 --tpm-spec-level 0
47
48 if [ $? -ne 0 ]; then
49 echo "Error: ${SWTPM_CERT} returned error code."
50 exit 1
51 fi
52
53 #expecting size to be constant
54 check_cert_size "{$cert}" 948
55
56 #certtool --certificate-info --infile ${cert}
57 #openssl x509 -in ${cert} -text
58
59 # truncate result file
60 echo -n > ${cert}
61 echo "Test 1: OK"
62
63 ${SWTPM_CERT} \
64 --tpm2 \
65 --signkey ${TESTDIR}/data/signkey.pem \
66 --issuercert ${TESTDIR}/data/issuercert.pem \
67 --out-cert ${cert} \
68 --ecc-x 61eaf811ea582656ca2a835dd1b9cd63eb196d7ff62711d6e9b8f85e580a47ca \
69 --ecc-y a51efdc71fd6c791a24a75beb50526aa81b44cc598e65b2d5e116084aea4cb5b \
70 --days 3650 \
71 --subject "OU=foo,L=NewYork,ST=NY,C=US" \
72 --pem \
73 --tpm-manufacturer IBM --tpm-model swtpm-libtpms --tpm-version 1.2 \
74 --tpm-spec-family 2.0 --tpm-spec-revision 146 --tpm-spec-level 0
75
76 if [ $? -ne 0 ]; then
77 echo "Error: ${SWTPM_CERT} returned error code."
78 exit 1
79 fi
80
81 #expecting size to be constant
82 check_cert_size "{$cert}" 1025
83
84 # truncate result file
85 echo -n > ${cert}
86 echo "Test 2: OK"
87
88 ${SWTPM_CERT} \
89 --tpm2 \
90 --signkey ${TESTDIR}/data/signkey.pem \
91 --issuercert ${TESTDIR}/data/issuercert.pem \
92 --out-cert ${cert} \
93 --pubkey ${TESTDIR}/data/ecpubek.pem \
94 --days 3650 \
95 --subject "OU=foo,L=NewYork,ST=NY,C=US" \
96 --pem \
97 --tpm-manufacturer IBM --tpm-model swtpm-libtpms --tpm-version 1.2 \
98 --tpm-spec-family 2.0 --tpm-spec-revision 146 --tpm-spec-level 0
99
100 if [ $? -ne 0 ]; then
101 echo "Error: ${SWTPM_CERT} returned error code."
102 exit 1
103 fi
104
105 #expecting size to be constant
106 check_cert_size "{$cert}" 1025
107
108 # truncate result file
109 #certtool --certificate-info --infile ${cert}
110 echo -n > ${cert}
111 echo "Test 3: OK"
112
113
114 ###################### Platform Certificate #####################
115
116 ${SWTPM_CERT} \
117 --tpm2 \
118 --type platform \
119 --signkey ${TESTDIR}/data/signkey.pem \
120 --issuercert ${TESTDIR}/data/issuercert.pem \
121 --pubkey ${TESTDIR}/data/ecpubek.pem \
122 --out-cert ${cert} \
123 --days 3650 \
124 --subject "OU=foo,L=NewYork,ST=NY,C=US" \
125 --pem \
126 --tpm-manufacturer IBM --tpm-model swtpm-libtpms --tpm-version 1.2 \
127 --platform-manufacturer Fedora \
128 --platform-model QEMU \
129 --platform-version 2.1
130
131 if [ $? -ne 0 ]; then
132 echo "Error: ${SWTPM_CERT} returned error code."
133 exit 1
134 fi
135
136 #expecting size to be constant
137 check_cert_size "{$cert}" 1070
138
139 # truncate result file
140 #certtool --certificate-info --infile ${cert}
141 echo -n > ${cert}
142 echo "Test 4: OK"