blob: a945a02a4e3a669936726067267403e4393eb81a [file]
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_library(
name = "manifest_store_view",
srcs = ["manifest_store_view.cc"],
hdrs = ["manifest_store_view.h"],
deps = [
"//constants:labels",
"//cose:sig_structure",
"//jumbf:box",
"//jumbf:parse",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_test(
name = "manifest_store_view_test",
srcs = ["manifest_store_view_test.cc"],
deps = [
":manifest_store_view",
"//constants:labels",
"//cose:sig_structure",
"//jumbf:box",
"//jumbf:test_utils",
"//testing:jumbf_utils",
"//uuid",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_matchers",
"@googletest//:gtest_main",
],
)
cc_library(
name = "claim_cbor_encoder",
srcs = ["claim_cbor_encoder.cc"],
hdrs = ["claim_cbor_encoder.h"],
deps = [
"//cbor",
"//proto:manifest_cbor_proto",
"//proto:manifest_cc_proto",
"@abseil-cpp//absl/base:no_destructor",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
],
)
cc_library(
name = "validator",
srcs = ["validator.cc"],
hdrs = ["validator.h"],
deps = [
"//cbor",
"//cbor:parse",
"//constants:labels",
"//constants:status_codes",
"//cose:verifier",
"//jumbf:box",
"//proto:cose_verification_result_cc_proto",
"//proto:generator_info_cbor_proto",
"//proto:generator_info_cc_proto",
"//proto:hashed_uri_cc_proto",
"//proto:manifest_cc_proto",
"//proto:signature_info_cc_proto",
"//uuid",
"//validator:tracker",
"@abseil-cpp//absl/log:absl_log",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/types:span",
],
)
cc_test(
name = "validator_test",
srcs = ["validator_test.cc"],
deps = [
":validator",
"//constants:labels",
"//constants:status_codes",
"//jumbf:box_builder",
"//jumbf:constants",
"//jumbf:encode_params",
"//proto:cose_verification_result_cc_proto",
"//proto:manifest_cc_proto",
"//proto:signature_info_cc_proto",
"//testing:cbor_utils",
"//testing:jumbf_utils",
"//testing:mock_cose_verifier",
"//testing:proto_test_utils",
"//testing:test_validation_tracker",
"//uuid",
"//validator:tracker",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:cord",
"@googletest//:gtest_main",
],
)
cc_library(
name = "signer",
hdrs = ["signer.h"],
deps = [
"//async:async_context",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_library(
name = "local_signer",
srcs = ["local_signer.cc"],
hdrs = ["local_signer.h"],
deps = [
":signer",
"//async:async_context",
"//cose:sig_structure",
"//cose:timestamp_creator",
"//crypto:crypto_write_handler",
"//crypto:hash",
"//utils:cbor_padding",
"@abseil-cpp//absl/base:nullability",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/log:absl_log",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/time",
],
)
cc_test(
name = "local_signer_test",
srcs = ["local_signer_test.cc"],
deps = [
":local_signer",
":signer",
"//async:async_context",
"//cose:sig_structure",
"//cose:verifier",
"//crypto:algorithms",
"//crypto:crypto_read_handler",
"//crypto:crypto_write_handler",
"//crypto:timestamp_write_handler",
"//crypto/default:default_crypto_read_handler",
"//crypto/default:hasher",
"//proto:cose_verification_result_cc_proto",
"//proto:signature_info_cc_proto",
"//testing:create_test_crypto_write_handler",
"//testing:local_key_crypto_write_handler",
"//testing:proto_test_utils",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/synchronization",
"@googletest//:gtest_main",
"@protobuf//:differencer",
],
)
cc_library(
name = "manifest_store_builder",
srcs = ["manifest_store_builder.cc"],
hdrs = ["manifest_store_builder.h"],
deps = [
":manifest_store_view",
"//constants:labels",
"//crypto:hash",
"//jumbf:box",
"//jumbf:box_builder",
"//jumbf:encode_params",
"//jumbf:utils",
"//proto:hashed_uri_cc_proto",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:cord",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_test(
name = "manifest_store_builder_test",
srcs = ["manifest_store_builder_test.cc"],
deps = [
":manifest_store_builder",
"//assertion:assertion_encoder",
"//constants:labels",
"//crypto:algorithms",
"//crypto:hash",
"//crypto/default:hasher",
"//jumbf:box",
"//jumbf:box_builder",
"//jumbf:encode_params",
"//jumbf:parse",
"//jumbf:test_utils",
"//proto:assertion_cc_proto",
"//proto:hashed_uri_cc_proto",
"//testing:proto_test_utils",
"//uuid",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:cord",
"@abseil-cpp//absl/strings:string_view",
"@googletest//:gtest_main",
],
)
cc_library(
name = "manifest_box",
hdrs = ["manifest_box.h"],
deps = [
":manifest_store_builder",
"//proto:assertion_cc_proto",
"//proto:generator_cc_proto",
],
)
cc_library(
name = "manifest_box_encoder",
srcs = ["manifest_box_encoder.cc"],
hdrs = ["manifest_box_encoder.h"],
deps = [
":claim_cbor_encoder",
":manifest_box",
":signer",
"//assertion:assertion_encoder",
"//assertion:assertion_referencer",
"//async:async_context",
"//constants:labels",
"//crypto:algorithms",
"//jumbf:box_builder",
"//jumbf:constants",
"//proto:actions_assertion_cc_proto",
"//proto:assertion_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:hashed_uri_cc_proto",
"//proto:manifest_cc_proto",
"//proto:multi_asset_hash_assertion_cc_proto",
"//uuid",
"@abseil-cpp//absl/base:nullability",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:cord",
"@abseil-cpp//absl/strings:string_view",
"@protobuf//:protobuf_lite",
],
)
cc_test(
name = "manifest_box_encoder_test",
srcs = ["manifest_box_encoder_test.cc"],
deps = [
":claim_cbor_encoder",
":local_signer",
":manifest_box",
":manifest_box_encoder",
":manifest_store_builder",
":signer",
"//assertion:assertion_encoder",
"//assertion:assertion_referencer",
"//async:async_context",
"//constants:labels",
"//crypto:algorithms",
"//crypto:crypto_read_handler",
"//crypto:crypto_write_handler",
"//crypto:hash",
"//crypto/default:default_crypto_read_handler",
"//crypto/default:hasher",
"//jumbf:box_builder",
"//proto:actions_assertion_cc_proto",
"//proto:assertion_cc_proto",
"//proto:generator_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:hashed_uri_cc_proto",
"//proto:ingredient_assertion_cc_proto",
"//proto:manifest_cc_proto",
"//proto:signature_info_cc_proto",
"//proto:validation_result_cc_proto",
"//proto:validation_status_cc_proto",
"//testing:create_test_crypto_write_handler",
"//testing:local_key_crypto_write_handler",
"//testing:manifest_store_test_utils",
"//testing:proto_test_utils",
"//uuid",
"@abseil-cpp//absl/log:absl_check",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:cord",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/synchronization",
"@googletest//:gtest_main",
"@protobuf//:differencer",
],
)
cc_library(
name = "timestamp_updater",
srcs = ["timestamp_updater.cc"],
hdrs = ["timestamp_updater.h"],
deps = [
":manifest_store_view",
"//async:async_context",
"//cose:sig_structure",
"//cose:timestamp_creator",
"//cose:timestamp_updater",
"@abseil-cpp//absl/base:nullability",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_test(
name = "timestamp_updater_test",
srcs = ["timestamp_updater_test.cc"],
deps = [
":timestamp_updater",
"//async:async_context",
"//constants:labels",
"//cose:sig_structure",
"//cose:timestamp_creator",
"//crypto:crypto_read_handler",
"//crypto:hash",
"//crypto:timestamp_write_handler",
"//crypto/default:default_crypto_read_handler",
"//crypto/default:hasher",
"//jumbf:test_utils",
"//proto:validation_result_cc_proto",
"//testing:create_test_crypto_write_handler",
"//testing:manifest_store_test_utils",
"//validator:manifest_store_validator_impl",
"//validator:validator_options",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/synchronization",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/time:clock_interface",
"@abseil-cpp//absl/time:simulated_clock",
"@googletest//:gtest_main",
"@protobuf//:timestamp_cc_proto",
],
)
cc_library(
name = "manifest_box_assembler",
srcs = ["manifest_box_assembler.cc"],
hdrs = ["manifest_box_assembler.h"],
deps = [
":manifest_box",
":manifest_store_builder",
"//constants:ingredient_relationships",
"//constants:labels",
"//constants:spec_version",
"//crypto:hash",
"//proto:actions_assertion_cc_proto",
"//proto:assertion_cc_proto",
"//proto:bmff_based_hash_assertion_cc_proto",
"//proto:boxes_hash_assertion_cc_proto",
"//proto:collection_data_hash_assertion_cc_proto",
"//proto:data_hash_assertion_cc_proto",
"//proto:generator_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:hashed_uri_cc_proto",
"//proto:ingredient_assertion_cc_proto",
"//proto:ingredient_validation_result_cc_proto",
"//proto:multi_asset_hash_assertion_cc_proto",
"//utils:cbor_padding",
"//uuid",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_macros",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_test(
name = "manifest_box_assembler_test",
srcs = ["manifest_box_assembler_test.cc"],
deps = [
":manifest_box",
":manifest_box_assembler",
":manifest_store_builder",
"//constants:labels",
"//constants:spec_version",
"//crypto/default:hasher",
"//jumbf:test_utils",
"//proto:assertion_cc_proto",
"//proto:bmff_based_hash_assertion_cc_proto",
"//proto:generator_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:ingredient_assertion_cc_proto",
"//proto:ingredient_validation_result_cc_proto",
"//proto:manifest_cc_proto",
"//proto:signature_info_cc_proto",
"//testing:proto_test_utils",
"//uuid",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/strings",
"@googletest//:gtest_main",
],
)
cc_library(
name = "generator",
srcs = ["generator.cc"],
hdrs = ["generator.h"],
deps = [
":claim_cbor_encoder",
":manifest_box",
":manifest_box_assembler",
":manifest_box_encoder",
":signer",
"//assertion:assertion_encoder",
"//assertion:assertion_referencer",
"//async:async_context",
"//constants:spec_version",
"//crypto:hash",
"//proto:actions_assertion_cc_proto",
"//proto:assertion_cc_proto",
"//proto:bmff_based_hash_assertion_cc_proto",
"//proto:boxes_hash_assertion_cc_proto",
"//proto:data_hash_assertion_cc_proto",
"//proto:generator_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:hashed_uri_cc_proto",
"//proto:manifest_cc_proto",
"//uuid",
"@abseil-cpp//absl/base:nullability",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/log:die_if_null",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
],
)
cc_test(
name = "generator_test",
srcs = ["generator_test.cc"],
deps = [
":claim_cbor_encoder",
":generator",
":local_signer",
":manifest_box",
":manifest_box_assembler",
":manifest_box_encoder",
":manifest_store_builder",
":signer",
"//assertion:assertion_encoder",
"//async:async_context",
"//crypto:crypto_read_handler",
"//crypto:crypto_write_handler",
"//crypto/default:default_crypto_read_handler",
"//crypto/default:hasher",
"//jumbf:box_builder",
"//proto:assertion_cc_proto",
"//proto:generator_cc_proto",
"//proto:generator_info_cc_proto",
"//proto:manifest_cc_proto",
"//proto:signature_info_cc_proto",
"//proto:validation_result_cc_proto",
"//testing:create_test_crypto_write_handler",
"//testing:manifest_store_test_utils",
"//testing:proto_test_utils",
"//uuid",
"@abseil-cpp//absl/log:absl_check",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:status_matchers",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:cord",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/synchronization",
"@googletest//:gtest_main",
"@protobuf//:differencer",
],
)