Creates a passkey and encrypts one secret into a vault. Runs one creation ceremony and may run a fallback assertion, so it shows one or two user-verification prompts.
Creates a passkey and encrypts one secret into a vault.
@param ― options - Passkey creation inputs and secret bytes.
@returns ― A JSON-safe secret vault containing the new credential metadata.
@remarks ―
Runs one creation ceremony and shows one user-verification prompt. On
authenticators that do not evaluate PRF during creation, also runs an
assertion, which shows a second.
A fresh random PRF salt is generated internally and stored in the returned
vault.
A fresh random user handle (user.id) is generated for the new credential,
so each call adds a passkey instead of replacing one.
If the fallback ceremony or vault encryption fails, the passkey from the
completed creation ceremony still exists on the authenticator, but the
thrown error does not carry its metadata.
@throws ― MeraError with code PRF_UNAVAILABLE when the authenticator does not enable PRF or return a usable 32-byte PRF output.
@throws ― MeraError with code INPUT_INVALID when secret is empty.
@throws ― MeraError with code CRYPTO_UNAVAILABLE when crypto.getRandomValues or crypto.subtle is unavailable.
@throws ― MeraError with code PASSKEY_OPERATION_FAILED when WebAuthn is unavailable, cancelled, or returns an unexpected credential.
The TextEncoder.encode() method takes a string as input, and returns a Global_Objects/Uint8Array containing the text given in parameters encoded with the specific method for that TextEncoder object.
Creates a passkey and encrypts one secret into a vault.
@param ― options - Passkey creation inputs and secret bytes.
@returns ― A JSON-safe secret vault containing the new credential metadata.
@remarks ―
Runs one creation ceremony and shows one user-verification prompt. On
authenticators that do not evaluate PRF during creation, also runs an
assertion, which shows a second.
A fresh random PRF salt is generated internally and stored in the returned
vault.
A fresh random user handle (user.id) is generated for the new credential,
so each call adds a passkey instead of replacing one.
If the fallback ceremony or vault encryption fails, the passkey from the
completed creation ceremony still exists on the authenticator, but the
thrown error does not carry its metadata.
@throws ― MeraError with code PRF_UNAVAILABLE when the authenticator does not enable PRF or return a usable 32-byte PRF output.
@throws ― MeraError with code INPUT_INVALID when secret is empty.
@throws ― MeraError with code CRYPTO_UNAVAILABLE when crypto.getRandomValues or crypto.subtle is unavailable.
@throws ― MeraError with code PASSKEY_OPERATION_FAILED when WebAuthn is unavailable, cancelled, or returns an unexpected credential.
createSecretVaultWithNewPasskey({
rp: PasskeyRelyingParty
Relying party identity passed to WebAuthn. id is required so the
fallback assertion can target the same relying party.
rp: {
id: string
Relying party ID: the host the passkey is scoped to.
id: "account.example.com",
name: string
Relying party name the authenticator may show.
name: "Example" },
user: {
name: string;
displayName: string;
}
User identity passed to WebAuthn.
user: {
name: string
User name displayed or stored by the authenticator.
name: "account@example.com",
displayName: string
Human-readable display name for the authenticator UI.
The setItem() method of the Storage interface, when passed a key name and value, will add that key to the given Storage object, or update that key's value if it already exists.
Versioned JSON-safe vault holding one secret encrypted behind a passkey.
The secret bytes are opaque to the library.
PasskeySecretVault } from"@category-labs/mera";
type
type ReturnType =Promise<PasskeySecretVault>
ReturnType=
interface Promise<T>
Represents the completion of an asynchronous operation
Promise<
type PasskeySecretVault = {
readonly version:1;
readonly credential:PasskeyCredentialMetadata;
readonly prfSalt:string;
readonly nonce:string;
readonly ciphertext:string;
}
Versioned JSON-safe vault holding one secret encrypted behind a passkey.
The secret bytes are opaque to the library.
PasskeySecretVault>;
A JSON-safe vault with version, credential, prfSalt, nonce, and ciphertext. It contains the new credential’s metadata and a fresh random 32-byte PRF salt. The secret vault format page documents every field.
The credential’s user handle (user.id) is 32 random bytes, generated per call, so each call adds a passkey and never overwrites one.
If the fallback ceremony or vault encryption fails after creation, the passkey remains on the authenticator and the error does not contain its metadata.