Skip to content

Signing

The SDK signs transaction envelopes through the TransactionSigner interface. It signs normal NOOSChain transactions, not package provenance descriptors. For package descriptor signatures, see Package Provenance.

PemTransactionSigner is provided for Node.js development, operator tools, and browser signing clients:

ts
const signer = new PemTransactionSigner({
  publicKey,
  privateKeyPem,
});

The Node.js entry uses native node:crypto. The browser entry uses libsodium-wrappers, so bundlers that honor the package browser export do not need to polyfill Node's crypto module.

Applications can provide their own signer by implementing:

ts
interface TransactionSigner {
  publicKey: string;
  sign(envelope: TransactionEnvelope): Promise<string>;
}

This allows browser wallets, HSMs, or custody services to sign without exposing private keys to the SDK.

nonce: "auto" is available on transaction builders, but the signer itself does not choose nonces. The builder resolves or receives the nonce, constructs the canonical transaction envelope, and passes that envelope to the signer.

Audience-first NOOSChain documentation.