Files
skills/docs/security-stack/crypto/crypto-utils
2026-05-29 08:20:56 +01:00
..
2026-05-29 08:20:56 +01:00
2026-05-29 08:20:56 +01:00
2026-05-29 08:20:56 +01:00

@suaveplan/crypto-utils - Shared cryptographic utilities: encoding (hex/base64/base64url/base58), byte helpers (concat/xor/i2osp/os2ip), constant-time equality, random bytes, zeroize, Merkle tree helpers, KAT/differential-fuzz test harnesses, PrimitiveId registry, PrimitiveNotImplemented error. Zero runtime crypto dependencies.

Summary

Shared cryptographic utilities consumed internally by all other @suaveplan/crypto-* packages. Provides the low-level primitives that every crypto implementation needs but that belong in one place: multi-alphabet encoding (toHex/fromHex, toBase64/fromBase64, toBase64Url, toBase58/fromBase58); byte helpers (concatBytes, xor, i2osp/os2ip for integer-to-octet-string conversions); constantTimeEqual for timing-safe comparisons; randomBytes with an injectable ByteSource; zeroize for wiping key material; Merkle tree helpers (merkleRoot, merkleProof, verifyMerkleProof); a PrimitiveId registry and PrimitiveNotImplemented sentinel error; and KAT/differential-fuzz harnesses (runVectors, diffFuzz) used in every crypto primitive's test suite. Zero runtime crypto dependencies — this package provides helpers only, not cryptographic algorithms. Application code should generally import from @suaveplan/crypto or @suaveplan/crypto-hash; import from this package only when building a new cryptographic primitive or engine adapter.

Documentation tree

- [concat-bytes](./src/bytes/concat-bytes/concat-bytes.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [concat-bytes](./src/bytes/concat-bytes/concat-bytes.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [concat-bytes](./src/bytes/concat-bytes/concat-bytes.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_- [concat-bytes](./src/bytes/concat-bytes/concat-bytes.md) — _(no submodules)_- [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_ - [i2osp](./src/bytes/i2osp/i2osp.md) — _(no submodules)_- [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_ - [os2ip](./src/bytes/os2ip/os2ip.md) — _(no submodules)_- [xor](./src/bytes/xor/xor.md) — _(no submodules)_ - [xor](./src/bytes/xor/xor.md) — _(no submodules)_- [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_ - [constant-time-equal](./src/constant-time/constant-time-equal/constant-time-equal.md) — _(no submodules)_- [base58](./src/encoding/base58/base58.md) — _(no submodules)_ - [base58](./src/encoding/base58/base58.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_ - [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_ - [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_ - [codes](./src/errors/codes/codes.md) — _(no submodules)_- [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_ - [crypto-utils-error](./src/errors/crypto-utils-error/crypto-utils-error.md) — _(no submodules)_- [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_ - [primitive-not-implemented](./src/errors/primitive-not-implemented/primitive-not-implemented.md) — _(no submodules)_- [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_ - [merkle-proof](./src/merkle/merkle-proof/merkle-proof.md) — _(no submodules)_- [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_ - [merkle-root](./src/merkle/merkle-root/merkle-root.md) — _(no submodules)_- [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_ - [primitive-id](./src/primitive-id/primitive-id.md) — _(no submodules)_- [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_ - [random-bytes](./src/random/random-bytes/random-bytes.md) — _(no submodules)_- [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_ - [diff-fuzz](./src/testing/diff-fuzz/diff-fuzz.md) — _(no submodules)_- [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_ - [dudect](./src/testing/dudect/dudect.md) — _(no submodules)_- [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_ - [run-vectors](./src/testing/run-vectors/run-vectors.md) — _(no submodules)_- [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_ - [zeroize](./src/zeroize/zeroize.md) — _(no submodules)_

Subpath exports

  • @suaveplan/crypto-utils — umbrella barrel.
  • @suaveplan/crypto-utils/encoding — toHex / fromHex, toBase64 / fromBase64, toBase64Url / fromBase64Url, toBase58 / fromBase58.
  • @suaveplan/crypto-utils/bytes — concatBytes, xor, i2osp, os2ip.
  • @suaveplan/crypto-utils/constant-time — constantTimeEqual.
  • @suaveplan/crypto-utils/random — randomBytes, ByteSource, defaultByteSource.
  • @suaveplan/crypto-utils/zeroize — zeroize.
  • @suaveplan/crypto-utils/merkle — merkleRoot, merkleProof, verifyMerkleProof.
  • @suaveplan/crypto-utils/testing — runVectors, diffFuzz.
  • @suaveplan/crypto-utils/primitive-id — PrimitiveId, PRIMITIVE_IDS, guards.
  • @suaveplan/crypto-utils/errors — PrimitiveNotImplemented, CRYPTO_UTILS_CODES, CryptoUtilsError.

Module documentation

See each co-located .md next to its implementation file.