Skip to main content

Enchantrix

Snider Labs
Go Encryption CLI Cryptography

A modular encryption library with a custom .trix binary format and CLI tool. Data flows through chainable "Sigils" - transforms you can combine to build encryption pipelines. The clever bit: it scrambles your data before it ever reaches the CPU, so platform management systems (Intel ME, AMD PSP) never see cleartext. Think of it as encryption that doesn't trust the hardware.

Features

Sigil Framework

Composable transforms with In(data)/Out(data) interface - chain compression, encoding, hashing, and encryption without exposing cleartext to the CPU

ChaChaPolySigil

XChaCha20-Poly1305 authenticated encryption with pre-obfuscation layer - data is scrambled before hitting Ring-3 platform management

.trix Binary Format

4-byte magic, 1-byte version, 4-byte header length, JSON header, payload - with optional checksums

Cryptographic Services

Full crypto facade: multi-algorithm hashing, Fletcher/Luhn checksums, RSA, and PGP operations

Transmute Chaining

Transmute() function chains multiple sigils together for complex transformation pipelines

Cobra CLI

Full command-line interface for encoding, decoding, direct sigil application, and hash operations

Installation

# Install CLI tool
go install github.com/Snider/Enchantrix/cmd/trix@latest

# Or use as library (requires Go 1.25+)
go get github.com/Snider/Enchantrix

Usage

CLI Operations

# Encode to .trix format with magic bytes
echo "Hello, Trix!" | trix encode --output test.trix --magic TRIX base64

# Decode from .trix
trix decode --input test.trix --output test.txt --magic TRIX base64

# Generate hash
echo "Hello, Trix!" | trix hash sha256

# Direct sigil application
trix sigil compress gzip < data.bin > compressed.bin

Sigil Framework (Library)

import "github.com/Snider/Enchantrix/pkg/enchantrix"

// Chain sigils together
pipeline := enchantrix.Transmute(
    enchantrix.CompressSigil{Algorithm: "gzip"},
    enchantrix.ChaChaPolySigil{Key: key},
    enchantrix.Base64Sigil{},
)

// Transform data through the pipeline
encrypted := pipeline.In(plaintext)
decrypted := pipeline.Out(encrypted)

.trix File Structure

┌─────────────────────────────────────┐
│ Magic Bytes (4 bytes)               │
├─────────────────────────────────────┤
│ Version (1 byte)                    │
├─────────────────────────────────────┤
│ Header Length (4 bytes)             │
├─────────────────────────────────────┤
│ JSON Header (variable)              │
│ - sigils applied                    │
│ - checksums                         │
│ - metadata                          │
├─────────────────────────────────────┤
│ Payload (encrypted data)            │
└─────────────────────────────────────┘

More from Snider Labs

View all projects →

Fancy helping out?

Spotted a bug? Got an idea? We'd love to hear from you.

Read the contributing guide →