Level 3 OEMCrypto library

This CL contains the level 3 oemcrypto library built for android.  I
used the toolchain from the mnc-emu-release branch because I'm having
problems with the toolchain on master.

This includes the security patch API, and several bug fixes to the library.

Current versions:
mips/libwvlevel3.a  Level3 Library Dec 17 2015 21:26:57
arm/libwvlevel3.a  Level3 Library Dec 17 2015 21:09:47
x86/libwvlevel3.a  Level3 Library Dec 17 2015 21:19:15

http://go/wvgerrit/16371 Level 3 OEMCrypto library
http://go/wvgerrit/16315 Security Patch Level - haystack version
http://go/wvgerrit/16282 Correctly handle null pointer in GetKeyData
http://go/wvgerrit/16294 Initialize data for generation number
http://go/wvgerrit/16280 Correctly handle bad RSA key

bug: 26089773
bug: 26092100
bug: 26086944
Change-Id: I3ea1b5d219dae0c88deafa742f61d67e97297902
This commit is contained in:
Fred Gylys-Colwell
2015-12-18 08:29:56 -08:00
parent a235a61e28
commit 1735b367f3
6 changed files with 15 additions and 0 deletions

View File

@@ -182,6 +182,10 @@ uint32_t Level3_APIVersion() {
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
uint8_t Level3_SecurityPatchLevel() {
return 0;
}
const char* Level3_SecurityLevel() {
return "L3";
}

View File

@@ -58,6 +58,7 @@ namespace wvoec3 {
#define Level3_LoadTestKeybox _lcc42
#define Level3_ForceDeleteUsageEntry _lcc43
#define Level3_LoadTestRSAKey _lcc45
#define Level3_SecurityPatchLevel _lcc46
extern "C" {
@@ -171,6 +172,7 @@ OEMCryptoResult Level3_DeriveKeysFromSessionKey(OEMCrypto_SESSION session,
const uint8_t *enc_key_context,
size_t enc_key_context_length);
uint32_t Level3_APIVersion();
uint8_t Level3_SecurityPatchLevel();
const char* Level3_SecurityLevel();
OEMCryptoResult Level3_GetHDCPCapability(OEMCrypto_HDCP_Capability* current,
OEMCrypto_HDCP_Capability* maximum);

View File

@@ -1604,6 +1604,15 @@ TEST_F(OEMCryptoKeyboxTest, NormalGetKeyData) {
ASSERT_EQ(OEMCrypto_SUCCESS, sts);
}
// TODO(fredgc): warn people that this will be turned on. It causes a
// seg fault on some devices at the moment.
TEST_F(OEMCryptoKeyboxTest, DISABLED_GetKeyDataNullPointer) {
OEMCryptoResult sts;
uint8_t key_data[256];
sts = OEMCrypto_GetKeyData(key_data, NULL);
ASSERT_NE(OEMCrypto_SUCCESS, sts);
}
TEST_F(OEMCryptoKeyboxTest, ProductionKeyboxValid) {
ASSERT_EQ(OEMCrypto_SUCCESS, OEMCrypto_IsKeyboxValid());
}