diff options
author | Max Bires <jbires@google.com> | 2023-03-23 04:17:44 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-23 04:17:44 +0000 |
commit | 9651397e01322c127266a55fac8c0232a6a98fc0 (patch) | |
tree | 7a0e95199756d1373ec06a88200ff9bf43b718a7 | |
parent | ece36b43c3042747eebc26b7428d89a991bde729 (diff) | |
parent | 8d85ac2bb67b9cf39910e6475cffec8f0ed0c6e6 (diff) | |
download | keymaster-9651397e01322c127266a55fac8c0232a6a98fc0.tar.gz |
Set a maximum accepted challenge size. am: 25924fca88 am: e8c600c4b1 am: 2ea23a0146 am: 8d85ac2bb6
Original change: https://android-review.googlesource.com/c/platform/system/keymaster/+/2504175
Change-Id: I7e8e8f060f33620cfe59bbbc6880deb013de10ec
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | android_keymaster/android_keymaster.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/android_keymaster/android_keymaster.cpp b/android_keymaster/android_keymaster.cpp index 94b3e99..4a97bad 100644 --- a/android_keymaster/android_keymaster.cpp +++ b/android_keymaster/android_keymaster.cpp @@ -134,6 +134,7 @@ std::pair<const uint8_t*, size_t> blob2Pair(const keymaster_blob_t& blob) { return {blob.data, blob.data_length}; } +constexpr int kMaxChallengeSizeV2 = 64; constexpr int kP256AffinePointSize = 32; constexpr int kRoTVersion1 = 40001; @@ -525,6 +526,14 @@ void AndroidKeymaster::GenerateCsrV2(const GenerateCsrV2Request& request, if (response == nullptr) return; + if (request.challenge.size() > kMaxChallengeSizeV2) { + LOG_E("Challenge is too large. %zu expected. %zu actual.", + kMaxChallengeSizeV2, // + request.challenge.size()); // + response->error = static_cast<keymaster_error_t>(kStatusFailed); + return; + } + auto rem_prov_ctx = context_->GetRemoteProvisioningContext(); if (rem_prov_ctx == nullptr) { LOG_E("Couldn't get a pointer to the remote provisioning context, returned null.", 0); |