Quickstart

Installation

# npm (recommended)
npm i ulda-sign
# or (scoped alias if you publish under your org)
npm i @zeroam/ulda-sign

Note: The library has no mandatory runtime deps. Optional hash functions can be provided via CDN or direct JS functions.

One-minute test (Browser)

<script src="https://cdn.jsdelivr.net/npm/ulda-sign@1.0.6/dist/ulda-sign.cjs.min.js"></script>
<script>
  const signer = new UldaSign({
    fmt : { export : 'hex' },                 // hex | base64 | bytes
    sign: { N: 5, mode: 'X', hash: 'SHA-256', originSize: 256 }
  });

  (async () => {
    const origin0 = await signer.New();       // generation 0
    const sig0    = await signer.sign(origin0);

    const origin1 = await signer.stepUp(origin0);
    const sig1    = await signer.sign(origin1);

    console.log('verifies?', await signer.verify(sig0, sig1)); // → true
  })();
</script>

One-minute test (Node.js, ESM)

import UldaSign from 'ulda-sign';

const signer  = new UldaSign({ sign: { N: 5, mode: 'S' } });
const origin0 = await signer.New();
const sig0    = await signer.sign(origin0);
const origin1 = await signer.stepUp(origin0);
const sig1    = await signer.sign(origin1);
console.log(await signer.verify(sig0, sig1)); // true

Typical config (recommended defaults)

new UldaSign({
  fmt : { export: 'bytes' },                         // bytes | hex | base64
  sign: {
    N: 5,                                            // ladder height (≥ 2)
    mode: 'S',                                       // 'S' or 'X'
    hash: 'SHA-256',                                 // built-ins or custom
    originSize: 256                                  // bits; in X-mode = digest length
  }
});