@meproto/codec
v0.0.3
Published
Multibase, multicodec, multikey, base64url, and JSON canonicalization utilities for Me Protocol key encoding, DID parsing, and credential serialization.
Maintainers
Readme
@meproto/codec
Encoding utilities for the Me Protocol, including:
- Multibase (base58btc, base64url)
- Multicodec (key algorithm prefix detection)
- Multikey parsing and verification
- Base64 & Base64URL helpers
- JSON Canonicalization Scheme (JCS) for deterministic JSON representation
- Lightweight type-check and error helpers
These utilities support Me Protocol key encoding, DID parsing, signature preimage creation, and credential serialization.
Installation
pnpm add @meproto/codec
# or
npm install @meproto/codec
# or
yarn add @meproto/codecUsage Examples
Base58btc
import { base58btcEncode, base58btcDecode } from "@meproto/codec";
const bytes = new Uint8Array([1, 2, 3]);
const b58 = base58btcEncode(bytes);
const roundtrip = base58btcDecode(b58);Base64URL
import { bytesToBase64Url, base64UrlToBytes } from "@meproto/codec";
const encoded = bytesToBase64Url(new Uint8Array([9, 9, 9]));
const decoded = base64UrlToBytes(encoded);Multibase Dispatcher
import { bytesToMultibase58btc, multibaseToBytes } from "@meproto/codec";
const mb = bytesToMultibase58btc(new Uint8Array([7, 7, 7]));
const raw = multibaseToBytes(mb);Multicodec Prefix Detection
import { lookupCodecPrefix } from "@meproto/codec";
// Example Ed25519 multicodec prefix: 0xed 0x01
const data = new Uint8Array([0xed, 0x01, /* public key bytes... */]);
const info = lookupCodecPrefix(data);
if (info) {
console.log(info.codecName); // "ed25519-pub"
console.log(info.algorithm); // "Ed25519"
}Multikey Parsing
import { parseMultikey } from "@meproto/codec";
const mk = "z..." // a multibase-encoded multikey
const parsed = parseMultikey(mk);
console.log(parsed.algorithm); // e.g. "Ed25519"
console.log(parsed.publicKey); // raw key bytes
console.log(parsed.codecPrefix); // codec prefixJSON Canonicalization (JCS)
import { canonicalizeJSON } from "@meproto/codec";
const obj = { b: 2, a: 1 };
canonicalizeJSON(obj);
// → {"a":1,"b":2}Deterministic JSON is essential for signature preimages and cryptographic proofs.
License
Apache-2.0 © 2025 ReallyMe LLC
