RFR: 8365883: Fix P11Cipher to throw BadPaddingException for PKCS11 CKR_ENCRYPTED_DATA_INVALID error

Mikhail Yankelevich myankelevich at openjdk.org
Tue Feb 3 11:05:52 UTC 2026


On Sat, 31 Jan 2026 00:02:22 GMT, Valerie Peng <valeriep at openjdk.org> wrote:

>> Underlying issue: if provider returns `PKCS11Exception: CKR_ENCRYPTED_DATA_INVALID` instead of BadPaddingException - `java.security.ProviderException: doFinal()` is thrown
>
> test/jdk/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java line 73:
> 
>> 71:         // Checking for SunJCE first
>> 72:         System.out.println("Checking SunJCE provider");
>> 73:         doTest(Security.getProvider("SunJCE"));
> 
> I am not too sure if this is really needed as this is the test for PKCS11 provider. If you really want to keep this, how about adding a static String variable whose value is `System.getProperty("test.provider.name", "SunJCE")`? This way it's consistent with line 90 inside the `doTest()` method.

I believe it should, as this helped me to debug this issue a lot. Would be very helpful if this could give us both cases for comparison.
Will add a static var in the next commit

> test/jdk/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java line 107:
> 
>> 105:                             c2.doFinal(cipherText, 0, cipherText.length - 2);
>> 106:                         } catch (IllegalBlockSizeException ibe) {
>> 107:                             // expected
> 
> Can we also add a `System.out.println("Expected IBSE thrown");` for information sake? Same goes for the other expected exception block on line 119.

Actually, what do you think about throwing an exception here, something like 


throw new RuntimeException("Expected IBSE thrown");


it shouldn't happen, so failing the test should be valid IMO

> test/jdk/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java line 127:
> 
>> 125:                 } catch (NoSuchAlgorithmException nsae) {
>> 126:                     System.out.println("Skipping unsupported algorithm: " +
>> 127:                                        nsae);
> 
> nit: why so much indent?

IDE changed automatically, will revert

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/29503#discussion_r2758509651
PR Review Comment: https://git.openjdk.org/jdk/pull/29503#discussion_r2758500752
PR Review Comment: https://git.openjdk.org/jdk/pull/29503#discussion_r2758493835



More information about the security-dev mailing list