diff options
author | Shawn Willden <swillden@google.com> | 2014-09-26 12:07:44 -0600 |
---|---|---|
committer | Shawn Willden <swillden@google.com> | 2014-12-03 01:04:50 +0000 |
commit | 96599217f08532912bc0e26c1887549f6130669a (patch) | |
tree | 78aeee3603bac50c78c2865193fbab3e2db95ea7 /rsa_key.cpp | |
parent | f2aefdfc5adcc0a59bd51a7e4ec5ab92a513171c (diff) | |
download | android_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.cpp | 14 |
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: |