On Fri, 23 May 2025 04:54:26 GMT, Koushik Muthukrishnan Thirupattur 
<d...@openjdk.org> wrote:

> Several classes in the `java.security` package lazily compute their hash 
> value and store it in a field. These fields can typically be annotated with 
> the `@Stable` annotation. Many of the current implementations are using -1 as 
> a flag for not computed, this needs to be refactored away.
> 
> Here are some examples of such classes: PKCS12Attribute, Timestamp, 
> Certificate, and URICertStoreParameters.

I think we should add tests that seralizes/deserializes objects several times 
to make sure the hash code works as expected here.

src/java.base/share/classes/java/security/CodeSigner.java line 172:

> 170:             throw new InvalidObjectException("signerCertPath is null");
> 171:         }
> 172:         myhash = 0;

I do not think we can use `@Stable` for this class, as `readObject()` can be 
called multiple times on an object.

src/java.base/share/classes/java/security/Timestamp.java line 179:

> 177:             throw new InvalidObjectException("Invalid null field(s)");
> 178:         }
> 179:         myhash = 0;

Same here.

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

PR Comment: https://git.openjdk.org/jdk/pull/25405#issuecomment-2939685005
PR Review Comment: https://git.openjdk.org/jdk/pull/25405#discussion_r2126373067
PR Review Comment: https://git.openjdk.org/jdk/pull/25405#discussion_r2126374887

Reply via email to