On Thu, 10 Nov 2022 05:42:27 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:

>> src/java.base/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java line 
>> 423:
>> 
>>> 421:             // wrap everything into a SEQUENCE
>>> 422:             out.write(DerValue.tag_Sequence, tmp);
>>> 423:             return out.toByteArray();
>> 
>> I'd rather not cache the encoding. First, the cache makes the class mutable. 
>> Second, `getEncode` should usually only be called once and the cache is not 
>> so useful. Third, this avoids an unnecessary clone (on the line below).
>
> I'm not very sure of the 2nd point.  Is it possible the class could be a long 
> term object, and used multiple time?  Anyway, the encoding should be fast and 
> may not worthy of a mutable design.

Well, maybe not very sure. IMO, the class itself only does decryption so most 
likely one reads the encrypted key from a file and then call one of the 
`getKeySpec` methods to extract the key inside. If doing an encryption, user 
has to encrypt it on their own and then call one of the constructors with 2 
arguments, and then might call `getEncoded` to store it somewhere. This only 
needs to be done once.

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

PR: https://git.openjdk.org/jdk/pull/11067

Reply via email to