Add RSA signing support.
Change-Id: Icdcbd978d58c8764618b995571d1e8b649959ef0
diff --git a/key_blob.cpp b/key_blob.cpp
index e1a9c49..6c14e4a 100644
--- a/key_blob.cpp
+++ b/key_blob.cpp
@@ -53,6 +53,9 @@
return;
}
+ if (!ExtractKeyCharacteristics())
+ return;
+
memcpy(nonce_, nonce, NONCE_LENGTH);
key_material_length_ = key.key_material_size;
@@ -106,6 +109,9 @@
return false;
}
+ if (!ExtractKeyCharacteristics())
+ return false;
+
encrypted_key_material_.reset(tmp_key_ptr);
key_material_.reset(new uint8_t[key_material_length_]);
return true;
@@ -213,4 +219,18 @@
return derivation_data;
}
+bool KeyBlob::ExtractKeyCharacteristics() {
+ if (!enforced_.GetTagValue(TAG_ALGORITHM, &algorithm_) &&
+ !unenforced_.GetTagValue(TAG_ALGORITHM, &algorithm_)) {
+ error_ = KM_ERROR_UNSUPPORTED_ALGORITHM;
+ return false;
+ }
+ if (!enforced_.GetTagValue(TAG_KEY_SIZE, &key_size_bits_) &&
+ !unenforced_.GetTagValue(TAG_KEY_SIZE, &key_size_bits_)) {
+ error_ = KM_ERROR_UNSUPPORTED_KEY_SIZE;
+ return false;
+ }
+ return true;
+}
+
} // namespace keymaster