OZSelectedSigner

public enum OZSelectedSigner : Sendable, Hashable

A signer selected for participation in a multi-signer authorization ceremony.

The smart-account contract supports M-of-N authorization across a mix of signer kinds (passkey-backed external signers, Stellar G-address wallet signers, and Ed25519 external signers). OZSelectedSigner is the single tagged-union shape passed by callers to manager methods that take a selectedSigners parameter (for example addPolicy(contextRuleId:policyAddress:installParams:selectedSigners:forceMethod:)).

When the supplied list is empty, manager methods route through the single-signer submission path bound to the connected passkey credential. When the list is non-empty, manager methods route through the multi-signer collection path which gathers a signature from every supplied signer and assembles the final authorization map.

Important

This type is shared across every manager that supports multi-signer authorization. It is defined here because the policy manager is the first manager to require it; subsequent managers consume the same definition without redeclaring it.
  • A passkey-backed external signer identified by its WebAuthn credential id.

    Declaration

    Swift

    case passkey(credentialId: String, credentialIdBytes: Data? = nil, keyData: Data? = nil, transports: [String]? = nil)

    Parameters

    credentialId

    Base64URL-encoded WebAuthn credential identifier.

    credentialIdBytes

    Optional raw credential identifier bytes. When supplied, the multi-signer pipeline includes a matching WebAuthnAllowCredential (with transports) on the WebAuthn authentication request so the OS can route to the correct passkey. When nil, no allowCredentials list is passed to the provider and the authenticator falls back to its default credential discovery.

    keyData

    Optional pre-fetched secp256r1 public key plus credential id bytes (publicKey || credentialId). Supplying this avoids an indexer lookup during signature collection. May be nil when the manager should resolve the key data on demand.

    transports

    Optional WebAuthn transport hints (internal, hybrid, usb, ble, nfc) propagated into the WebAuthnAllowCredential passed to the WebAuthn provider when credentialIdBytes is non-nil. Cross-device flows typically leave this nil.

  • A wallet-backed signer identified by its G… Stellar account address.

    Declaration

    Swift

    case wallet(accountId: String)

    Parameters

    accountId

    Stellar account address (G… strkey) of the wallet that will produce the signature, either through a configured external wallet adapter or through an in-process keypair registered via OZExternalSignerManager.

  • An Ed25519 signer backed by a verifier contract.

    Identifies a signer registered on-chain as an External(verifierAddress, publicKey) entry. The actual signing capability must be registered separately via addEd25519FromRawKey(secretKeyBytes:verifierAddress:) or by supplying a conforming OZExternalEd25519SignerAdapter before the multi-signer pipeline executes.

    Declaration

    Swift

    case ed25519(verifierAddress: String, publicKey: Data)

    Parameters

    verifierAddress

    Contract address (C… strkey) of the Ed25519 verifier contract registered as part of the on-chain External(verifierAddress, publicKey) signer entry.

    publicKey

    32-byte Ed25519 public key that identifies the signer slot on the smart account. Must match the public key registered in the on-chain signer entry.