summaryrefslogtreecommitdiffstats
path: root/symmetric_key.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'symmetric_key.cpp')
-rw-r--r--symmetric_key.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/symmetric_key.cpp b/symmetric_key.cpp
index 3d8424c..1d51e3a 100644
--- a/symmetric_key.cpp
+++ b/symmetric_key.cpp
@@ -43,12 +43,16 @@ keymaster_error_t SymmetricKeyFactory::GenerateKey(const AuthorizationSet& key_d
!key_size_supported(key_size_bits))
return KM_ERROR_UNSUPPORTED_KEY_SIZE;
+ keymaster_error_t error = validate_algorithm_specific_new_key_params(key_description);
+ if (error != KM_ERROR_OK)
+ return error;
+
size_t key_data_size = key_size_bits / 8;
KeymasterKeyBlob key_material(key_data_size);
if (!key_material.key_material)
return KM_ERROR_MEMORY_ALLOCATION_FAILED;
- keymaster_error_t error = context_->GenerateRandom(key_material.writable_data(), key_data_size);
+ error = context_->GenerateRandom(key_material.writable_data(), key_data_size);
if (error != KM_ERROR_OK) {
LOG_E("Error generating %d bit symmetric key", key_size_bits);
return error;
@@ -76,6 +80,10 @@ keymaster_error_t SymmetricKeyFactory::ImportKey(const AuthorizationSet& key_des
authorizations.push_back(TAG_KEY_SIZE, key_size_bits);
}
+ keymaster_error_t error = validate_algorithm_specific_new_key_params(key_description);
+ if (error != KM_ERROR_OK)
+ return error;
+
if (!key_size_supported(key_size_bits))
return KM_ERROR_UNSUPPORTED_KEY_SIZE;