v7.0.0: Complete rewrite as drop-in replacement#91
Open
joewiz wants to merge 2 commits intoeXist-db:mainfrom
Open
v7.0.0: Complete rewrite as drop-in replacement#91joewiz wants to merge 2 commits intoeXist-db:mainfrom
joewiz wants to merge 2 commits intoeXist-db:mainfrom
Conversation
05d9a23 to
8312119
Compare
Complete rewrite of the EXPath Cryptographic Module for eXist-db 7.0+. Zero external dependencies — uses only Java's built-in JCE. Drop-in replacement: same package URI (http://expath.org/ns/crypto), same module namespace, same function names, all v6 arities preserved. Targets conformance with four spec sources: - EXPath Crypto 1.0 (2010): original specification - EXPath Crypto Editor's Draft (2017): map-based parameters - EXPath Crypto 2018 CG Final Report: list-* introspection, DSAwithSHA1/RSAwithSHA1 algorithm names, Canonicalization 1.1, map-based generate-signature - BaseX Cryptographic Functions: cross-engine portability What's new: - Binary input support for crypto:hmac (xs:base64Binary, xs:hexBinary) - All generate-signature arities: 6, 7 (xpath), 8 (cert), 3 (key), 2 (map-based per 2018 CG / editor's draft) - 6-param encrypt/decrypt for backward compatibility (iv + provider) - Algorithm name aliases: DSAwithSHA1/RSAwithSHA1 (2018 CG spec) - Canonicalization 1.1: inclusive-1.1, inclusive-with-comments-1.1 - BaseX-compatible signatures (lowercase algorithm names) - RSA_SHA256 signature algorithm; AES-192 and AES-256 key sizes - list-providers/services/algorithms implemented (2018 CG spec), disabled pending eXist binary search fix for zero-param arities - 102 tests (64 JUnit + 38 XQSuite) including BaseX cross-compat vectors - CI: Java 21 on 3 OSes, dependabot for Maven + Actions Breaking changes from v6: - crypto:encrypt output is xs:base64Binary (was dash-separated bytes) - DSA_SHA1 signatures forbidden by Java 21 secure validation Requires eXist-db 6.2+ and Java 21+. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
reinhapa
requested changes
Apr 22, 2026
- Update CryptoModule.RELEASE from "1.0.0" to "7.0.0" - Convert switch statement to switch expression in CryptoUtils - Convert multi-line string concatenations to Java 15 text blocks in all 7 function classes and the test file - All 102 tests pass Addresses @reinhapa's review comments on PR eXist-db#91. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Member
Author
|
[This response was co-authored with Claude Code. -Joe] Thanks for the thorough review, @reinhapa! All addressed in 4b73123:
All 102 tests pass. |
reinhapa
approved these changes
Apr 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete rewrite of the EXPath Cryptographic Module for eXist-db 7.0+. Zero external dependencies — uses only Java's built-in JCE.
http://expath.org/ns/crypto), same module namespace, same function names, all v6 arities preservedSpec sources
This implementation targets conformance with four sources:
Each function class documents which spec sources it conforms to in its Javadoc.
What's new
Breaking changes from v6
Test plan
[This response was co-authored with Claude Code. -Joe]
🤖 Generated with Claude Code