|  | package { | 
|  | default_visibility: [":__subpackages__"], | 
|  | default_applicable_licenses: ["Android-Apache-2.0"], | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libdiced_open_dice_defaults", | 
|  | crate_name: "diced_open_dice", | 
|  | srcs: ["src/lib.rs"], | 
|  | static_libs: [ | 
|  | "libopen_dice_cbor", | 
|  | ], | 
|  | vendor_available: true, | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "com.android.virt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_library_rlib { | 
|  | name: "libdiced_open_dice_nostd", | 
|  | defaults: ["libdiced_open_dice_defaults"], | 
|  | rustlibs: [ | 
|  | "libopen_dice_bcc_bindgen_nostd", | 
|  | "libopen_dice_cbor_bindgen_nostd", | 
|  | "libzeroize_nostd", | 
|  | ], | 
|  | whole_static_libs: [ | 
|  | "libopen_dice_cbor", | 
|  | "libcrypto_baremetal", | 
|  | ], | 
|  | visibility: [ | 
|  | "//packages/modules/Virtualization:__subpackages__", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_library { | 
|  | name: "libdiced_open_dice", | 
|  | defaults: ["libdiced_open_dice_defaults"], | 
|  | rustlibs: [ | 
|  | "libopen_dice_bcc_bindgen", | 
|  | "libopen_dice_cbor_bindgen", | 
|  | "libzeroize", | 
|  | ], | 
|  | features: [ | 
|  | "std", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "libcrypto", | 
|  | ], | 
|  | whole_static_libs: [ | 
|  | "libopen_dice_bcc", | 
|  | ], | 
|  | visibility: [ | 
|  | "//system/security/diced:__subpackages__", | 
|  | "//packages/modules/Virtualization:__subpackages__", | 
|  | "//hardware/interfaces/security/dice/aidl:__subpackages__", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libdiced_open_dice_test_defaults", | 
|  | crate_name: "diced_open_dice_test", | 
|  | srcs: ["tests/*.rs"], | 
|  | test_suites: ["general-tests"], | 
|  | } | 
|  |  | 
|  | rust_test { | 
|  | name: "libdiced_open_dice.integration_test", | 
|  | defaults: ["libdiced_open_dice_test_defaults"], | 
|  | rustlibs: [ | 
|  | "libdiced_open_dice", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_test { | 
|  | name: "libdiced_open_dice_nostd.integration_test", | 
|  | defaults: ["libdiced_open_dice_test_defaults"], | 
|  | rustlibs: [ | 
|  | "libdiced_open_dice_nostd", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libopen_dice_bindgen_nostd.rust_defaults", | 
|  | bindgen_flags: [ | 
|  | "--use-core", | 
|  | "--ctypes-prefix=core::ffi", | 
|  | "--raw-line=#![no_std]", | 
|  | ], | 
|  | no_stdlibs: true, | 
|  | prefer_rlib: true, | 
|  | stdlibs: [ | 
|  | "libcore.rust_sysroot", | 
|  | "libcompiler_builtins.rust_sysroot", | 
|  | ], | 
|  | target: { | 
|  | musl: { | 
|  | enabled: false, | 
|  | }, | 
|  | glibc: { | 
|  | enabled: false, | 
|  | }, | 
|  | darwin: { | 
|  | enabled: false, | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libopen_dice.rust_defaults", | 
|  | host_supported: true, | 
|  | vendor_available: true, | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "com.android.compos", | 
|  | "com.android.virt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libopen_dice_cbor_bindgen.rust_defaults", | 
|  | defaults: ["libopen_dice.rust_defaults"], | 
|  | wrapper_src: "bindgen/dice.h", | 
|  | crate_name: "open_dice_cbor_bindgen", | 
|  | source_stem: "bindings", | 
|  | bindgen_flags: [ | 
|  | "--size_t-is-usize", | 
|  | "--rustified-enum DiceConfigType", | 
|  | "--rustified-enum DiceMode", | 
|  | "--rustified-enum DiceResult", | 
|  |  | 
|  | // By generating only essential functions, we can make bindings concise and | 
|  | // optimize compilation time. | 
|  | "--allowlist-function=DiceDeriveCdiPrivateKeySeed", | 
|  | "--allowlist-function=DiceDeriveCdiCertificateId", | 
|  | "--allowlist-function=DiceMainFlow", | 
|  | "--allowlist-function=DiceHash", | 
|  | "--allowlist-function=DiceKdf", | 
|  | "--allowlist-function=DiceKeypairFromSeed", | 
|  | "--allowlist-function=DiceSign", | 
|  | "--allowlist-function=DiceVerify", | 
|  | "--allowlist-function=DiceGenerateCertificate", | 
|  |  | 
|  | // We also need some constants in addition to the functions. | 
|  | "--allowlist-var=DICE_CDI_SIZE", | 
|  | "--allowlist-var=DICE_HASH_SIZE", | 
|  | "--allowlist-var=DICE_HIDDEN_SIZE", | 
|  | "--allowlist-var=DICE_INLINE_CONFIG_SIZE", | 
|  | "--allowlist-var=DICE_PRIVATE_KEY_SEED_SIZE", | 
|  | "--allowlist-var=DICE_ID_SIZE", | 
|  | "--allowlist-var=DICE_PUBLIC_KEY_SIZE", | 
|  | "--allowlist-var=DICE_PRIVATE_KEY_SIZE", | 
|  | "--allowlist-var=DICE_SIGNATURE_SIZE", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_bindgen { | 
|  | name: "libopen_dice_cbor_bindgen", | 
|  | defaults: ["libopen_dice_cbor_bindgen.rust_defaults"], | 
|  | whole_static_libs: ["libopen_dice_cbor"], | 
|  | } | 
|  |  | 
|  | rust_bindgen { | 
|  | name: "libopen_dice_cbor_bindgen_nostd", | 
|  | defaults: [ | 
|  | "libopen_dice_cbor_bindgen.rust_defaults", | 
|  | "libopen_dice_bindgen_nostd.rust_defaults", | 
|  | ], | 
|  | whole_static_libs: ["libopen_dice_cbor_baremetal"], | 
|  | } | 
|  |  | 
|  | rust_defaults { | 
|  | name: "libopen_dice_bcc_bindgen.rust_defaults", | 
|  | defaults: ["libopen_dice.rust_defaults"], | 
|  | wrapper_src: "bindgen/android/bcc.h", | 
|  | crate_name: "open_dice_bcc_bindgen", | 
|  | source_stem: "bindings", | 
|  | bindgen_flags: [ | 
|  | "--size_t-is-usize", | 
|  |  | 
|  | // By generating only essential functions, we can make bindings concise and | 
|  | // optimize compilation time. | 
|  | "--allowlist-function=BccFormatConfigDescriptor", | 
|  | "--allowlist-function=BccMainFlow", | 
|  | "--allowlist-function=BccHandoverMainFlow", | 
|  | "--allowlist-function=BccHandoverParse", | 
|  |  | 
|  | // We also need some constants in addition to the functions. | 
|  | "--allowlist-var=BCC_INPUT_COMPONENT_NAME", | 
|  | "--allowlist-var=BCC_INPUT_COMPONENT_VERSION", | 
|  | "--allowlist-var=BCC_INPUT_RESETTABLE", | 
|  |  | 
|  | // Prevent DiceInputValues from being generated a second time and | 
|  | // import it instead from open_dice_cbor_bindgen. | 
|  | "--blocklist-type=DiceInputValues_", | 
|  | "--blocklist-type=DiceInputValues", | 
|  | "--raw-line", | 
|  | "pub use open_dice_cbor_bindgen::DiceInputValues;", | 
|  |  | 
|  | // Prevent DiceResult from being generated a second time and | 
|  | // import it instead from open_dice_cbor_bindgen. | 
|  | "--blocklist-type=DiceResult", | 
|  | "--raw-line", | 
|  | "pub use open_dice_cbor_bindgen::DiceResult;", | 
|  | ], | 
|  |  | 
|  | } | 
|  |  | 
|  | rust_bindgen { | 
|  | name: "libopen_dice_bcc_bindgen", | 
|  | defaults: ["libopen_dice_bcc_bindgen.rust_defaults"], | 
|  | rustlibs: [ | 
|  | "libopen_dice_cbor_bindgen", | 
|  | ], | 
|  | whole_static_libs: ["libopen_dice_bcc"], | 
|  | } | 
|  |  | 
|  | rust_bindgen { | 
|  | name: "libopen_dice_bcc_bindgen_nostd", | 
|  | defaults: [ | 
|  | "libopen_dice_bcc_bindgen.rust_defaults", | 
|  | "libopen_dice_bindgen_nostd.rust_defaults", | 
|  | ], | 
|  | rustlibs: [ | 
|  | "libopen_dice_cbor_bindgen_nostd", | 
|  | ], | 
|  | whole_static_libs: ["libopen_dice_bcc_baremetal"], | 
|  | } | 
|  |  | 
|  | rust_test { | 
|  | name: "libopen_dice_cbor_bindgen_test", | 
|  | srcs: [ | 
|  | ":libopen_dice_cbor_bindgen", | 
|  | ], | 
|  | crate_name: "open_dice_cbor_bindgen_test", | 
|  | test_suites: ["general-tests"], | 
|  | auto_gen_config: true, | 
|  | clippy_lints: "none", | 
|  | lints: "none", | 
|  | } | 
|  |  | 
|  | rust_test { | 
|  | name: "libopen_dice_bcc_bindgen_test", | 
|  | srcs: [ | 
|  | ":libopen_dice_bcc_bindgen", | 
|  | ], | 
|  | crate_name: "open_dice_bcc_bindgen_test", | 
|  | rustlibs: [ | 
|  | "libopen_dice_cbor_bindgen", | 
|  | ], | 
|  | test_suites: ["general-tests"], | 
|  | auto_gen_config: true, | 
|  | clippy_lints: "none", | 
|  | lints: "none", | 
|  | } |