feat: support skipExpiryCheck on disclosure requests#16
feat: support skipExpiryCheck on disclosure requests#16dobby-coder[bot] wants to merge 1 commit into
Conversation
Add an optional skip_expiry_check field to BaseRequest, serialized as skipExpiryCheck and omitted when None, matching the field introduced in irmago v0.14.0. It lets the server accept disclosed attributes from already-expired credentials of the given credential types. Builder methods are exposed on DisclosureRequestBuilder and SignatureRequestBuilder (a disclosure request under the hood), and a serialization test covers omission, both request types, and roundtrip. Refs #8 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ Rules Dobby 2 — sign-off (posted as COMMENT only because GitHub blocks self-approval on a dobby-coder[bot]-authored PR; treat this as an APPROVE).
Per-rule compliance check (run against the binding rule set) and Review Dobby 2's code findings both come back clean — nothing blocking:
- Code review: 0 blocking bugs. Field placement on
BaseRequestverified against irmago v0.14.0, whereskipExpiryChecklives onDisclosureRequestalongsidedisclose/labels— both carried on this crate'sBaseRequest. Serde attrs (rename = "skipExpiryCheck",skip_serializing_if = "Option::is_none") correct; field omitted whenNone. - Tests: new
test_skip_expiry_checkcovers omission-when-unset, serialization on disclosure + signature requests, and JSON roundtrip. - Rules: conventional-commit title ✓, tests-on-changes ✓, close-keyword (
Closes #8) ✓, fmt/clippy/test clean per verification ✓. Draft state is correct at this pipeline stage (flipped to ready downstream after CI).
Non-blocking nit (not a change request): irmago's IssuanceRequest also embeds DisclosureRequest, so a combined issuance-disclosure could carry skipExpiryCheck — but the builder method is exposed only on DisclosureRequestBuilder/SignatureRequestBuilder, not IssuanceRequestBuilder. The field still serializes correctly for issuance since it lives on BaseRequest; exposing it on the issuance builder is a completeness follow-up, arguably out of scope for #8. Not blocking.
Closes #8.
Since irmago v0.14.0, disclosure requests accept an optional
skipExpiryCheckfield — a list of credential type identifiers for which the server should accept disclosed attributes from already-expired credentials.Changes
skip_expiry_check: Option<Vec<String>>toBaseRequest, serialized asskipExpiryCheckand omitted whenNone(skip_serializing_if = "Option::is_none").DisclosureRequest, alongsidediscloseandlabels— both of which live in this crate'sBaseRequest. Signature and issuance requests embed a disclosure request in irmago, so carrying it on the sharedBaseRequestmatches upstream.skip_expiry_check(Vec<String>)builder method onDisclosureRequestBuilderandSignatureRequestBuilder(the signature builder being a disclosure request under the hood).test_skip_expiry_checkcovering omission when unset, serialization on both disclosure and signature requests, and JSON roundtrip.Verification
cargo fmt --all -- --check— cleancargo test— all tests pass (incl. the newtest_skip_expiry_check)cargo clippy --all-targets— cleanReferences
🤖 Generated with Claude Code