Commit 47fdb0a
fix(auth): route PBKDF2 getEncoded() through the SecretKey interface for Adobe 2025 JPMS (#3301)
SecretKeyFactory.generateSecret() returns a com.sun.crypto.provider.PBKDF2KeyImpl,
a JDK-internal class java.base does not open. Adobe 2025's reflection layer
bulk-setAccessibles the concrete class's methods when dispatching a member call
and its JVM rejects that with InaccessibleObjectException, erroring 17 of 24
PasswordHasherSpec specs on every database leg (matrix run 28815315339) — the
only new cross-engine failure from the 2962 feature merges. Lucee, BoxLang, and
Adobe <= 2023 tolerate the direct call.
Invoke getEncoded() via the exported javax.crypto.SecretKey interface Method
object instead; public interface methods need no opens. Adds Cross-Engine
Invariant 14 to CLAUDE.md so the pattern is checked going forward.
Closes #3300
Signed-off-by: Peter Amiri <petera@pai.com>
Co-authored-by: Peter Amiri <petera@pai.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent b082f4a commit 47fdb0a
2 files changed
Lines changed: 14 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
241 | 241 | | |
242 | 242 | | |
243 | 243 | | |
244 | | - | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
245 | 257 | | |
246 | 258 | | |
247 | 259 | | |
| |||
0 commit comments