Skip to content

Release v0.2.0: Selective Disclosure holder/verifier lifecycle & security hardening#7

Merged
brody-0125 merged 1 commit intomainfrom
claude/update-readme-apr-16-5ljhq
Apr 16, 2026
Merged

Release v0.2.0: Selective Disclosure holder/verifier lifecycle & security hardening#7
brody-0125 merged 1 commit intomainfrom
claude/update-readme-apr-16-5ljhq

Conversation

@brody-0125
Copy link
Copy Markdown
Owner

Summary

This release completes the Selective Disclosure (ecdsa-sd-2023) implementation with holder and verifier workflows, adds critical security hardening for ECDSA signatures and key material, and improves JSON-LD canonicalization robustness.

Key Changes

Selective Disclosure — Full Lifecycle

  • Added SelectiveDisclosure.deriveProof() for holder-side proof derivation that strips the issuer HMAC key and emits a derived proof (CBOR tag 0xd9 0x5d 0x01) with per-quad signatures and label mapping
  • Added SelectiveDisclosure.verifyDerivedProof() for verifier-side reconstruction and validation without requiring the HMAC key
  • Corrected base proof CBOR header to 0xd9 0x5d 0x00 and proofValue multibase prefix to u (base64url-no-pad) per W3C VC-DI-ECDSA specification
  • Updated documentation to reflect three-step Selective Disclosure workflow: base, derive, and verify

Security Hardening

  • Implemented low-S normalization for ECDSA P-256 signatures on sign and validation on verify to prevent signature malleability attacks where (r, s) and (r, n − s) both verify
  • Added key material zeroization via try-finally blocks for Ed25519 seed bytes, P-256 private keys, and ecdsa-sd-2023 HMAC-SHA256 keys to reduce exposure in heap/core dumps and swap

JSON-LD Canonicalization

  • Applied Unicode NFC normalization at ingress boundary for string literals and map keys to ensure composed/decomposed forms canonicalize identically
  • Expanded numeric type handling to support Short, Byte, Float, BigDecimal, BigInteger
  • Added W3C rdf-canon conformance tests covering blank-node relabeling, graph isomorphism, RDF collections, and language-tagged literals

Documentation & CI

  • Updated README with complete Selective Disclosure feature matrix
  • Added comprehensive release notes documenting all changes
  • Added GitHub Actions CI workflow for automated testing on push/PR

Version

Updated dependency version from 0.1.0 to 1.2.0

https://claude.ai/code/session_01JCxZUynYHgu4mYqREkBVWy

Bump the Gradle install snippets to 0.2.0 and extend the Supported
Proof Mechanisms table so the full ecdsa-sd-2023 holder/verifier
lifecycle (createBaseProof / deriveProof / verifyDerivedProof) is
visible.

Move the 0.2.0 release notes out of the README into a dedicated
CHANGELOG.md following Keep-a-Changelog conventions. The README now
links to CHANGELOG.md from a short Changelog section. 0.2.0 covers
the five April 16, 2026 commits: the sd-2023 derivation/verification
path (including the CBOR header and multibase-prefix spec fix), the
ECDSA low-S malleability fix, key material zeroization, JSON-LD NFC
ingress + W3C rdf-canon conformance tests, and the new GitHub
Actions CI workflow.
@brody-0125 brody-0125 force-pushed the claude/update-readme-apr-16-5ljhq branch from da9ee31 to d359c0b Compare April 16, 2026 13:48
@brody-0125 brody-0125 merged commit 0502e41 into main Apr 16, 2026
2 checks passed
@brody-0125 brody-0125 changed the title Release v1.2.0: Selective Disclosure holder/verifier lifecycle & security hardening Release v0.2.0: Selective Disclosure holder/verifier lifecycle & security hardening Apr 16, 2026
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.

2 participants