Skip to content

feat(passkey-crypto): migrate encryption from SJCL to Argon2id v2#8714

Draft
derranW26 wants to merge 1 commit intomasterfrom
WCN-412-migrate-passkey-encryption-sjcl-to-argon2-v2
Draft

feat(passkey-crypto): migrate encryption from SJCL to Argon2id v2#8714
derranW26 wants to merge 1 commit intomasterfrom
WCN-412-migrate-passkey-encryption-sjcl-to-argon2-v2

Conversation

@derranW26
Copy link
Copy Markdown
Contributor

Summary

  • Replaces synchronous SJCL-based encrypt/decrypt with async Argon2id v2 equivalents (encryptAsync/decryptAsync) in attachPasskeyToWallet and removePasskeyFromWallet
  • Test mocks updated to version-dispatch between SJCL (v1) and Argon2id (v2) envelopes
  • Integration tests verify v2 envelope structure and round-trip correctness via encryptV2/decryptV2
  • Unit tests add explicit v2-specific coverage for both attach and remove flows
  • Bumps package to 0.3.0 and adds @bitgo/sdk-api devDependency

Test plan

  • yarn unit-test — 50 passing
  • yarn integration-test — 56 passing
  • Manual QA: attach passkey to wallet → verify re-encrypted blob is v2 envelope
  • Manual QA: remove passkey with correct and incorrect passphrases against v2 blob

Ticket: WCN-412

Replace synchronous SJCL-based encrypt/decrypt calls with async Argon2id v2
equivalents across attachPasskeyToWallet and removePasskeyFromWallet.

- attachPasskeyToWallet: use decryptAsync + encryptAsync with encryptionVersion: 2
- removePasskeyFromWallet: use decryptKeychainPrivateKeyAsync instead of sync variant
- derivePassword: update JSDoc to reflect Argon2id v2 password usage
- Test mocks updated to support encryptAsync/decryptAsync with version-dispatching
- Integration tests assert v2 envelope and use decryptV2 for round-trip verification
- Unit tests add v2-specific coverage for both attach and remove flows
- Bump package version to 0.3.0 and add @bitgo/sdk-api devDependency

Ticket: WCN-412
@linear-code
Copy link
Copy Markdown

linear-code Bot commented May 7, 2026

WCN-412

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