Skip to main content
All signing operations in v2 require an op_jwt — a short-lived JWT (max 5 minutes) — along with the access_key returned at wallet creation. The Nitro Enclave verifies the JWT offline, then strictly matches iss and sub against the wallet’s identity binding before authorizing the operation.
sign_data and sign_transaction are for EVM wallets. sign_message accepts a raw base64-encoded message and is designed for Solana wallets. There is no personal_sign or sign_typed_data endpoint — for EVM typed-data signing, pre-hash with keccak256 and use sign_data.

Transaction Signing

Sign transaction payloads for different blockchain networks. The payload format varies by network type.

EVM Transaction Signing

Sign Ethereum and EVM-compatible chain transactions.
cURL

Solana Transaction Signing

Sign Solana blockchain transactions.
cURL

Bitcoin Transaction Signing

Sign Bitcoin blockchain transactions.
cURL
Transaction Signing Response:

Request Parameters

string
required
Body
Short-lived JWT (max 5 minutes) for the user performing the operation. Verified inside the enclave against the wallet’s identity binding.
string
required
Body
The UUID of the wallet to sign with.
string
required
Body
The access key returned from wallet creation. Retrieve from your database.
object
required
Body
Transaction payload to be signed. Format varies by network:
  • EVM: Standard Ethereum transaction object
  • Solana: Base64-encoded transaction string
  • Bitcoin: Object with inputs and outputs arrays

Response Fields

string
The signed transaction ready for broadcast to the blockchain.
string
The transaction hash that will be generated when the transaction is submitted to the network.

Message Signing

Sign Data

Sign arbitrary data using keccak256 hash (EVM only).
cURL
Data Signing Response:

Request Parameters

string
required
Body
Short-lived JWT (max 5 minutes) for the user performing the operation.
string
required
Body
The UUID of the wallet to sign with.
string
required
Body
The access key returned from wallet creation. Retrieve from your database.
string
required
Body
The keccak256 hash of the data to sign.

Response Fields

string
The hash that was signed.
string
The complete signature in hex format.
string
The r component of the ECDSA signature.
string
The s component of the ECDSA signature.
string
The recovery parameter of the ECDSA signature.

Sign Message (Solana)

Sign an arbitrary message using a Solana wallet.
cURL
Solana Message Signing Response:

Request Parameters

string
required
Body
Short-lived JWT (max 5 minutes) for the user performing the operation.
string
required
Body
The UUID of the wallet to sign with.
string
required
Body
The access key returned from wallet creation. Retrieve from your database.
string
required
Body
The message to be signed, encoded in base64.

Response Fields

string
The signature in base64 format.

v1 Wallet Migration

If you have existing v1 wallets, they are migrated to v2 on first use. Include encryption_context alongside op_jwt and access_key on the first v2 operation for that wallet. The enclave will re-key the wallet to v2 JWT binding as a side effect, and subsequent operations will not require encryption_context.
string
Body
Required only when migrating a v1 wallet on first v2 use. The original encryption context used during v1 wallet creation.
After the first successful v2 operation, the wallet is permanently migrated and encryption_context is no longer accepted or needed.