diff options
author | Shawn Willden <swillden@google.com> | 2014-12-02 07:01:21 -0700 |
---|---|---|
committer | Shawn Willden <swillden@google.com> | 2014-12-08 07:56:31 -0700 |
commit | 46a420de44adaadfbaf293ef4a01a70ed5855619 (patch) | |
tree | c10d9d6d89083755401fc271c69a98c7a1052449 /rsa_operation.h | |
parent | 3809b939fb680031a53f6f5a1c157bba8dee5636 (diff) | |
download | android_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.h | 39 |
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); }; |