Home / Input Output / atala-prism-wallet-sdk-ts
May 11, 1-2 AM (0)
May 11, 2-3 AM (0)
May 11, 3-4 AM (0)
May 11, 4-5 AM (0)
May 11, 5-6 AM (0)
May 11, 6-7 AM (0)
May 11, 7-8 AM (0)
May 11, 8-9 AM (0)
May 11, 9-10 AM (0)
May 11, 10-11 AM (5)
May 11, 11-12 PM (0)
May 11, 12-1 PM (1)
May 11, 1-2 PM (0)
May 11, 2-3 PM (0)
May 11, 3-4 PM (0)
May 11, 4-5 PM (0)
May 11, 5-6 PM (0)
May 11, 6-7 PM (0)
May 11, 7-8 PM (0)
May 11, 8-9 PM (0)
May 11, 9-10 PM (0)
May 11, 10-11 PM (0)
May 11, 11-12 AM (0)
May 12, 12-1 AM (0)
May 12, 1-2 AM (0)
May 12, 2-3 AM (0)
May 12, 3-4 AM (0)
May 12, 4-5 AM (0)
May 12, 5-6 AM (0)
May 12, 6-7 AM (0)
May 12, 7-8 AM (0)
May 12, 8-9 AM (0)
May 12, 9-10 AM (1)
May 12, 10-11 AM (1)
May 12, 11-12 PM (0)
May 12, 12-1 PM (0)
May 12, 1-2 PM (0)
May 12, 2-3 PM (0)
May 12, 3-4 PM (0)
May 12, 4-5 PM (0)
May 12, 5-6 PM (1)
May 12, 6-7 PM (0)
May 12, 7-8 PM (0)
May 12, 8-9 PM (0)
May 12, 9-10 PM (0)
May 12, 10-11 PM (0)
May 12, 11-12 AM (0)
May 13, 12-1 AM (0)
May 13, 1-2 AM (0)
May 13, 2-3 AM (0)
May 13, 3-4 AM (0)
May 13, 4-5 AM (0)
May 13, 5-6 AM (0)
May 13, 6-7 AM (0)
May 13, 7-8 AM (1)
May 13, 8-9 AM (0)
May 13, 9-10 AM (0)
May 13, 10-11 AM (0)
May 13, 11-12 PM (0)
May 13, 12-1 PM (0)
May 13, 1-2 PM (0)
May 13, 2-3 PM (0)
May 13, 3-4 PM (0)
May 13, 4-5 PM (0)
May 13, 5-6 PM (0)
May 13, 6-7 PM (0)
May 13, 7-8 PM (0)
May 13, 8-9 PM (0)
May 13, 9-10 PM (0)
May 13, 10-11 PM (0)
May 13, 11-12 AM (0)
May 14, 12-1 AM (0)
May 14, 1-2 AM (0)
May 14, 2-3 AM (0)
May 14, 3-4 AM (0)
May 14, 4-5 AM (0)
May 14, 5-6 AM (1)
May 14, 6-7 AM (0)
May 14, 7-8 AM (1)
May 14, 8-9 AM (1)
May 14, 9-10 AM (0)
May 14, 10-11 AM (0)
May 14, 11-12 PM (0)
May 14, 12-1 PM (0)
May 14, 1-2 PM (0)
May 14, 2-3 PM (0)
May 14, 3-4 PM (0)
May 14, 4-5 PM (2)
May 14, 5-6 PM (3)
May 14, 6-7 PM (0)
May 14, 7-8 PM (0)
May 14, 8-9 PM (0)
May 14, 9-10 PM (0)
May 14, 10-11 PM (0)
May 14, 11-12 AM (0)
May 15, 12-1 AM (0)
May 15, 1-2 AM (0)
May 15, 2-3 AM (0)
May 15, 3-4 AM (0)
May 15, 4-5 AM (0)
May 15, 5-6 AM (0)
May 15, 6-7 AM (0)
May 15, 7-8 AM (0)
May 15, 8-9 AM (0)
May 15, 9-10 AM (0)
May 15, 10-11 AM (0)
May 15, 11-12 PM (0)
May 15, 12-1 PM (0)
May 15, 1-2 PM (0)
May 15, 2-3 PM (0)
May 15, 3-4 PM (0)
May 15, 4-5 PM (0)
May 15, 5-6 PM (0)
May 15, 6-7 PM (0)
May 15, 7-8 PM (0)
May 15, 8-9 PM (0)
May 15, 9-10 PM (0)
May 15, 10-11 PM (0)
May 15, 11-12 AM (0)
May 16, 12-1 AM (0)
May 16, 1-2 AM (0)
May 16, 2-3 AM (0)
May 16, 3-4 AM (0)
May 16, 4-5 AM (0)
May 16, 5-6 AM (0)
May 16, 6-7 AM (0)
May 16, 7-8 AM (0)
May 16, 8-9 AM (0)
May 16, 9-10 AM (0)
May 16, 10-11 AM (0)
May 16, 11-12 PM (0)
May 16, 12-1 PM (0)
May 16, 1-2 PM (0)
May 16, 2-3 PM (0)
May 16, 3-4 PM (1)
May 16, 4-5 PM (0)
May 16, 5-6 PM (0)
May 16, 6-7 PM (0)
May 16, 7-8 PM (0)
May 16, 8-9 PM (1)
May 16, 9-10 PM (0)
May 16, 10-11 PM (1)
May 16, 11-12 AM (0)
May 17, 12-1 AM (0)
May 17, 1-2 AM (0)
May 17, 2-3 AM (0)
May 17, 3-4 AM (0)
May 17, 4-5 AM (0)
May 17, 5-6 AM (0)
May 17, 6-7 AM (0)
May 17, 7-8 AM (0)
May 17, 8-9 AM (0)
May 17, 9-10 AM (0)
May 17, 10-11 AM (0)
May 17, 11-12 PM (0)
May 17, 12-1 PM (0)
May 17, 1-2 PM (0)
May 17, 2-3 PM (0)
May 17, 3-4 PM (0)
May 17, 4-5 PM (0)
May 17, 5-6 PM (0)
May 17, 6-7 PM (0)
May 17, 7-8 PM (0)
May 17, 8-9 PM (0)
May 17, 9-10 PM (0)
May 17, 10-11 PM (0)
May 17, 11-12 AM (0)
May 18, 12-1 AM (0)
May 18, 1-2 AM (0)
21 commits this week May 11, 2026 - May 18, 2026
fix(oea): add type-safe validation for SD-JWT presentation submissions
Replace untyped `any[]` with properly typed SDJWTDisclosure interface.
Add validateSDJWTSubmission() function to validate structure at runtime
before passing to cryptographic verification routines. This prevents
malformed disclosures, missing claims, or incorrect algorithms from
silently passing through verification.

Fixes #630

Signed-off-by: A-Chronicle <[email protected]>
fix(castor): aggregate and report DID resolution failures with full context
Collect errors from all attempted resolvers and include their details
in the failure message. This enables developers to diagnose resolution
failures (network errors, invalid DIDs, blockchain issues, etc.)
instead of receiving a generic error message.

Fixes #629

Signed-off-by: A-Chronicle <[email protected]>
fix(pluto, castor, didcomm): remove unguarded console output from error paths
Remove console.log() and console.error() calls that bypass the SDK's
logging configuration and could leak sensitive information in production.
These calls appear in critical error paths where exceptions are thrown,
and logging should be handled through the SDK's configured logger.

Fixes #628

Signed-off-by: A-Chronicle <[email protected]>
fix(mercury): throw on message unpacking errors instead of silent failures
Replace silent error suppression in sendMessageParseMessage with explicit
error handling. When message unpacking fails due to decryption errors or
malformed responses, throw InvalidMessageFormatError instead of returning
undefined. This allows callers to distinguish between valid empty responses
and actual protocol failures.

Fixes #626

Signed-off-by: A-Chronicle <[email protected]>
fix(mercury): add JWK validation in DID resolution to prevent type-safety issues
Add parseJWKCoordinate helper method to validate JWK field types before
extraction. This prevents unsafe 'as any' casts and ensures malformed JWK
data throws InvalidKeyError rather than silently proceeding through
cryptographic verification.

Fixes #625

Signed-off-by: A-Chronicle <[email protected]>
fix(mediation): add return_route to keylist-update so the response is observable
The previous flow assumed Send.run would resolve to the mediator's
keylist-update-response. In practice it always resolved to undefined:
DIDCommConnection.send returned the registered handler's result rather
than the parsed message, and the SDK never asked the mediator for an
inline reply. Per coordinate-mediation 2.0 the mediator only answers
synchronously when the request carries `return_route: "all"`, and
Mercury auto-attaches that header for the piuris in ReturnRouteProtocols
(packages/wasm/didcomm/src/Wrapper.ts) -- but keylist-update was never
on that list. So every keylist-update went out without return_route, the
mediator dispatched the response asynchronously, and the client never
observed it.

Add keylist-update to ReturnRouteProtocols, make DIDCommConnection.send
return the inline response, and rewrite updateKeyListWithDID to send the
message, race the call against a 60 s timeout, assert the response is a
Message with the expected piuri and a thid matching the outgoing id, and
validate the body via MediationKeysUpdateResponse (throws on any
non-success / non-no_change result).

Tests cover success, no_change, client_error, server_error, malformed
body, timeout, wrong piuri, wrong thid and a missing response. A guard
on ReturnRouteProtocols prevents the same kind of regression that
originally introduced this bug (PR #85).

Closes #391

Signed-off-by: Seydi Charyyev <[email protected]>
fix(pollux): wire up SD-JWT Key Binding JWT for presentation proofs
Fixes #578 — SD-JWT presentations were missing the Key Binding JWT
(KB-JWT) segment, dropping the verifier's challenge (nonce) and domain.
This made presentations vulnerable to replay attacks.

Root cause: the @sd-jwt/core library already supports KB-JWT via
kbSigner/kbSignAlg config and KBOptions on present(), but the SDK
never connected these paths.

Changes:
- SDJWT.getSKConfig(): add kbSigner and kbSignAlg so the core library
  can sign the KB-JWT segment
- SDJWT.createPresentationFor(): accept optional kb: KBOptions param
  and forward to sdjwt.present()
- oea/sdjwt/PresentationRequest: extract challenge and domain from the
  presentation request and pass as KB options when a challenge is
  provided (backward compatible — no KB-JWT when no challenge)

The KB-JWT payload includes nonce, aud, iat, and sd_hash per the
SD-JWT-VC specification (I-D §5.1).

Test plan:
- 4 new tests covering kbSigner/kbSignAlg config, KB-JWT segment
  generation with correct payload, and backward compatibility
- All 806 existing tests pass

Signed-off-by: Abhigyan Singh <[email protected]>
fix: restore SD+JWT credentials from backup (issue #458)
When backing up SD+JWT credentials, only the JWT ID field was being
stored instead of the full SDJWT JWS. This caused restore to fail
because SDJWTCredential.fromJWS() expects the complete JWS including
disclosures.

Changes:
- Modified Backup.ts to reconstruct full SDJWT JWS from JWT + disclosures
- Updated tests to use correct data format for SDJWT restore
- Added SDJWT to round-trip backup/restore test
- Exported credential JWS strings from fixtures for test use

Fixes #458

Signed-off-by: A-Chronicle <[email protected]>
feat(didcomm): handle keylist-update-response from mediator
createPeerDID currently sends `MediationKeysUpdateList` and assumes the
mediator accepted it. Per the coordinate-mediation 2.0 spec the
mediator responds with either a `keylist-update-response` or a
`ProblemReport`; we need to consume that response so `createPeerDID`
only succeeds on a real acknowledgement.

Implements the design discussed with @elribonazo in #391:

  > we should wait until we have a successful request from the mediator
  > or an exception thrown, or the request timed out (1 m should be fine)

- `updateKeyListWithDID()` now awaits the response from `Send` and,
  when present, runs it through `MediationKeysUpdateResponse`.
- `MediationKeysUpdateResponse` throws when the response carries a
  non-success result (`client_error`, `server_error`, …) or has a
  malformed body, which propagates through `createPeerDID` and surfaces
  to the caller.
- A 60-second timeout (`KEYLIST_UPDATE_TIMEOUT_MS`) is applied so an
  unresponsive mediator fails the flow instead of silently hanging.
- `MediationKeysUpdateResponse` is no longer auto-registered as a
  message handler — it is invoked explicitly from
  `updateKeyListWithDID` after `Send`, so the lifecycle is
  deterministic.
- The old unit test
  (`tests/agent/didcomm/MediationKeysUpdateResponse.test.ts`) is
  replaced by `tests/agent/CreatePeerDID.test.ts`, which exercises the
  flow end-to-end through `createPeerDID` per @FabioPinheiro's review
  guidance — covering success, no_change, client_error, server_error,
  malformed body, timeout, Send returning undefined,
  `updateMediator = false`, and the no-mediator-connected case.

784/784 SDK tests pass locally.

Closes #391

Signed-off-by: Seydi Charyyev <[email protected]>
feat(didcomm): handle keylist-update-response from mediator
createPeerDID currently sends `MediationKeysUpdateList` and assumes the
mediator accepted it. Per the coordinate-mediation 2.0 spec the
mediator responds with either a `keylist-update-response` or a
`ProblemReport`; we need to consume that response so `createPeerDID`
only succeeds on a real acknowledgement.

Implements the design discussed with @elribonazo in #391:

  > we should wait until we have a successful request from the mediator
  > or an exception thrown, or the request timed out (1 m should be fine)

- `updateKeyListWithDID()` now awaits the response from `Send` and,
  when present, runs it through `MediationKeysUpdateResponse`.
- `MediationKeysUpdateResponse` throws when the response carries a
  non-success result (`client_error`, `server_error`, …) or has a
  malformed body, which propagates through `createPeerDID` and surfaces
  to the caller.
- A 60-second timeout (`KEYLIST_UPDATE_TIMEOUT_MS`) is applied so an
  unresponsive mediator fails the flow instead of silently hanging.
- `MediationKeysUpdateResponse` is no longer auto-registered as a
  message handler — it is invoked explicitly from
  `updateKeyListWithDID` after `Send`, so the lifecycle is
  deterministic.
- The old unit test
  (`tests/agent/didcomm/MediationKeysUpdateResponse.test.ts`) is
  replaced by `tests/agent/CreatePeerDID.test.ts`, which exercises the
  flow end-to-end through `createPeerDID` per @FabioPinheiro's review
  guidance — covering success, no_change, client_error, server_error,
  malformed body, timeout, Send returning undefined,
  `updateMediator = false`, and the no-mediator-connected case.

784/784 SDK tests pass locally.

Closes #391

Signed-off-by: Seydi Charyyev <[email protected]>
chore(deps): bump @babel/plugin-transform-modules-systemjs
Bumps the npm_and_yarn group with 1 update in the / directory: [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs).


Updates `@babel/plugin-transform-modules-systemjs` from 7.29.0 to 7.29.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-modules-systemjs"
  dependency-version: 7.29.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>