tbb_cert.c 5.77 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * Neither the name of ARM nor the names of its contributors may be used
 * to endorse or promote products derived from this software without specific
 * prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

31
32
33
#include "tbbr/tbb_cert.h"
#include "tbbr/tbb_ext.h"
#include "tbbr/tbb_key.h"
34
35
36
37
38

/*
 * Certificates used in the chain of trust
 *
 * The order of the certificates must follow the enumeration specified in
39
40
 * tbb_cert.h. All certificates are self-signed, so the issuer certificate
 * field points to itself.
41
 */
42
static cert_t tbb_certs[] = {
43
44
45
	[TRUSTED_BOOT_FW_CERT] = {
		.id = TRUSTED_BOOT_FW_CERT,
		.opt = "tb-fw-cert",
46
		.help_msg = "Trusted Boot FW Certificate (output file)",
47
		.fn = NULL,
48
		.cn = "Trusted Boot FW Certificate",
49
		.key = ROT_KEY,
50
		.issuer = TRUSTED_BOOT_FW_CERT,
51
		.ext = {
52
			TRUSTED_FW_NVCOUNTER_EXT,
53
			TRUSTED_BOOT_FW_HASH_EXT
54
		},
55
		.num_ext = 2
56
	},
57
	[TRUSTED_KEY_CERT] = {
58
		.id = TRUSTED_KEY_CERT,
59
		.opt = "trusted-key-cert",
60
		.help_msg = "Trusted Key Certificate (output file)",
61
62
		.fn = NULL,
		.cn = "Trusted Key Certificate",
63
64
65
		.key = ROT_KEY,
		.issuer = TRUSTED_KEY_CERT,
		.ext = {
66
			TRUSTED_FW_NVCOUNTER_EXT,
67
68
			TRUSTED_WORLD_PK_EXT,
			NON_TRUSTED_WORLD_PK_EXT
69
		},
70
		.num_ext = 3
71
	},
72
73
74
	[SCP_FW_KEY_CERT] = {
		.id = SCP_FW_KEY_CERT,
		.opt = "scp-fw-key-cert",
75
		.help_msg = "SCP Firmware Key Certificate (output file)",
76
		.fn = NULL,
77
		.cn = "SCP Firmware Key Certificate",
78
		.key = TRUSTED_WORLD_KEY,
79
		.issuer = SCP_FW_KEY_CERT,
80
		.ext = {
81
			TRUSTED_FW_NVCOUNTER_EXT,
82
			SCP_FW_CONTENT_CERT_PK_EXT
83
		},
84
		.num_ext = 2
85
	},
86
87
88
	[SCP_FW_CONTENT_CERT] = {
		.id = SCP_FW_CONTENT_CERT,
		.opt = "scp-fw-cert",
89
		.help_msg = "SCP Firmware Content Certificate (output file)",
90
		.fn = NULL,
91
92
93
		.cn = "SCP Firmware Content Certificate",
		.key = SCP_FW_CONTENT_CERT_KEY,
		.issuer = SCP_FW_CONTENT_CERT,
94
		.ext = {
95
			TRUSTED_FW_NVCOUNTER_EXT,
96
			SCP_FW_HASH_EXT
97
		},
98
		.num_ext = 2
99
	},
100
101
102
	[SOC_FW_KEY_CERT] = {
		.id = SOC_FW_KEY_CERT,
		.opt = "soc-fw-key-cert",
103
		.help_msg = "SoC Firmware Key Certificate (output file)",
104
		.fn = NULL,
105
		.cn = "SoC Firmware Key Certificate",
106
		.key = TRUSTED_WORLD_KEY,
107
		.issuer = SOC_FW_KEY_CERT,
108
		.ext = {
109
			TRUSTED_FW_NVCOUNTER_EXT,
110
			SOC_FW_CONTENT_CERT_PK_EXT
111
		},
112
		.num_ext = 2
113
	},
114
115
116
	[SOC_FW_CONTENT_CERT] = {
		.id = SOC_FW_CONTENT_CERT,
		.opt = "soc-fw-cert",
117
		.help_msg = "SoC Firmware Content Certificate (output file)",
118
		.fn = NULL,
119
120
121
		.cn = "SoC Firmware Content Certificate",
		.key = SOC_FW_CONTENT_CERT_KEY,
		.issuer = SOC_FW_CONTENT_CERT,
122
		.ext = {
123
			TRUSTED_FW_NVCOUNTER_EXT,
124
			SOC_AP_FW_HASH_EXT
125
		},
126
		.num_ext = 2
127
	},
128
129
130
	[TRUSTED_OS_FW_KEY_CERT] = {
		.id = TRUSTED_OS_FW_KEY_CERT,
		.opt = "tos-fw-key-cert",
131
		.help_msg = "Trusted OS Firmware Key Certificate (output file)",
132
		.fn = NULL,
133
		.cn = "Trusted OS Firmware Key Certificate",
134
		.key = TRUSTED_WORLD_KEY,
135
		.issuer = TRUSTED_OS_FW_KEY_CERT,
136
		.ext = {
137
			TRUSTED_FW_NVCOUNTER_EXT,
138
			TRUSTED_OS_FW_CONTENT_CERT_PK_EXT
139
		},
140
		.num_ext = 2
141
	},
142
143
144
	[TRUSTED_OS_FW_CONTENT_CERT] = {
		.id = TRUSTED_OS_FW_CONTENT_CERT,
		.opt = "tos-fw-cert",
145
		.help_msg = "Trusted OS Firmware Content Certificate (output file)",
146
		.fn = NULL,
147
148
149
		.cn = "Trusted OS Firmware Content Certificate",
		.key = TRUSTED_OS_FW_CONTENT_CERT_KEY,
		.issuer = TRUSTED_OS_FW_CONTENT_CERT,
150
		.ext = {
151
			TRUSTED_FW_NVCOUNTER_EXT,
152
			TRUSTED_OS_FW_HASH_EXT
153
		},
154
		.num_ext = 2
155
	},
156
157
158
	[NON_TRUSTED_FW_KEY_CERT] = {
		.id = NON_TRUSTED_FW_KEY_CERT,
		.opt = "nt-fw-key-cert",
159
		.help_msg = "Non-Trusted Firmware Key Certificate (output file)",
160
		.fn = NULL,
161
		.cn = "Non-Trusted Firmware Key Certificate",
162
		.key = NON_TRUSTED_WORLD_KEY,
163
		.issuer = NON_TRUSTED_FW_KEY_CERT,
164
		.ext = {
165
			NON_TRUSTED_FW_NVCOUNTER_EXT,
166
			NON_TRUSTED_FW_CONTENT_CERT_PK_EXT
167
		},
168
		.num_ext = 2
169
	},
170
171
172
	[NON_TRUSTED_FW_CONTENT_CERT] = {
		.id = NON_TRUSTED_FW_CONTENT_CERT,
		.opt = "nt-fw-cert",
173
		.help_msg = "Non-Trusted Firmware Content Certificate (output file)",
174
		.fn = NULL,
175
176
177
		.cn = "Non-Trusted Firmware Content Certificate",
		.key = NON_TRUSTED_FW_CONTENT_CERT_KEY,
		.issuer = NON_TRUSTED_FW_CONTENT_CERT,
178
		.ext = {
179
			NON_TRUSTED_FW_NVCOUNTER_EXT,
180
			NON_TRUSTED_WORLD_BOOTLOADER_HASH_EXT
181
		},
182
		.num_ext = 2
183
184
185
186
	},
	[FWU_CERT] = {
		.id = FWU_CERT,
		.opt = "fwu-cert",
187
		.help_msg = "Firmware Update Certificate (output file)",
188
		.fn = NULL,
189
		.cn = "Firmware Update Certificate",
190
191
192
		.key = ROT_KEY,
		.issuer = FWU_CERT,
		.ext = {
193
194
195
			SCP_FWU_CFG_HASH_EXT,
			AP_FWU_CFG_HASH_EXT,
			FWU_HASH_EXT
196
197
		},
		.num_ext = 3
198
199
	}
};
200
201

REGISTER_COT(tbb_certs);