summaryrefslogtreecommitdiffstats
path: root/rsa_operation.h
diff options
context:
space:
mode:
authorShawn Willden <swillden@google.com>2014-12-02 07:01:21 -0700
committerShawn Willden <swillden@google.com>2014-12-08 07:56:31 -0700
commit46a420de44adaadfbaf293ef4a01a70ed5855619 (patch)
treec10d9d6d89083755401fc271c69a98c7a1052449 /rsa_operation.h
parent3809b939fb680031a53f6f5a1c157bba8dee5636 (diff)
downloadandroid_system_keymaster-46a420de44adaadfbaf293ef4a01a70ed5855619.tar.gz
android_system_keymaster-46a420de44adaadfbaf293ef4a01a70ed5855619.tar.bz2
android_system_keymaster-46a420de44adaadfbaf293ef4a01a70ed5855619.zip
Add RSA encryption and decryption support.
Change-Id: Iceefe0933c80a2169f87fbc01a6fa0fce9644649
Diffstat (limited to 'rsa_operation.h')
-rw-r--r--rsa_operation.h39
1 files changed, 29 insertions, 10 deletions
diff --git a/rsa_operation.h b/rsa_operation.h
index 4697866..fb417a7 100644
--- a/rsa_operation.h
+++ b/rsa_operation.h
@@ -27,9 +27,9 @@ namespace keymaster {
class RsaOperation : public Operation {
public:
- RsaOperation(keymaster_purpose_t purpose, const Logger& logger, keymaster_digest_t digest,
- keymaster_padding_t padding, RSA* key)
- : Operation(purpose, logger), rsa_key_(key), digest_(digest), padding_(padding) {}
+ RsaOperation(keymaster_purpose_t purpose, const Logger& logger, keymaster_padding_t padding,
+ RSA* key)
+ : Operation(purpose, logger), rsa_key_(key), padding_(padding) {}
~RsaOperation();
virtual keymaster_error_t Begin() { return KM_ERROR_OK; }
@@ -40,24 +40,43 @@ class RsaOperation : public Operation {
keymaster_error_t StoreData(const Buffer& input);
RSA* rsa_key_;
- keymaster_digest_t digest_;
keymaster_padding_t padding_;
Buffer data_;
};
class RsaSignOperation : public RsaOperation {
public:
- RsaSignOperation(keymaster_purpose_t purpose, const Logger& logger, keymaster_digest_t digest,
- keymaster_padding_t padding, RSA* key)
- : RsaOperation(purpose, logger, digest, padding, key) {}
+ RsaSignOperation(const Logger& logger, keymaster_digest_t digest, keymaster_padding_t padding,
+ RSA* key)
+ : RsaOperation(KM_PURPOSE_SIGN, logger, padding, key), digest_(digest) {}
virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output);
+
+ private:
+ keymaster_digest_t digest_;
};
class RsaVerifyOperation : public RsaOperation {
public:
- RsaVerifyOperation(keymaster_purpose_t purpose, const Logger& logger, keymaster_digest_t digest,
- keymaster_padding_t padding, RSA* key)
- : RsaOperation(purpose, logger, digest, padding, key) {}
+ RsaVerifyOperation(const Logger& logger, keymaster_digest_t digest, keymaster_padding_t padding,
+ RSA* key)
+ : RsaOperation(KM_PURPOSE_VERIFY, logger, padding, key), digest_(digest) {}
+ virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output);
+
+ private:
+ keymaster_digest_t digest_;
+};
+
+class RsaEncryptOperation : public RsaOperation {
+ public:
+ RsaEncryptOperation(const Logger& logger, keymaster_padding_t padding, RSA* key)
+ : RsaOperation(KM_PURPOSE_ENCRYPT, logger, padding, key) {}
+ virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output);
+};
+
+class RsaDecryptOperation : public RsaOperation {
+ public:
+ RsaDecryptOperation(const Logger& logger, keymaster_padding_t padding, RSA* key)
+ : RsaOperation(KM_PURPOSE_DECRYPT, logger, padding, key) {}
virtual keymaster_error_t Finish(const Buffer& signature, Buffer* output);
};