summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-10-28 04:54:52 -0700
committerLinux Build Service Account <lnxbuild@localhost>2016-10-28 04:54:52 -0700
commit691fc963c2b814b29ccb69a7b9174534659a7f18 (patch)
treee9e8b69710eb59eef5b98b170cd990232b959018
parente3eb79e964a449bb89597c13e78fd909bb8f80d1 (diff)
parent7f2df3c4f16bd2af9827570db52372e02a8e016c (diff)
downloadandroid_system_keymaster-691fc963c2b814b29ccb69a7b9174534659a7f18.tar.gz
android_system_keymaster-691fc963c2b814b29ccb69a7b9174534659a7f18.tar.bz2
android_system_keymaster-691fc963c2b814b29ccb69a7b9174534659a7f18.zip
Promotion of android-framework.lnx.2.0-00016.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1074763 Ied40c218b3b331e17cd6ca32d5379bb722ff3ab8 keymaster: Enable Soter for Android N Change-Id: I97a0f86e5d244a2b66549f54ee76781877f89733 CRs-Fixed: 1074763
-rw-r--r--attestation_record.cpp12
-rw-r--r--include/keymaster/keymaster_tags.h9
-rw-r--r--keymaster_enforcement.cpp13
-rw-r--r--keymaster_tags.cpp21
4 files changed, 54 insertions, 1 deletions
diff --git a/attestation_record.cpp b/attestation_record.cpp
index 8aed9ad..451fdb2 100644
--- a/attestation_record.cpp
+++ b/attestation_record.cpp
@@ -328,6 +328,18 @@ static keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_A
case KM_TAG_APPLICATION_ID:
string_ptr = &record->application_id;
break;
+
+ /* Soter Tags begins */
+ case KM_TAG_SOTER_IS_FROM_SOTER:
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_ATTK_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_AUTO_ADD_COUNTER_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_IS_SECMSG_FID_COUNTER_SIGNED_WHEN_SIGN:
+ case KM_TAG_SOTER_USE_NEXT_ATTK:
+ case KM_TAG_SOTER_UID:
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY_BLOB:
+ continue;
}
keymaster_tag_type_t type = keymaster_tag_get_type(entry.tag);
diff --git a/include/keymaster/keymaster_tags.h b/include/keymaster/keymaster_tags.h
index 2c7ac03..0f951e6 100644
--- a/include/keymaster/keymaster_tags.h
+++ b/include/keymaster/keymaster_tags.h
@@ -166,6 +166,15 @@ DECLARE_KEYMASTER_TAG(KM_UINT, TAG_OS_PATCHLEVEL);
DECLARE_KEYMASTER_TAG(KM_BYTES, TAG_UNIQUE_ID);
DECLARE_KEYMASTER_TAG(KM_BYTES, TAG_ATTESTATION_CHALLENGE);
DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_RESET_SINCE_ID_ROTATION);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_IS_FROM_SOTER);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_IS_AUTO_SIGNED_WITH_ATTK_WHEN_GET_PUBLIC_KEY);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_IS_AUTO_SIGNED_WITH_COMMON_KEY_WHEN_GET_PUBLIC_KEY);
+DECLARE_KEYMASTER_TAG(KM_BYTES, TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_AUTO_ADD_COUNTER_WHEN_GET_PUBLIC_KEY);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_IS_SECMSG_FID_COUNTER_SIGNED_WHEN_SIGN);
+DECLARE_KEYMASTER_TAG(KM_BOOL, TAG_SOTER_USE_NEXT_ATTK);
+DECLARE_KEYMASTER_TAG(KM_UINT, TAG_SOTER_UID);
+DECLARE_KEYMASTER_TAG(KM_BYTES, TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY_BLOB);
// DECLARE_KEYMASTER_ENUM_TAG is used to declare TypedEnumTag instances for each enum keymaster tag.
#define DECLARE_KEYMASTER_ENUM_TAG(type, name, enumtype) \
diff --git a/keymaster_enforcement.cpp b/keymaster_enforcement.cpp
index 21ee01f..be7f01c 100644
--- a/keymaster_enforcement.cpp
+++ b/keymaster_enforcement.cpp
@@ -341,6 +341,19 @@ keymaster_error_t KeymasterEnforcement::AuthorizeBegin(const keymaster_purpose_t
case KM_TAG_BOOTLOADER_ONLY:
return KM_ERROR_INVALID_KEY_BLOB;
+
+ /* Soter Tags begins */
+ case KM_TAG_SOTER_IS_FROM_SOTER:
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_ATTK_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_AUTO_ADD_COUNTER_WHEN_GET_PUBLIC_KEY:
+ case KM_TAG_SOTER_IS_SECMSG_FID_COUNTER_SIGNED_WHEN_SIGN:
+ case KM_TAG_SOTER_USE_NEXT_ATTK:
+ case KM_TAG_SOTER_UID:
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY_BLOB:
+ break;
+ /* Soter Tags ends */
}
}
diff --git a/keymaster_tags.cpp b/keymaster_tags.cpp
index 238bc33..11210bc 100644
--- a/keymaster_tags.cpp
+++ b/keymaster_tags.cpp
@@ -111,8 +111,27 @@ const char* StringifyTag(keymaster_tag_t tag) {
return "KM_TAG_ALLOW_WHILE_ON_BODY";
case KM_TAG_ATTESTATION_CHALLENGE:
return "KM_TAG_ATTESTATION_CHALLENGE";
- }
+ case KM_TAG_SOTER_IS_FROM_SOTER:
+ return "KM_TAG_SOTER_IS_FROM_SOTER";
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_ATTK_WHEN_GET_PUBLIC_KEY:
+ return "KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_ATTK_WHEN_GET_PUBLIC_KEY";
+ case KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ return "KM_TAG_SOTER_IS_AUTO_SIGNED_WITH_COMMON_KEY_WHEN_GET_PUBLIC_KEY";
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY:
+ return "KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY";
+ case KM_TAG_SOTER_AUTO_ADD_COUNTER_WHEN_GET_PUBLIC_KEY:
+ return "KM_TAG_SOTER_AUTO_ADD_COUNTER_WHEN_GET_PUBLIC_KEY";
+ case KM_TAG_SOTER_IS_SECMSG_FID_COUNTER_SIGNED_WHEN_SIGN:
+ return "KM_TAG_SOTER_IS_SECMSG_FID_COUNTER_SIGNED_WHEN_SIGN";
+ case KM_TAG_SOTER_USE_NEXT_ATTK:
+ return "KM_TAG_SOTER_USE_NEXT_ATTK";
+ case KM_TAG_SOTER_UID:
+ return "KM_TAG_SOTER_UID";
+ case KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY_BLOB:
+ return "KM_TAG_SOTER_AUTO_SIGNED_COMMON_KEY_WHEN_GET_PUBLIC_KEY_BLOB";
return "<Unknown>";
+ }
+
}
#endif // KEYMASTER_NAME_TAGS