Add key importing, RSA only.
Change-Id: I639e797939a28b2b2a815541c9926dc194657c54
diff --git a/authorization_set.cpp b/authorization_set.cpp
index 2b65ee1..2111b74 100644
--- a/authorization_set.cpp
+++ b/authorization_set.cpp
@@ -41,6 +41,9 @@
}
bool AuthorizationSet::reserve_elems(size_t count) {
+ if (is_valid() != OK)
+ return false;
+
if (count >= elems_capacity_) {
keymaster_key_param_t* new_elems = new keymaster_key_param_t[count];
if (new_elems == NULL) {
@@ -56,6 +59,9 @@
}
bool AuthorizationSet::reserve_indirect(size_t length) {
+ if (is_valid() != OK)
+ return false;
+
if (length > indirect_data_capacity_) {
uint8_t* new_data = new uint8_t[length];
if (new_data == NULL) {
@@ -98,6 +104,9 @@
}
int AuthorizationSet::find(keymaster_tag_t tag, int begin) const {
+ if (is_valid() != OK)
+ return -1;
+
int i = ++begin;
while (i < (int)elems_size_ && elems_[i].tag != tag)
++i;
@@ -109,7 +118,7 @@
keymaster_key_param_t empty;
keymaster_key_param_t AuthorizationSet::operator[](int at) const {
- if (at < (int)elems_size_) {
+ if (is_valid() == OK && at < (int)elems_size_) {
return elems_[at];
}
memset(&empty, 0, sizeof(empty));
@@ -171,6 +180,9 @@
}
bool AuthorizationSet::push_back(const AuthorizationSet& set) {
+ if (is_valid() != OK)
+ return false;
+
if (!reserve_elems(elems_size_ + set.elems_size_))
return false;
@@ -185,6 +197,9 @@
}
bool AuthorizationSet::push_back(keymaster_key_param_t elem) {
+ if (is_valid() != OK)
+ return false;
+
if (elems_size_ >= elems_capacity_)
if (!reserve_elems(elems_capacity_ ? elems_capacity_ * 2 : STARTING_ELEMS_CAPACITY))
return false;