Skip to main content

Crate reallyme_codec

Crate reallyme_codec 

Source
Expand description

§reallyme-codec

Codec-only utilities used by ReallyMe and DID tooling: base encodings, canonical JSON/CBOR serialization, multicodec lookup, multikey handling, and PEM text armor. SHA-256 is used for content identifiers. This crate does not expose signing, encryption, or key generation.

§Usage examples

§reallyme-codec

reallyme-codec is the recommended Rust entry point for the ReallyMe Codec workspace. It provides identity encoding utilities without pulling in signature, AEAD, KEM, or password-hashing implementations.

Use this crate when a resolver, service, or tool needs key and content encodings but does not need cryptographic operations. The supported surface is algorithm-agnostic: PEM armor, base64/base64url, lowercase hex, multibase, multicodec, multikey, canonical CBOR/DAG-CBOR helpers, and JSON Canonicalization Scheme helpers.

§Install

[dependencies]
reallyme-codec = "0.3.1"

The default feature set enables every primitive codec family. Consumers that need a smaller dependency surface can select only the families they use:

[dependencies]
reallyme-codec = { version = "0.3.1", default-features = false, features = ["base64url", "multikey"] }

§Quick Start

use reallyme_codec::base64url::{base64url_to_bytes, bytes_to_base64url};

fn round_trip() -> Result<(), reallyme_codec::base64url::Base64UrlError> {
    let encoded = bytes_to_base64url(b"hello");
    let decoded = base64url_to_bytes(&encoded)?;
    assert_eq!(decoded, b"hello");
    Ok(())
}

Multikey support treats keys as opaque public bytes plus a multicodec prefix. Algorithm-aware key parsing, signing, verification, and JWK envelopes live in the crypto layer that consumes the decoded bytes.

DTOs that carry byte fields as unpadded base64url strings can enable the serde feature and use reallyme_codec::base64url::serde_bytes or reallyme_codec::base64url::serde_option_bytes.

§Features

  • base64
  • base64url
  • cbor
  • hex
  • jcs
  • multibase
  • multicodec
  • multikey
  • pem
  • serde — base64url serde field adapters
  • operation-contract — generated binary protobuf and ProtoJSON dispatch

serde and operation-contract are opt-in; they are not part of the default feature set. The operation contract enables its required codec families.

§Package Contract

ReallyMe Codec is one cross-language codec contract for identity data. The publishable Rust leaf crates exist for dependency hygiene, implementation modularity, and crates.io dependency resolution. They are support crates released in lockstep with reallyme-codec.

Rust consumers should usually depend on this umbrella crate. Direct use of a leaf crate is appropriate only when the consumer deliberately needs a smaller primitive surface and accepts the same lockstep ReallyMe Codec release line.

§License

Dual-licensed under the MIT License or Apache License, Version 2.0, at your option. See the crate’s LICENSE file for both license texts.

Modules§

base64
Standard (RFC 4648) base64 encode/decode.
base64url
URL-safe (RFC 4648 §5) base64 encode/decode without padding.
cbor
Deterministic generic CBOR, DAG-CBOR, and content-identifier helpers.
hex
Canonical lowercase hexadecimal encode/decode helpers.
jcs
JSON Canonicalization Scheme helpers.
multibase
Multibase self-describing base encodings.
multicodec
Semantic multicodec registry lookup, prefix handling, and metadata. Semantic layer for multicodec lookup operations.
multikey
Multikey encoding/parsing that binds an algorithm to opaque key bytes.
pem
PEM text armor parsing and encoding.