On Wed, 4 Jun 2025 15:15:38 GMT, Weijun Wang <wei...@openjdk.org> wrote:
>> Update the `PBEKey` class of the SunJCE provider which override the >> `javax.security.auth.Destroyable` interface to >> >> 1. throw `IllegalStateException` if `getEncoded()` is called after key is >> destroyed >> 2. serialization of such destroyed `PBEKey` object will lead to exception. >> >> Also update the `PBEKeyFactory` class of the SunJCE provider to check for >> destroyed keys and throw exceptions per the method javadoc. > > src/java.base/share/classes/com/sun/crypto/provider/PBEKey.java line 82: > >> 80: } >> 81: >> 82: public byte[] getEncoded() { > > I understand this is not a public API class so there is no need to provide > `@throws` in the spec. But, on the other hand, do we need to provide one in > its super class `java.security.key`? I have no opinion. Well, I am not sure. `java.securityKey` is the super interface for all keys, including private, public, and secret keys. The Exception is due to implementing the `javax.security.auth.Destroyable` interface, so the `@throws` spec should goes to the class which implements both `Destroyable` and `Key` interfaces. `PBEKey` is not a public API class, so perhaps we can documenting this in the `SunJCE` provider section as this is implementation-specific? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25632#discussion_r2132935613