Fix off-by-one error in PKCS#1 v1.5 encryption padding size.

Cherry-picked from internal.

Change-Id: I812639dd5111a4ca0d96e187752503038cf25525
diff --git a/android_keymaster_test.cpp b/android_keymaster_test.cpp
index e3faefa..5534a3c 100644
--- a/android_keymaster_test.cpp
+++ b/android_keymaster_test.cpp
@@ -1379,7 +1379,7 @@
 TEST_F(EncryptionOperationsTest, RsaPkcs1TooLarge) {
     ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
                                KM_PAD_RSA_PKCS1_1_5_ENCRYPT)));
-    string message = "12345678901234567890123456789012345678901234567890123";
+    string message = "123456789012345678901234567890123456789012345678901234";
     string result;
     size_t input_consumed;
 
diff --git a/rsa_operation.cpp b/rsa_operation.cpp
index a4a2b6d..2c3db2e 100644
--- a/rsa_operation.cpp
+++ b/rsa_operation.cpp
@@ -483,7 +483,7 @@
     return KM_ERROR_VERIFICATION_FAILED;
 }
 
-const int OAEP_PADDING_OVERHEAD = 41;
+const int OAEP_PADDING_OVERHEAD = 42;
 const int PKCS1_PADDING_OVERHEAD = 11;
 
 keymaster_error_t RsaEncryptOperation::Finish(const AuthorizationSet& /* additional_params */,
@@ -501,7 +501,7 @@
     switch (padding_) {
     case KM_PAD_RSA_OAEP:
         openssl_padding = RSA_PKCS1_OAEP_PADDING;
-        if (message_size + OAEP_PADDING_OVERHEAD >= key_len) {
+        if (message_size + OAEP_PADDING_OVERHEAD > key_len) {
             LOG_E("Cannot encrypt %d bytes with %d-byte key and OAEP padding",
                   data_.available_read(), key_len);
             return KM_ERROR_INVALID_INPUT_LENGTH;
@@ -509,7 +509,7 @@
         break;
     case KM_PAD_RSA_PKCS1_1_5_ENCRYPT:
         openssl_padding = RSA_PKCS1_PADDING;
-        if (message_size + PKCS1_PADDING_OVERHEAD >= key_len) {
+        if (message_size + PKCS1_PADDING_OVERHEAD > key_len) {
             LOG_E("Cannot encrypt %d bytes with %d-byte key and PKCS1 padding",
                   data_.available_read(), key_len);
             return KM_ERROR_INVALID_INPUT_LENGTH;