Refactor key and operation details.
Change-Id: I80267e6184955ecd98b08ceab91f4afd50c67614
diff --git a/google_keymaster_utils.cpp b/google_keymaster_utils.cpp
index a877c65..e478f05 100644
--- a/google_keymaster_utils.cpp
+++ b/google_keymaster_utils.cpp
@@ -29,6 +29,21 @@
delete[] buffer_;
}
+bool Buffer::reserve(size_t size) {
+ if (available_write() < size) {
+ size_t new_size = buffer_size_ + size - available_write();
+ uint8_t* new_buffer = new uint8_t[new_size];
+ if (!new_buffer)
+ return false;
+ memcpy(new_buffer, buffer_ + read_position_, available_read());
+ buffer_ = new_buffer;
+ buffer_size_ = new_size;
+ write_position_ -= read_position_;
+ read_position_ = 0;
+ }
+ return true;
+}
+
bool Buffer::Reinitialize(size_t size) {
delete[] buffer_;