summaryrefslogtreecommitdiffstats
path: root/rsa_key.cpp
diff options
context:
space:
mode:
authorShawn Willden <swillden@google.com>2014-09-26 12:07:44 -0600
committerShawn Willden <swillden@google.com>2014-12-03 01:04:50 +0000
commit96599217f08532912bc0e26c1887549f6130669a (patch)
tree78aeee3603bac50c78c2865193fbab3e2db95ea7 /rsa_key.cpp
parentf2aefdfc5adcc0a59bd51a7e4ec5ab92a513171c (diff)
downloadandroid_system_keymaster-96599217f08532912bc0e26c1887549f6130669a.tar.gz
android_system_keymaster-96599217f08532912bc0e26c1887549f6130669a.tar.bz2
android_system_keymaster-96599217f08532912bc0e26c1887549f6130669a.zip
Push padding and digest handling down to specific key types.
AsymmetricKey handled checking for digest and padding, but that doesn't make sense because not all asymmetric key types need both. This is in preparation for adding asymmetric encryption/decryption support. Change-Id: I7b9a4fc37b6d31ab25c56015c1df7d114affe882
Diffstat (limited to 'rsa_key.cpp')
-rw-r--r--rsa_key.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/rsa_key.cpp b/rsa_key.cpp
index aaab0c2..db50930 100644
--- a/rsa_key.cpp
+++ b/rsa_key.cpp
@@ -127,8 +127,18 @@ RsaKey::RsaKey(const UnencryptedKeyBlob& blob, const Logger& logger, keymaster_e
*error = LoadKey(blob);
}
-Operation* RsaKey::CreateOperation(keymaster_purpose_t purpose, keymaster_digest_t digest,
- keymaster_padding_t padding, keymaster_error_t* error) {
+Operation* RsaKey::CreateOperation(keymaster_purpose_t purpose, keymaster_error_t* error) {
+ 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;
+ }
+
Operation* op;
switch (purpose) {
case KM_PURPOSE_SIGN: