Test that BCCs look roughly the right shape
In the absence of a full BCC parser and despite the BCC not yet having
an application, make sure it roughly looks like the right sort of thing.
Make sure it's a valid CBOR array and has a reasonable looking number of
entries as a basic smoke test.
Bug: 218935426
Test: atest MicrodroidTests
Change-Id: Id28009c572e5a9b9cf02b9891fbe3314100d9aa4
diff --git a/tests/testapk/src/native/testbinary.cpp b/tests/testapk/src/native/testbinary.cpp
index 76df5be..89570c0 100644
--- a/tests/testapk/src/native/testbinary.cpp
+++ b/tests/testapk/src/native/testbinary.cpp
@@ -112,6 +112,23 @@
*out = {handover.cdiAttest.begin(), handover.cdiAttest.end()};
return ndk::ScopedAStatus::ok();
}
+
+ ndk::ScopedAStatus getBcc(std::vector<uint8_t>* out) override {
+ ndk::SpAIBinder binder(AServiceManager_getService("android.security.dice.IDiceNode"));
+ auto service = IDiceNode::fromBinder(binder);
+ if (service == nullptr) {
+ return ndk::ScopedAStatus::
+ fromServiceSpecificErrorWithMessage(0, "Failed to find diced");
+ }
+ BccHandover handover;
+ auto deriveStatus = service->derive({}, &handover);
+ if (!deriveStatus.isOk()) {
+ return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(0,
+ "Failed call diced");
+ }
+ *out = {handover.bcc.data.begin(), handover.bcc.data.end()};
+ return ndk::ScopedAStatus::ok();
+ }
};
auto testService = ndk::SharedRefBase::make<TestService>();