16 Oct 2026

This documents the protocol history. Applet 4.0 cards and applet 3.x cards are both in the field and 3.x cards cannot be upgraded, so clients must expect to meet either. See Changes in 4.0 for a migration-oriented summary, and the individual command pages for per-command 4.0 details.

  • BREAKING Replaced the secure channel with a new, pairing-less protocol (SecureChannel v2). The PAIR, UNPAIR and MUTUALLY AUTHENTICATE commands are gone, as is the pairing password/secret
  • BREAKING Card authentication is now based on a factory-installed identity certificate, returned in the SELECT response. The IDENT command is gone
  • BREAKING Removed the SET PINLESS PATH command and pinless signing in general
  • BREAKING Removed the DERIVE KEY command. The derivation path must be carried in each SIGN/EXPORT KEY command
  • BREAKING Removed the Instance UID, the secure channel public key and the pairing slot count from the SELECT response. Added an application status byte and the identity certificate
  • BREAKING Removed the key path response from GET STATUS (P1 = 0x01)
  • BREAKING Requires JavaCard 3.0.5 and an additional keycard-math package installed on the card
  • Added BIP340/BIP341 Schnorr signing (Taproot compatible) with optional key tweaking, selected with SIGN P2 = 0x03
  • Added LEE support: seeds loaded with LOAD KEY P1 = 0x04 and the new EXPORT LEE command
  • Added the EXPORT BIP85 command for deterministic entropy derivation
  • Added the ECDH command, restricted to NIP-44 and EIP-1581 paths
  • Added the GET CHALLENGE command to get random data from the card
  • GET DATA can now segment large NDEF records across multiple responses

  • Added Ephemeral pairing slot in PAIR command
  • LOAD (Seed) command can now accepts SLIP39 seeds
  • Update STORE DATA to support chaining
  • Increase max NDEF size to 512 bytes

  • Added IDENT command to Keycard an Cash applet
  • Added Ident applet
  • Added ability to export the extended public key
  • Added duress PIN
  • The INIT command now optionally accepts the max number of PIN, PUK retries and the duress PIN
  • Added FACTORY RESET command

  • BREAKING Removed the DUPLICATE KEY command
  • BREAKING Removed SET NDEF command (replaced by STORE DATA)
  • Added Cash applet for payments/burner wallet scenarios
  • STORE DATA/GET DATA can now be used also for NDEF and Cash data

  • Added additional options to the SIGN command to facilitate usage in POS transactions.
  • Make SET NDEF more tolerant on the input format by automatically appending missing length.

  • Added concept of capabilities, making some APDU conditional and extending the SELECT response.

  • BREAKING Changed application AID
  • BREAKING Completely redefined the EXPORT KEY command
  • BREAKING Removed assisted key derivation
  • BREAKING Removed plain data signing, now only 32-byte long hashes can be signed
  • Added internal key generation (GENERATE KEY)
  • Added the ability to customize the NDEF response (SET NDEF)
  • Added DUPLICATE KEY command
Last edited
16 Oct 2026