On Tue, 23 Mar 2021 20:09:23 GMT, Greg Rubin <github.com+829871+salusasecon...@openjdk.org> wrote:
>> Valerie Peng has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Changed AlgorithmParameters impls to register under AES/KW/NoPadding and >> AES/KWP/NoPadding > > src/java.base/share/classes/com/sun/crypto/provider/KeyWrapCipher.java line > 507: > >> 505: } else { >> 506: outLen = cipher.encryptFinal(dataBuf, 0, dataIdx, null, >> -1); >> 507: } > > Can we extract this shared logic (among the different versions of > `engineDoFinal`) into a separate helper method so that the different > `engineDoFinal` methods just need to handle their specific differences (such > as returning `Arrays.copyOf(dataBuf, outLen)` or calling > `System.arraycopy(dataBuf, 0, out, outOfs, outLen); return outLen;`). Right, I agree. Will look into it. > src/java.base/share/classes/com/sun/crypto/provider/KeyWrapCipher.java line > 660: > >> 658: @Override >> 659: protected byte[] engineWrap(Key key) >> 660: throws IllegalBlockSizeException, InvalidKeyException { > > Is it okay that we can call `cipher.init(Cipher.ENCRYPT_MODE, ...)` and then > use it with `cipher.wrap()`? > > Also, can we simply delegate the heavy lifting to `engineDoFinal()` (or the > new suggested helper method) rather than duplicating this logic here? Right, I will add additional checking on the Cipher.XXX_MODE. Agree with you regarding reducing the code duplication. ------------- PR: https://git.openjdk.java.net/jdk/pull/2404