Skip to content

Fix Access decryption: jackcess-encrypt groupId conflict and missing CodecProvider wiring - #771

Open
spannm wants to merge 2 commits into
keeps:masterfrom
spannm:fix-ucanaccess-jackcess-encrypt-conflict
Open

Fix Access decryption: jackcess-encrypt groupId conflict and missing CodecProvider wiring#771
spannm wants to merge 2 commits into
keeps:masterfrom
spannm:fix-ucanaccess-jackcess-encrypt-conflict

Conversation

@spannm

@spannm spannm commented Sep 8, 2026

Copy link
Copy Markdown

Summary

  • UCanAccess (io.github.spannm) now depends on io.github.spannm:jackcess instead of com.healthmarketscience.jackcess:jackcess. The module's jackcess-encrypt dependency still pointed at the old com.healthmarketscience.jackcess groupId, pulling in a second, incompatible jackcess jar. Switched to the matching io.github.spannm:jackcess-encrypt artifact and bumped both dependencies to their latest compatible releases (ucanaccess 5.1.7, jackcess-encrypt 5.1.5, both built against jackcess 5.1.5).
  • UCanAccess only forwards the password given to withPassword() to the active IJackcessOpenerInterface implementation; it never registers a CodecProvider itself. Relying on UCanAccess's DefaultJackcessOpener meant the password was accepted but silently dropped for AES-encrypted (Access 2007+) databases — jackcess-encrypt was a dependency but never actually invoked. Added MsAccessCryptCodecJackcessOpener, an IJackcessOpenerInterface implementation that wires the password into a jackcess-encrypt CryptCodecProvider, registered via the jackcessOpener connection property whenever a password is supplied.

Test plan

  • mvn compile on dbptk-module-ms-access succeeds
  • Manual verification: import a password-protected Access 2007+ (.accdb, AES-encrypted) database with a password and confirm the data is actually decoded (not silently empty/failing)

…ersion

UCanAccess (io.github.spannm) now depends on io.github.spannm:jackcess
instead of com.healthmarketscience.jackcess:jackcess, so the module's
com.healthmarketscience.jackcess:jackcess-encrypt dependency pulled in
a second, incompatible jackcess jar on the classpath. Switched to the
matching io.github.spannm:jackcess-encrypt artifact and bumped both
dependencies to their latest compatible releases (ucanaccess 5.1.7,
jackcess-encrypt 5.1.5, both built against jackcess 5.1.5).
…rypt

UCanAccess forwards the password given to withPassword() only to the
active IJackcessOpenerInterface implementation; it never registers a
CodecProvider itself. Since the module relied on UCanAccess's
DefaultJackcessOpener, the password was accepted but silently dropped
for AES-encrypted (Access 2007+) databases - jackcess-encrypt was a
dependency but never actually invoked.

Added MsAccessCryptCodecJackcessOpener, a small IJackcessOpenerInterface
implementation that wires the password into a jackcess-encrypt
CryptCodecProvider, and register it via the jackcessOpener connection
property whenever a password is supplied.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant