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;