When strict authentication is off, nothing extra is asked. You still pass
walletPassword where
you did before: seed wallets need it on every signature (see
Seed wallets).Who decides
The server decides per request, and the SDK does not predict it. Strict applies when the platform or the user has it on, or when the organization that owns the target has it on. The target is the wallet, seed, vault or order the request acts on. A personal wallet ignores organization policies, so the same API key can be strict for one vault and not for another.Passing the password
In strict mode, passwalletPassword on every method that signs:
changeWalletPassword,
rotateOprfKeyVersion, recoverWalletsBatch, topUpCosignerKeys, employee provisioning) keep
taking it. In strict mode they also use it to read the shares they need.
The SDK checks the password you pass against the server with a proof derived from the typed value.
It never uses the unlocked session for this, so an unlocked session does not replace the prompt.
One password per action
The SDK sends each request without a proof first. If the server answers that the password is required, the SDK proves it against a one-time challenge and repeats the request once. The refused request released nothing, so repeating it is safe. The server answers with a short-lived grant (two minutes), and the rest of the same call reuses it:- further key releases of the call (a vault order that signs with several keys);
- the order or vault submission that follows (
order/sign,order/execute,order/activate).
signOrder followed by executeOrder is two actions, so the user enters the
password twice.
If the call has no walletPassword and the server requires it, the SDK throws
StrictAuthPasswordRequiredError. Ask the user for the password and call the method again.
Reading the mode
organizationId the answer
covers the platform and the user. With it, that organization’s policy is added; getOrgMe() returns the id. It cannot tell you
what the server will decide for a particular wallet or vault, so treat effective: false as
“probably not”, never as a guarantee. The answer is cached for 30 seconds per organization.
Hardware wallets
The device signs, so hardware methods take no password, with one exception. Executing or activating a Vault (prepareHardwareOrderExecute, prepareHardwareVaultActivation) needs the password in
strict mode. Pass it to the prepare call and again to the submit:
StrictAuthPasswordRequiredError after the device has already signed, and the user
has to start again. Read getStrictAuthStatus() before the session if you want to ask first.
Errors
An account whose password was never proven to the server answers the challenge with HTTP 409
WALLET_PASSWORD_MIGRATION_REQUIRED. Call unlockWalletSession once with the password, then retry.
Seed wallets need the password on every signature
Signing with a wallet derived from the recovery phrase rebuilds the account seed for that one signature and wipes it afterwards. The seed is never kept between calls, so passwalletPassword on
every signing call for a seed wallet, in either mode. Without it the call fails with
SESSION_LOCKED.
Each signature is a separate request to a rate-limited route, so signing many transactions in a row
with a seed wallet is throttled per signature.