https://github.com/sean9999/go-oracle
A package that provides basic high-level cryptographic functions using Curve25519
https://github.com/sean9999/go-oracle
awesome cli cryptography go
Last synced: 5 months ago
JSON representation
A package that provides basic high-level cryptographic functions using Curve25519
- Host: GitHub
- URL: https://github.com/sean9999/go-oracle
- Owner: sean9999
- License: mit
- Created: 2023-12-27T02:08:49.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-11-27T22:26:03.000Z (7 months ago)
- Last Synced: 2025-11-30T12:37:51.218Z (7 months ago)
- Topics: awesome, cli, cryptography, go
- Language: Go
- Homepage:
- Size: 5.23 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Oracle

Oracle is a go library that provides the following cryptographic functions:
- generate key-pairs
- encrypt messages
- decrypt messages
- sign messages
- validate messages
Oracle is the basic object that can perform these functions. It also has the concept of a Peer. An Oracle is to a private key as a Peer is to a public key.
Keys are Curve25519. Messages are encrypted using ChaCha20-Poly1305 AEAD. Perfect forward secrecy is assured by making use of one-time ephemeral keys.
This project is heavily inspired by [age](https://github.com/C2SP/C2SP/blob/main/age.md), especially with respect to cryptographic design. However, I beleive that Oracle provides the following advantages, making it a better choice in some situations:
- Simpler API, doing away with unesseary abstractions
- A simple, standard format for messages (PEM)
- Package first. Oracle is first and foremost a Go package with a sensible API
- Do one thing and do it well. The companion binary `goracle` honours the Linux philosophy by accepting input from stdin and producing output to stdout, unlocking composability.
Oracle also comes with a binary called `pemreader` that reads PEM files.