License System#
Technical Details#
Cryptographic Verification#
- Algorithm: Ed25519 (RFC 8032)
- Implementation:
ed25519-dalekcrate - Verification: Offline (no network required)
- Public key: Embedded in the binary at compile time
License Payload Schema#
{
"schema": "oxo-call-license-v1",
"license_id": "uuid-v4",
"issued_to_org": "Organization Name",
"contact_email": "user@example.com",
"license_type": "academic|commercial",
"scope": "full",
"issued_at": "2024-01-01T00:00:00Z",
"signature": "base64-encoded-ed25519-signature"
}
License Resolution#
oxo-call searches for a license in this order:
- CLI argument:
--license /path/to/license.oxo.json - Environment variable:
OXO_CALL_LICENSE - Platform config directory:
<config_dir>/license.oxo.json - Legacy Unix path:
~/.oxo-call/license.oxo.json
License Gate Enforcement#
The license gate is enforced in src/main.rs before command dispatch. Only these are exempt:
licensesubcommands--help(handled by Clap beforerun())--version(handled by Clap beforerun())
Maintainer Tools#
The crates/license-issuer crate provides offline signing tools:
# Generate a new Ed25519 keypair
cargo run -p license-issuer -- generate-keypair
# Issue a license
cargo run -p license-issuer -- issue \
--org "Example University" \
--type academic \
--output license.oxo.json
Important:
license.rsandlicense-issuer/src/main.rsmust be kept in sync — they share the same payload schema.