blob: f2c68a9f39767fee48b36618ab6bf170cdbb8816 [file] [log] [blame]
Darren Krahn0762a2e2021-02-05 15:41:20 -08001# Copyright 2020 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7# https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15import("//build_overrides/pigweed.gni")
16import("$dir_pw_bloat/bloat.gni")
17import("$dir_pw_build/target_types.gni")
18import("$dir_pw_unit_test/test.gni")
19
20group("default") {
21 deps = [
22 ":fuzzers(//toolchains:host_fuzz)",
23 ":optimized_libs(//toolchains:host_optimized)",
Andrew Scull5d6eeec2021-07-22 18:59:49 +000024 ":tests.run(//toolchains:host_debug)",
Darren Krahn0762a2e2021-02-05 15:41:20 -080025 ]
26}
27
Andrew Scull3a1a3532021-03-14 23:17:08 +000028pw_source_set("cbor_writer") {
29 public = [
30 "include/dice/cbor_writer.h",
31 ]
32 sources = [ "src/cbor_writer.c" ]
33}
34
Andrew Scull87d91de2021-05-17 10:53:49 +000035pw_source_set("cbor_reader") {
36 public = [
37 "include/dice/cbor_reader.h",
38 ]
39 sources = [ "src/cbor_reader.c" ]
40}
41
Andrew Scullfe353802021-08-02 17:26:08 +000042config("standalone_ops_config") {
43 include_dirs = [ "//include/dice/config/standalone" ]
44}
45
Darren Krahn0762a2e2021-02-05 15:41:20 -080046pw_static_library("dice_standalone") {
Andrew Scullfe353802021-08-02 17:26:08 +000047 public = [
48 "include/dice/dice.h",
49 "include/dice/utils.h",
50 ]
51 sources = [
52 "src/clear_memory.c",
53 "src/dice.c"
54 ]
55 all_dependent_configs = [ ":standalone_ops_config" ]
56}
57
58config("boringssl_ed25519_ops_config") {
59 include_dirs = [ "//include/dice/config/boringssl_ed25519" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -080060}
61
62pw_static_library("dice_with_boringssl_ops") {
Andrew Scullfe353802021-08-02 17:26:08 +000063 public = [
64 "include/dice/dice.h",
65 "include/dice/utils.h",
66 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -080067 sources = [
68 "src/boringssl_cert_op.c",
Atul Luykx459f5972022-02-14 16:19:26 -080069 "src/boringssl_hash_kdf_ops.c",
70 "src/boringssl_ed25519_ops.c",
Andrew Scullfe353802021-08-02 17:26:08 +000071 "src/clear_memory.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -080072 "src/dice.c",
Andrew Scullfe353802021-08-02 17:26:08 +000073 "src/utils.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -080074 ]
75 deps = [
Darren Krahn0762a2e2021-02-05 15:41:20 -080076 "//third_party/boringssl:crypto",
77 ]
Andrew Scullfe353802021-08-02 17:26:08 +000078 all_dependent_configs = [ ":boringssl_ed25519_ops_config" ]
79}
80
81config("mbedtls_ops_config") {
82 include_dirs = [ "//include//dice/config/mbedtls_ecdsa_p256" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -080083}
84
85pw_static_library("dice_with_mbedtls_ops") {
Andrew Scullfe353802021-08-02 17:26:08 +000086 public = [
87 "include/dice/dice.h",
88 "include/dice/utils.h",
89 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -080090 sources = [
Andrew Scullfe353802021-08-02 17:26:08 +000091 "src/clear_memory.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -080092 "src/dice.c",
93 "src/mbedtls_ops.c",
Andrew Scullfe353802021-08-02 17:26:08 +000094 "src/utils.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -080095 ]
96 deps = [
Darren Krahn0762a2e2021-02-05 15:41:20 -080097 "//third_party/mbedtls:mbedcrypto",
98 ]
Andrew Scullfe353802021-08-02 17:26:08 +000099 all_dependent_configs = [ ":mbedtls_ops_config" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800100}
101
102pw_static_library("dice_with_cbor_cert") {
Andrew Scullfe353802021-08-02 17:26:08 +0000103 public = [
104 "include/dice/dice.h",
105 "include/dice/utils.h",
106 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800107 sources = [
Atul Luykx459f5972022-02-14 16:19:26 -0800108 "src/boringssl_hash_kdf_ops.c",
109 "src/boringssl_ed25519_ops.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800110 "src/cbor_cert_op.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000111 "src/clear_memory.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800112 "src/dice.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000113 "src/utils.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800114 ]
115 deps = [
Andrew Scull3a1a3532021-03-14 23:17:08 +0000116 ":cbor_writer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800117 "//third_party/boringssl:crypto",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800118 ]
Andrew Scullfe353802021-08-02 17:26:08 +0000119 all_dependent_configs = [ ":boringssl_ed25519_ops_config" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800120}
121
122pw_static_library("dice_with_cbor_template_cert") {
Andrew Scullfe353802021-08-02 17:26:08 +0000123 public = [
124 "include/dice/dice.h",
125 "include/dice/utils.h",
126 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800127 sources = [
Atul Luykx459f5972022-02-14 16:19:26 -0800128 "src/boringssl_hash_kdf_ops.c",
129 "src/boringssl_ed25519_ops.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000130 "src/clear_memory.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800131 "src/dice.c",
132 "src/template_cbor_cert_op.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000133 "src/utils.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800134 ]
135 deps = [
Darren Krahn0762a2e2021-02-05 15:41:20 -0800136 "//third_party/boringssl:crypto",
137 ]
Andrew Scullfe353802021-08-02 17:26:08 +0000138 all_dependent_configs = [ ":boringssl_ed25519_ops_config" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800139}
140
141pw_static_library("dice_with_x509_template_cert") {
Andrew Scullfe353802021-08-02 17:26:08 +0000142 public = [
143 "include/dice/dice.h",
144 "include/dice/utils.h",
145 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800146 sources = [
Atul Luykx459f5972022-02-14 16:19:26 -0800147 "src/boringssl_hash_kdf_ops.c",
148 "src/boringssl_ed25519_ops.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000149 "src/clear_memory.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800150 "src/dice.c",
151 "src/template_cert_op.c",
Andrew Scullfe353802021-08-02 17:26:08 +0000152 "src/utils.c",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800153 ]
154 deps = [
Darren Krahn0762a2e2021-02-05 15:41:20 -0800155 "//third_party/boringssl:crypto",
156 ]
Andrew Scullfe353802021-08-02 17:26:08 +0000157 all_dependent_configs = [ ":boringssl_ed25519_ops_config" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800158}
159
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000160pw_source_set("fuzzer") {
161 sources = [ "src/fuzzer.cc" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800162}
163
Andrew Scull3a1a3532021-03-14 23:17:08 +0000164pw_test("cbor_writer_test") {
165 sources = [ "src/cbor_writer_test.cc" ]
166 deps = [
167 ":cbor_writer",
168 ]
169}
170
Andrew Scull87d91de2021-05-17 10:53:49 +0000171pw_test("cbor_reader_test") {
172 sources = [ "src/cbor_reader_test.cc" ]
173 deps = [
174 ":cbor_reader",
175 ]
176}
177
Andrew Scull3a1a3532021-03-14 23:17:08 +0000178pw_executable("cbor_writer_fuzzer") {
179 sources = [ "src/cbor_writer_fuzzer.cc" ]
180 deps = [
181 ":cbor_writer",
182 ]
183}
184
Andrew Scull87d91de2021-05-17 10:53:49 +0000185pw_executable("cbor_reader_fuzzer") {
186 sources = [ "src/cbor_reader_fuzzer.cc" ]
187 deps = [
188 ":cbor_reader",
189 ]
190}
191
Darren Krahn0762a2e2021-02-05 15:41:20 -0800192pw_test("dice_test") {
193 sources = [ "src/dice_test.cc" ]
194 deps = [
195 ":dice_standalone",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800196 "//third_party/boringssl:crypto",
197 ]
198}
199
200pw_test("boringssl_ops_test") {
Andrew Scullfe353802021-08-02 17:26:08 +0000201 sources = [
202 "src/boringssl_ops_test.cc",
203 "src/test_utils.cc",
204 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800205 deps = [
206 ":dice_with_boringssl_ops",
Andrew Scullfe353802021-08-02 17:26:08 +0000207 "//third_party/boringssl:crypto",
208 "//third_party/cose-c:cose-c",
209 "$dir_pw_string:pw_string",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800210 ]
211}
212
213pw_executable("boringssl_ops_fuzzer") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800214 deps = [
215 ":dice_with_boringssl_ops",
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000216 ":fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800217 ]
218}
219
220pw_test("template_cert_op_test") {
Andrew Scullfe353802021-08-02 17:26:08 +0000221 sources = [
222 "src/template_cert_op_test.cc",
223 "src/test_utils.cc",
224 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800225 deps = [
226 ":dice_with_x509_template_cert",
Andrew Scullfe353802021-08-02 17:26:08 +0000227 "//third_party/boringssl:crypto",
228 "//third_party/cose-c:cose-c",
229 "$dir_pw_string:pw_string",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800230 ]
231}
232
233pw_executable("template_cert_op_fuzzer") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800234 deps = [
235 ":dice_with_x509_template_cert",
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000236 ":fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800237 ]
238}
239
240pw_test("cbor_cert_op_test") {
Andrew Scullfe353802021-08-02 17:26:08 +0000241 sources = [
242 "src/cbor_cert_op_test.cc",
243 "src/test_utils.cc",
244 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800245 deps = [
246 ":dice_with_cbor_cert",
Andrew Scullfe353802021-08-02 17:26:08 +0000247 "//third_party/boringssl:crypto",
248 "//third_party/cose-c:cose-c",
249 "$dir_pw_string:pw_string",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800250 ]
251}
252
253pw_executable("cbor_cert_op_fuzzer") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800254 deps = [
255 ":dice_with_cbor_cert",
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000256 ":fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800257 ]
258}
259
260pw_test("template_cbor_cert_op_test") {
Andrew Scullfe353802021-08-02 17:26:08 +0000261 sources = [
262 "src/template_cbor_cert_op_test.cc",
263 "src/test_utils.cc",
264 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800265 deps = [
266 ":dice_with_cbor_template_cert",
Andrew Scullfe353802021-08-02 17:26:08 +0000267 "//third_party/boringssl:crypto",
268 "//third_party/cose-c:cose-c",
269 "$dir_pw_string:pw_string",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800270 ]
271}
272
273pw_executable("template_cbor_cert_op_fuzzer") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800274 deps = [
275 ":dice_with_cbor_template_cert",
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000276 ":fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800277 ]
278}
279
280pw_test("mbedtls_ops_test") {
Andrew Scullfe353802021-08-02 17:26:08 +0000281 sources = [
282 "src/mbedtls_ops_test.cc",
283 "src/test_utils.cc",
284 ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800285 deps = [
286 ":dice_with_mbedtls_ops",
Andrew Scullfe353802021-08-02 17:26:08 +0000287 "//third_party/boringssl:crypto",
288 "//third_party/cose-c:cose-c",
289 "$dir_pw_string:pw_string",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800290 ]
291}
292
293pw_executable("mbedtls_ops_fuzzer") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800294 deps = [
295 ":dice_with_mbedtls_ops",
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000296 ":fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800297 ]
298}
299
300pw_test_group("tests") {
301 tests = [
302 ":boringssl_ops_test",
303 ":cbor_cert_op_test",
Andrew Scull87d91de2021-05-17 10:53:49 +0000304 ":cbor_reader_test",
Andrew Scull3a1a3532021-03-14 23:17:08 +0000305 ":cbor_writer_test",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800306 ":dice_test",
307 ":mbedtls_ops_test",
308 ":template_cbor_cert_op_test",
309 ":template_cert_op_test",
Andrew Scull190b4382021-10-13 18:38:51 +0000310 "//src/android:bcc_test",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800311 ]
312}
313
314group("fuzzers") {
315 deps = [
316 ":boringssl_ops_fuzzer",
317 ":cbor_cert_op_fuzzer",
Andrew Scull87d91de2021-05-17 10:53:49 +0000318 ":cbor_reader_fuzzer",
Andrew Scull3a1a3532021-03-14 23:17:08 +0000319 ":cbor_writer_fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800320 ":mbedtls_ops_fuzzer",
321 ":template_cbor_cert_op_fuzzer",
322 ":template_cert_op_fuzzer",
Andrew Scull190b4382021-10-13 18:38:51 +0000323 "//src/android:bcc_fuzzer",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800324 ]
325}
326
327pw_static_library("empty_lib") {
328}
329
330pw_executable("empty_main") {
331 sources = [ "src/empty_main.c" ]
332}
333
334pw_executable("dice_standalone_main") {
335 sources = [ "src/dice_standalone_main.c" ]
Andrew Scullfe353802021-08-02 17:26:08 +0000336 deps = [ ":dice_standalone" ]
Darren Krahn0762a2e2021-02-05 15:41:20 -0800337}
338
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000339pw_source_set("dice_main") {
340 sources = [ "src/dice_main.c" ]
341}
342
Darren Krahn0762a2e2021-02-05 15:41:20 -0800343pw_executable("dice_with_boringssl_ops_main") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800344 deps = [
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000345 ":dice_main",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800346 ":dice_with_boringssl_ops",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800347 ]
348}
349
350pw_executable("dice_with_mbedtls_ops_main") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800351 deps = [
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000352 ":dice_main",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800353 ":dice_with_mbedtls_ops",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800354 ]
355}
356
357pw_executable("dice_with_cbor_cert_main") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800358 deps = [
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000359 ":dice_main",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800360 ":dice_with_cbor_cert",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800361 ]
362}
363
364pw_executable("dice_with_cbor_template_cert_main") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800365 deps = [
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000366 ":dice_main",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800367 ":dice_with_cbor_template_cert",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800368 ]
369}
370
371pw_executable("dice_with_x509_template_cert_main") {
Darren Krahn0762a2e2021-02-05 15:41:20 -0800372 deps = [
Andrew Scull5d6eeec2021-07-22 18:59:49 +0000373 ":dice_main",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800374 ":dice_with_x509_template_cert",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800375 ]
376}
377
378pw_size_report("executable_size_report") {
379 title = "Executable sizes (includes thirdparty deps)"
380 base = ":empty_main"
381 binaries = [
382 {
383 target = ":dice_standalone_main"
384 label = "DiceMainFlow only (No Ops)"
385 },
386 {
387 target = ":dice_with_boringssl_ops_main"
388 label = "Boringssl Ops"
389 base = ":dice_standalone_main"
390 },
391 {
392 target = ":dice_with_mbedtls_ops_main"
393 label = "MbedTLS Ops"
394 base = ":dice_standalone_main"
395 },
396 {
397 target = ":dice_with_cbor_cert_main"
398 label = "Boringssl with CBOR Cert"
399 base = ":dice_with_boringssl_ops_main"
400 },
401 {
402 target = ":dice_with_cbor_template_cert_main"
403 label = "Boringssl with CBOR Template Cert"
404 base = ":dice_with_boringssl_ops_main"
405 },
406 {
407 target = ":dice_with_x509_template_cert_main"
408 label = "Boringssl with X.509 Template Cert"
409 base = ":dice_with_boringssl_ops_main"
410 },
411 ]
412}
413
414pw_size_report("library_size_report") {
415 title = "Library sizes (excludes thirdparty deps)"
416 base = ":empty_lib"
417 binaries = [
418 {
419 target = ":dice_standalone"
420 label = "DICE Standalone (No Ops)"
421 },
422 {
423 target = ":dice_with_boringssl_ops"
424 label = "Boringssl Ops"
425 base = ":dice_standalone"
426 },
427 {
428 target = ":dice_with_mbedtls_ops"
429 label = "MbedTLS Ops"
430 base = ":dice_standalone"
431 },
432 {
433 target = ":dice_with_cbor_cert"
434 label = "CBOR Cert"
435 base = ":dice_standalone"
436 },
437 {
438 target = ":dice_with_cbor_template_cert"
439 label = "CBOR Template Cert"
440 base = ":dice_standalone"
441 },
442 {
443 target = ":dice_with_x509_template_cert"
444 label = "X.509 Template Cert"
445 base = ":dice_standalone"
446 },
447 ]
448}
449
450group("optimized_libs") {
451 deps = [
452 ":dice_standalone",
453 ":dice_with_boringssl_ops",
454 ":dice_with_cbor_cert",
455 ":dice_with_cbor_template_cert",
456 ":dice_with_mbedtls_ops",
457 ":dice_with_x509_template_cert",
458 ":executable_size_report",
459 ":library_size_report",
Andrew Scull190b4382021-10-13 18:38:51 +0000460 "//src/android:bcc",
Darren Krahn0762a2e2021-02-05 15:41:20 -0800461 ]
462}