diff options
| author | Seth Moore <sethmo@google.com> | 2021-06-22 17:13:05 -0700 |
|---|---|---|
| committer | Seth Moore <sethmo@google.com> | 2021-06-23 13:05:59 -0700 |
| commit | 415f0ce4fe05f37ddd47a23dafc4489c3aea7ebb (patch) | |
| tree | 7c334e4e05fa728117999a674b0267acdeba0c7e /security/keymint/support/remote_prov_utils.cpp | |
| parent | 7a55bb5cf8efa7570cd672dad08cff6a78fb8f88 (diff) | |
Add real GEEK for RKP factory enrollment
Include a unit test to verify the GEEK cert chain is valid.
Test: libkeymint_remote_prov_support_test
Ignore-AOSP-First: No merge path to aosp, will manually merge
Bug: 191301285
Change-Id: Icf9cfa165fbccb24b36b03ff3ce729a7e9c44cfd
Diffstat (limited to 'security/keymint/support/remote_prov_utils.cpp')
| -rw-r--r-- | security/keymint/support/remote_prov_utils.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/security/keymint/support/remote_prov_utils.cpp b/security/keymint/support/remote_prov_utils.cpp index ac7cb6219..982a1eb7b 100644 --- a/security/keymint/support/remote_prov_utils.cpp +++ b/security/keymint/support/remote_prov_utils.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include <tuple> + #include <remote_prov/remote_prov_utils.h> #include <openssl/rand.h> @@ -82,6 +84,18 @@ ErrMsgOr<EekChain> generateEekChain(size_t length, const bytevec& eekId) { return EekChain{eekChain.encode(), pub_key, priv_key}; } +bytevec getProdEekChain() { + bytevec prodEek; + prodEek.reserve(1 + sizeof(kCoseEncodedRootCert) + sizeof(kCoseEncodedGeekCert)); + + // In CBOR encoding, 0x82 indicates an array of two items + prodEek.push_back(0x82); + prodEek.insert(prodEek.end(), std::begin(kCoseEncodedRootCert), std::end(kCoseEncodedRootCert)); + prodEek.insert(prodEek.end(), std::begin(kCoseEncodedGeekCert), std::end(kCoseEncodedGeekCert)); + + return prodEek; +} + ErrMsgOr<bytevec> verifyAndParseCoseSign1Cwt(const cppbor::Array* coseSign1, const bytevec& signingCoseKey, const bytevec& aad) { if (!coseSign1 || coseSign1->size() != kCoseSign1EntryCount) { |
