diff options
author | Shawn Willden <swillden@google.com> | 2015-02-05 22:44:24 -0700 |
---|---|---|
committer | Shawn Willden <swillden@google.com> | 2015-02-17 15:02:42 -0700 |
commit | 111edb3bf8c51be9ffa3bb2454085f0b300c1e7a (patch) | |
tree | 094edb17b8ec7917cf1b5f07b0f09adf43fcee20 | |
parent | b751033ec92dfc57e5f922d7b55bea2f41ddb7e6 (diff) | |
download | android_system_keymaster-111edb3bf8c51be9ffa3bb2454085f0b300c1e7a.tar.gz android_system_keymaster-111edb3bf8c51be9ffa3bb2454085f0b300c1e7a.tar.bz2 android_system_keymaster-111edb3bf8c51be9ffa3bb2454085f0b300c1e7a.zip |
Add input & output params to begin operations.
This is in preparation for handling IV/nonce values via params rather
than prepended to ciphertext.
Change-Id: I657a029eaf66c2218c3f7cc149e86e9d01c41be0
-rw-r--r-- | aead_mode_operation.cpp | 3 | ||||
-rw-r--r-- | aead_mode_operation.h | 3 | ||||
-rw-r--r-- | ecdsa_operation.h | 5 | ||||
-rw-r--r-- | google_keymaster.cpp | 3 | ||||
-rw-r--r-- | hmac_operation.cpp | 3 | ||||
-rw-r--r-- | hmac_operation.h | 3 | ||||
-rw-r--r-- | operation.h | 5 | ||||
-rw-r--r-- | rsa_operation.h | 5 |
8 files changed, 22 insertions, 8 deletions
diff --git a/aead_mode_operation.cpp b/aead_mode_operation.cpp index 44d98cc..8b117f0 100644 --- a/aead_mode_operation.cpp +++ b/aead_mode_operation.cpp @@ -23,7 +23,8 @@ namespace keymaster { -keymaster_error_t AeadModeOperation::Begin() { +keymaster_error_t AeadModeOperation::Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* /* output_params */) { keymaster_error_t error = Initialize(key_, key_size_, nonce_length_, tag_length_); if (error == KM_ERROR_OK) { buffer_end_ = 0; diff --git a/aead_mode_operation.h b/aead_mode_operation.h index ba75c13..bdebaec 100644 --- a/aead_mode_operation.h +++ b/aead_mode_operation.h @@ -47,7 +47,8 @@ class AeadModeOperation : public Operation { delete[] additional_data_.data; } - virtual keymaster_error_t Begin(); + virtual keymaster_error_t Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* output_params); virtual keymaster_error_t Update(const Buffer& input, Buffer* output, size_t* input_consumed); virtual keymaster_error_t Finish(const Buffer& /* signature */, Buffer* output); diff --git a/ecdsa_operation.h b/ecdsa_operation.h index fb14f8b..a0dbda6 100644 --- a/ecdsa_operation.h +++ b/ecdsa_operation.h @@ -33,7 +33,10 @@ class EcdsaOperation : public Operation { : Operation(purpose, logger), ecdsa_key_(key) {} ~EcdsaOperation(); - virtual keymaster_error_t Begin() { return KM_ERROR_OK; } + virtual keymaster_error_t Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* /* output_params */) { + return KM_ERROR_OK; + } virtual keymaster_error_t Update(const Buffer& input, Buffer* output, size_t* input_consumed); virtual keymaster_error_t Abort() { return KM_ERROR_OK; } diff --git a/google_keymaster.cpp b/google_keymaster.cpp index af0ece3..056f643 100644 --- a/google_keymaster.cpp +++ b/google_keymaster.cpp @@ -234,7 +234,8 @@ void GoogleKeymaster::BeginOperation(const BeginOperationRequest& request, if (operation.get() == NULL) return; - response->error = operation->Begin(); + response->output_params.Clear(); + response->error = operation->Begin(request.additional_params, &response->output_params); if (response->error != KM_ERROR_OK) return; diff --git a/hmac_operation.cpp b/hmac_operation.cpp index 9050f99..8023662 100644 --- a/hmac_operation.cpp +++ b/hmac_operation.cpp @@ -65,7 +65,8 @@ HmacOperation::~HmacOperation() { HMAC_CTX_cleanup(&ctx_); } -keymaster_error_t HmacOperation::Begin() { +keymaster_error_t HmacOperation::Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* /* output_params */) { return error_; } diff --git a/hmac_operation.h b/hmac_operation.h index 9299b82..61f76d5 100644 --- a/hmac_operation.h +++ b/hmac_operation.h @@ -29,7 +29,8 @@ class HmacOperation : public Operation { size_t key_data_size, keymaster_digest_t digest, size_t tag_length); ~HmacOperation(); - virtual keymaster_error_t Begin(); + virtual keymaster_error_t Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* output_params); virtual keymaster_error_t Update(const Buffer& input, Buffer* output, size_t* input_consumed); virtual keymaster_error_t Abort(); virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output); diff --git a/operation.h b/operation.h index 9aa122c..6d55340 100644 --- a/operation.h +++ b/operation.h @@ -27,6 +27,8 @@ namespace keymaster { +class AuthorizationSet; + /** * Abstract base for all cryptographic operations. */ @@ -40,7 +42,8 @@ class Operation { const Logger& logger() { return logger_; } - virtual keymaster_error_t Begin() = 0; + virtual keymaster_error_t Begin(const AuthorizationSet& input_params, + AuthorizationSet* output_params) = 0; virtual keymaster_error_t Update(const Buffer& input, Buffer* output, size_t* input_consumed) = 0; virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output) = 0; diff --git a/rsa_operation.h b/rsa_operation.h index 7ffbbce..16548ee 100644 --- a/rsa_operation.h +++ b/rsa_operation.h @@ -32,7 +32,10 @@ class RsaOperation : public Operation { : Operation(purpose, logger), rsa_key_(key), padding_(padding) {} ~RsaOperation(); - virtual keymaster_error_t Begin() { return KM_ERROR_OK; } + virtual keymaster_error_t Begin(const AuthorizationSet& /* input_params */, + AuthorizationSet* /* output_params */) { + return KM_ERROR_OK; + } virtual keymaster_error_t Update(const Buffer& input, Buffer* output, size_t* input_consumed); virtual keymaster_error_t Abort() { return KM_ERROR_OK; } |