On Wed, 20 Jan 2021 13:47:13 GMT, Martin Balao <[email protected]> wrote:
>> When a multi-part cipher operation fails in SunPKCS11 (i.e. because of an
>> invalid block size), we now cancel the operation before returning the
>> underlying Session to the Session Manager. This allows to use the returned
>> Session for a different purpose. Otherwise, an CKR_OPERATION_ACTIVE error
>> would be raised from the PKCS#11 library.
>>
>> The jdk/sun/security/pkcs11/Cipher/CancelMultipart.java regression test is
>> introduced as part of this PR.
>>
>> No regressions found in jdk/sun/security/pkcs11.
>
> Martin Balao has updated the pull request incrementally with two additional
> commits since the last revision:
>
> - Align doCancel pattern in 'P11Cipher::implDoFinal(byte[]..' to
> 'P11Cipher::implDoFinal(ByteBuffer..'. Better documentation in P11Cipher.
> Copyright date updated.
> - Copyright dates updated to 2021 on modified files
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Cipher.java line
793:
> 791: // only after this point. See JDK-8258833 for further
> 792: // information.
> 793: doCancel = false;
@valeriepeng I made a code change here so I'd like you to have a final look and
validate. I'm just aligning the 'P11Cipher::implDoFinal(byte[]..' function to
'P11Cipher::implDoFinal(ByteBuffer..'. The rationale is that 'doFalse = false'
can be placed before the C_EncryptFinal call because any error on it does not
require a cancel (it already cancels the operation)
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Cipher.java line
812:
> 810: // only after this point. See JDK-8258833 for further
> 811: // information.
> 812: doCancel = false;
Same comment that for line 793 of P11Cipher
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Cipher.java line
820:
> 818: System.arraycopy(padBuffer, 0, out, outOfs, k);
> 819: } else {
> 820: doCancel = false;
Same comment than for line 793 of P11Cipher
-------------
PR: https://git.openjdk.java.net/jdk/pull/1901