Наконец нашел ответ на этот вопрос.
В документах нигде не упоминается заполнение OAEP, но кажется, что заполнение OAEP не поддерживается для функции PKCS7_decrypt
в OpenSSL.Из того, что я могу сказать, как шифр, так и заполнение автоматически распознаются при попытке расшифровки.
Я попытался использовать функцию CMS_decrypt
в OpenSSL, которая также не имеет флагов для указания заполнения, и он был в состояниипросто отлично расшифровать AES256
шифр с заполнением OAEP.
...
//nil would represent failure
guard let cms = d2i_CMS_bio(encryptedDataBIO, nil) else {
throw OpenSSLTestErrors.failedToLoadCMS
}
//1 indicates success
guard CMS_decrypt(cms, key, x509Cert, nil, decryptedData, 0) == 1 else {
throw OpenSSLTestErrors.failedToDecrypt
}
Документы для CMS_decrypt расположены здесь
Я бы хотел больше разбираться в OpenSSLчтобы объяснить, почему функция PKCS7_decrypt
не работает, тогда как CMS_decrypt
- для элементов, зашифрованных с помощью дополнения OAEP.(или почему функция PKCS7_decrypt
успешно выполняется с заполнением PKCS1.5)
Я также не вижу, где в функции CMS_encrypt на OpenSSL вы можете указать свой отступ.По умолчанию он использует PKCS1.5
, затем я проверяю зашифрованные данные с помощью декодера.Я предполагаю, что есть способ установить это также, так как я смог расшифровать контент, зашифрованный с помощью другой библиотеки, которая позволяла задавать заполнение.