Revert "Add RSA encryption and decryption support."
This reverts commit 46a420de44adaadfbaf293ef4a01a70ed5855619.
diff --git a/rsa_key.cpp b/rsa_key.cpp
index c904c19..db50930 100644
--- a/rsa_key.cpp
+++ b/rsa_key.cpp
@@ -128,44 +128,30 @@
}
Operation* RsaKey::CreateOperation(keymaster_purpose_t purpose, keymaster_error_t* error) {
- *error = KM_ERROR_OK;
-
- keymaster_padding_t padding = static_cast<keymaster_padding_t>(-1);
- authorizations().GetTagValue(TAG_PADDING, &padding);
- if (!SupportedMode(purpose, padding)) {
+ keymaster_digest_t digest = KM_DIGEST_NONE;
+ if (!authorizations().GetTagValue(TAG_DIGEST, &digest) || digest != KM_DIGEST_NONE) {
+ *error = KM_ERROR_UNSUPPORTED_DIGEST;
+ return NULL;
+ }
+ keymaster_padding_t padding = KM_PAD_NONE;
+ if (!authorizations().GetTagValue(TAG_PADDING, &padding) || padding != KM_PAD_NONE) {
*error = KM_ERROR_UNSUPPORTED_PADDING_MODE;
return NULL;
}
- keymaster_digest_t digest = static_cast<keymaster_digest_t>(-1);
- authorizations().GetTagValue(TAG_DIGEST, &digest);
- if (!SupportedMode(purpose, digest)) {
- *error = KM_ERROR_UNSUPPORTED_DIGEST;
- return NULL;
- }
-
- Operation* op = NULL;
+ Operation* op;
switch (purpose) {
case KM_PURPOSE_SIGN:
- op = new RsaSignOperation(logger_, digest, padding, rsa_key_.release());
+ op = new RsaSignOperation(purpose, logger_, digest, padding, rsa_key_.release());
break;
case KM_PURPOSE_VERIFY:
- op = new RsaVerifyOperation(logger_, digest, padding, rsa_key_.release());
- break;
- case KM_PURPOSE_ENCRYPT:
- op = new RsaEncryptOperation(logger_, padding, rsa_key_.release());
- break;
- case KM_PURPOSE_DECRYPT:
- op = new RsaDecryptOperation(logger_, padding, rsa_key_.release());
+ op = new RsaVerifyOperation(purpose, logger_, digest, padding, rsa_key_.release());
break;
default:
- *error = KM_ERROR_UNSUPPORTED_PURPOSE;
+ *error = KM_ERROR_UNIMPLEMENTED;
return NULL;
}
-
- if (!op)
- *error = KM_ERROR_MEMORY_ALLOCATION_FAILED;
-
+ *error = op ? KM_ERROR_OK : KM_ERROR_MEMORY_ALLOCATION_FAILED;
return op;
}
@@ -178,32 +164,4 @@
return EVP_PKEY_set1_RSA(pkey, rsa_key_.get()) == 1;
}
-bool RsaKey::SupportedMode(keymaster_purpose_t purpose, keymaster_padding_t padding) {
- switch (purpose) {
- case KM_PURPOSE_SIGN:
- case KM_PURPOSE_VERIFY:
- return padding == KM_PAD_NONE;
- break;
- case KM_PURPOSE_ENCRYPT:
- case KM_PURPOSE_DECRYPT:
- return padding == KM_PAD_RSA_OAEP || padding == KM_PAD_RSA_PKCS1_1_5_ENCRYPT;
- break;
- };
- return false;
-}
-
-bool RsaKey::SupportedMode(keymaster_purpose_t purpose, keymaster_digest_t digest) {
- switch (purpose) {
- case KM_PURPOSE_SIGN:
- case KM_PURPOSE_VERIFY:
- return digest == KM_DIGEST_NONE;
- break;
- case KM_PURPOSE_ENCRYPT:
- case KM_PURPOSE_DECRYPT:
- /* Don't care */
- break;
- };
- return true;
-}
-
} // namespace keymaster