Core Framework Encryption Service + Proxy server - with a Cryptonote twist
Find a file
google-labs-jules[bot] 5ab3551baf feat: add performance audit report and benchmarks
This commit introduces a comprehensive performance audit of the Enchantrix codebase, culminating in the creation of the `AUDIT-PERFORMANCE.md` report.

The audit includes:
- An analysis of the `trix` CLI's memory usage and single-threaded nature.
- An evaluation of the project's build and deploy performance.
- The addition of benchmarks for the `trix`, `crypt`, and `enchantrix` packages to establish a performance baseline.

In addition, this commit addresses feedback from the code review by:
- Removing binary artifacts (`.prof`, `.test`) from the commit.
- Updating the `.gitignore` file to prevent these artifacts from being committed in the future.

Co-authored-by: Snider <631881+Snider@users.noreply.github.com>
2026-02-02 01:28:14 +00:00
.dataset Switching machines, ffmpeg + readable byte stream 2022-01-24 07:43:24 +00:00
.github fix: Correctly scope fuzz test in CI workflow 2025-11-04 01:28:24 +00:00
.run Switching machines, ffmpeg + readable byte stream 2022-01-24 07:43:24 +00:00
cmd/trix test: Increase test coverage to over 90% 2025-11-13 20:21:25 +00:00
docs docs: add CLI reference, PGP examples, and detailed sigil list 2025-11-25 00:00:24 +00:00
examples docs: add examples for checksum algorithms, hashing, PGP operations, and .trix container format 2026-01-13 16:10:30 +00:00
pkg feat: add performance audit report and benchmarks 2026-02-02 01:28:14 +00:00
rfcs docs: update future work sections and add encryption sigil details 2026-01-13 17:28:06 +00:00
vault feat: Port crypt library from Core 2025-10-30 17:11:31 +00:00
.gitignore feat: add performance audit report and benchmarks 2026-02-02 01:28:14 +00:00
.goreleaser.yml feat: add trix command-line tool for encoding, decoding, and hashing files 2025-11-03 04:05:32 +00:00
AUDIT-PERFORMANCE.md feat: add performance audit report and benchmarks 2026-02-02 01:28:14 +00:00
CLAUDE.md docs: add CLAUDE.md for project guidelines and testing conventions 2026-01-04 19:54:03 +00:00
DISCLAIMER.md 42 2022-01-23 21:49:14 +00:00
go.mod feat: improve pgp testability and coverage 2025-11-23 19:26:56 +00:00
go.sum feat: Add OpenPGP implementation 2025-11-13 19:02:03 +00:00
go.work feat: Update Go version and workflow 2025-10-30 17:47:40 +00:00
go.work.sum docs: add CLAUDE.md for project guidelines and testing conventions 2026-01-04 19:54:03 +00:00
LICENCE Create LICENCE 2022-01-23 13:07:49 +00:00
mkdocs.yml docs: add CLI reference, PGP examples, and detailed sigil list 2025-11-25 00:00:24 +00:00
README.md docs: add examples for checksum algorithms, hashing, PGP operations, and .trix container format 2026-01-13 16:10:30 +00:00
Taskfile.yml Merge pull request #32 from Snider/feature-add-go-vet 2025-11-04 13:22:18 +00:00

Enchantrix

Go Report Card GoDoc Build Status codecov Release License Go Version

A Go-based encryption and data transformation library designed for secure handling of sensitive data. Enchantrix provides composable transformation pipelines, a flexible binary container format, and defense-in-depth encryption with pre-obfuscation.

Features

  • Sigil Transformation Framework - Composable, reversible data transformations (encoding, compression, hashing)
  • Pre-Obfuscation Layer - Side-channel attack mitigation for AEAD ciphers
  • .trix Container Format - Protocol-agnostic binary format with JSON metadata
  • Multiple Hash Algorithms - SHA-2, SHA-3, BLAKE2, RIPEMD-160, and the custom LTHN algorithm
  • Full PGP Support - Key generation, encryption, decryption, signing, and verification
  • RSA Operations - Key generation, encryption, and decryption
  • CLI Tool - trix command for encoding, decoding, and transformations

Quick Start

Installation

go get github.com/Snider/Enchantrix

Install CLI Tool

go install github.com/Snider/Enchantrix/cmd/trix@latest

Basic Usage

Sigil Transformations

package main

import (
    "fmt"
    "github.com/Snider/Enchantrix/pkg/enchantrix"
)

func main() {
    // Create sigils
    hexSigil, _ := enchantrix.NewSigil("hex")
    base64Sigil, _ := enchantrix.NewSigil("base64")

    // Apply transformations
    data := []byte("Hello, Enchantrix!")
    encoded, _ := enchantrix.Transmute(data, []enchantrix.Sigil{hexSigil, base64Sigil})

    fmt.Printf("Encoded: %s\n", encoded)
}

Hashing

package main

import (
    "fmt"
    "github.com/Snider/Enchantrix/pkg/crypt"
)

func main() {
    service := crypt.NewService()

    hash := service.Hash(crypt.SHA256, "Hello, World!")
    fmt.Printf("SHA-256: %s\n", hash)

    // LTHN quasi-salted hash
    lthnHash := service.Hash(crypt.LTHN, "Hello, World!")
    fmt.Printf("LTHN: %s\n", lthnHash)
}

Encrypted .trix Container

package main

import (
    "fmt"
    "github.com/Snider/Enchantrix/pkg/trix"
)

func main() {
    container := &trix.Trix{
        Header: map[string]interface{}{
            "content_type": "text/plain",
            "created_at":   "2025-01-13T12:00:00Z",
        },
        Payload:  []byte("Secret message"),
        InSigils: []string{"gzip", "base64"},
    }

    // Pack with sigils
    container.Pack()

    // Encode to binary
    encoded, _ := trix.Encode(container, "MYAP", nil)
    fmt.Printf("Container size: %d bytes\n", len(encoded))
}

CLI Examples

# Encode with sigils
echo "Hello, Trix!" | trix encode --output message.trix --magic TRIX base64

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

# Hash data
echo "Hello, World!" | trix hash sha256

# Apply sigil directly
echo "Hello" | trix hex
# Output: 48656c6c6f

Specifications

Enchantrix includes formal RFC-style specifications for its core protocols:

RFC Title Description
RFC-0001 Pre-Obfuscation Layer Side-channel mitigation for AEAD ciphers
RFC-0002 TRIX Container Format Binary container with JSON metadata
RFC-0003 Sigil Framework Composable data transformation interface
RFC-0004 LTHN Hash Quasi-salted deterministic hashing

Available Sigils

Category Sigils
Encoding hex, base64
Compression gzip
Formatting json, json-indent
Transform reverse
Hashing md4, md5, sha1, sha224, sha256, sha384, sha512, sha3-224, sha3-256, sha3-384, sha3-512, sha512-224, sha512-256, ripemd160, blake2s-256, blake2b-256, blake2b-384, blake2b-512

Project Structure

Enchantrix/
├── cmd/trix/           # CLI tool
├── pkg/
│   ├── enchantrix/     # Sigil framework and crypto sigils
│   ├── trix/           # .trix container format
│   └── crypt/          # Cryptographic services (hash, RSA, PGP)
├── rfcs/               # Protocol specifications
├── examples/           # Usage examples
└── docs/               # MkDocs documentation

Documentation

Full documentation is available via MkDocs:

# Install dependencies
pip install mkdocs mkdocs-material

# Serve locally
mkdocs serve -a 127.0.0.1:8000

# Build static site
mkdocs build --strict

Development

Requirements

  • Go 1.25 or later

Running Tests

# Run all tests
go test ./...

# Run with race detection
go test -race ./...

# Run with coverage
go test -coverprofile=coverage.out ./...

Test-Driven Development

This project follows strict TDD methodology. All new functionality must include comprehensive tests.

Releases

Built with GoReleaser:

# Snapshot release (local, no publish)
goreleaser release --snapshot --clean

# Production release (requires Git tag)
goreleaser release --clean

License

See LICENCE for details.