Help us shape the future of Go! Take the 2026 Go Developer Survey

pqpg

module
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2026 License: MIT

README ΒΆ

PQPG (Post-Quantum Privacy Guard)

By utilizing Cloudflare's circl library, the Open Quantum Safe (liboqs) C-FFI engine, Katzenpost's hpqc (Hybrid Post-Quantum Cryptography) engine, and EPFL's kyber abstract algebra engine, PQPG implements the latest FIPS 203, 204, and 205 post-quantum standards alongside an exhaustive, mathematically absolute composite hybrid architecture. It guarantees absolute data confidentiality and metadata anonymity against both traditional and quantum adversaries.

PQPG operates as an Asynchronous Secure Messenger (Double Ratchet), a One-Shot Stateless Messenger, a Personal Post-Quantum Vault, a Trustless Distributed Vault (Feldman VSS), a Zero-Knowledge Time-Lock Engine, a Zero-Knowledge Data Notary (Proof of Breach), and an Interoperable OpenPGP Node, allowing users to wrap local files, directories, and networks inside an impenetrable quantum-resistant armor.


Core Features & Security Guarantees

  • The 120-Suite Universal Hybrid Engines: Enforces a strict, 100% Hybrid-Only rule across distinct cryptographic profiles. By seamlessly bridging Cloudflare's lattice logic (circl), Katzenpost's code-based logic (hpqc), and the hardware-accelerated liboqs C-FFI pipeline with classical ECC (X25519/X448/Ed25519/Ed448), PQPG guarantees that even if a devastating quantum cryptanalytic breakthrough occurs, your payloads cannot fall below classical baseline security.
  • Operational OQS Integration (MPC & Multivariate): Natively binds experimental liboqs algorithmsβ€”such as MPC-in-the-head (MQOM, CROSS) and Multivariate Quadratics (MAYO, OV, SNOVA)β€”into pure Go architectures via strict CGO memory isolation and SHA3-512 dynamic combiners.
  • Cross-Library Paranoia Composites: Dynamically combines entirely different mathematical hardness assumptions from entirely different software libraries. Seamlessly pair a native CGO McEliece-8192 KEM (Code-Based) alongside a Cloudflare Dilithium5 DSA (Lattice-Based) and lock it using a Skein-1024 Wide-Block Cipher.
  • Stateless Encrypted Payloads: Enables secure, one-shot messaging outside of an active Double Ratchet session. Utilizes direct KEM encapsulation passing through a 64-byte SHA3-512 Cryptographic Combiner to dynamically derive maximum-entropy keys for massive symmetric ciphers.
  • Detached Signatures (Stateless & Stateful): Hash massive payloads natively from the hard drive to generate tiny, mathematically isolated .pqc_sig files (using advanced lattice, code-based, or multivariate combinations) or ultra-secure .lms_sig files for failsafe release engineering.
  • Unified Wide-Block Architecture (Pure Skein): Integrates the massive Threefish tweakable block cipher (up to 1024-bit block sizes) with the Skein hash function. This creates an ultra-conservative, unified cryptographic core immune to Grover's algorithm and future classical cryptanalysis, utilizing native Encrypt-then-MAC (EtM) processing for enormous payloads.
  • Misuse-Resistant & Extended-Nonce AEADs: The Ratchet, Stateless, and Vault architectures natively integrate CAESAR-winning Deoxys-II, RFC 8452 AES-GCM-SIV, and extended 24-byte nonce stream ciphers (XChaCha20, XAES-GCM). This mathematically eliminates the risk of nonce-reuse attacks, state-desynchronization leakage, and birthday-bound collisions on massive payloads.
  • Isolated OpenPGP v6 Compatibility Engine: Natively implements draft-ietf-openpgp-pqc utilizing strict composite algorithms (e.g., Kyber768 + X25519, ML-DSA-65 + Ed25519). Features a completely air-gapped architectural compartment to ensure standard Web of Trust interoperability without polluting the bespoke Double Ratchet ecosystem.
  • Stateful Post-Quantum Root Identities (LMS/XMSS): Fully supports FIPS 205 Hash-Based Signatures for highly secure, failsafe software release engineering, powered natively by a statically linked Open Quantum Safe (liboqs) C library.
  • Zero-Knowledge Data Notary (Proof of Breach): Proves possession of massive datasets (e.g., leaked or compromised data) without revealing a single byte of the file itself. Employs a native Groth16 zk-SNARK over the BN254 elliptic curve using a custom MiMC Merkle Tree pipeline.
  • Zero-Knowledge Time-Lock Puzzles (VDF): Encapsulates files inside an RSA-4096 Hidden Order Group. Uses a native Fiat-Shamir Zero-Knowledge Proof (Sigma Protocol) to mathematically guarantee puzzle validity, forcing sequential CPU delays (Dead Man's Switch) without exposing solvers to forged puzzles.
  • Trustless Distributed Vaults: Implements Feldman’s Verifiable Secret Sharing (VSS) over the Ed25519 scalar field. Generates M-of-N Shamir shares bound to ECC commitments, mathematically proving share validity and preventing malicious dealers from destroying vaults.
  • Cryptographic Memory Hygiene & Rainbow Table Immunity: Secures local keyrings using dynamic Argon2id salt rotation to neutralize pre-computed Rainbow Tables. Guarantees that all highly sensitive private key byte-slices (and C-FFI allocated buffers) are explicitly shredded from RAM immediately after cryptographic operations conclude.
  • Perfect Forward Secrecy (PFS): Implements a Post-Quantum Double Ratchet. The state machine seamlessly handles out-of-order packets, dropping "dangling" keys after a strict 1000-message boundary to prevent RAM/State Exhaustion attacks.

The Post-Quantum Double Ratchet Engine

PQPG manages Perfect Forward Secrecy and Post-Compromise Security using a highly robust "Separation of Concerns" architecture. The engine is divided into three distinct layers to prevent database corruption during asynchronous transfers:

  1. The Brain (double_ratchet.go): A strictly stateless, functional mathematical engine. It knows nothing about the network or databases; it simply ingests byte arrays, executes Keccak KDF sponge derivations (now securely outputting 512-bit pure entropy for massive symmetric ciphers), and outputs new cryptographic chain keys.
  2. The Memory (session.go / BoltDB): The ACID-compliant, encrypted storage vault. It safely stores the RatchetState, tracks historical public keys to defeat the Implicit Rejection (FO Transform) Trap, and runs the HMAC-SHA3 Anti-Replay Cache.
  3. The Conductor (stream.go): The orchestrator layer. It pulls state from BoltDB, asks the Brain to spin the Ratchets in RAM, and utilizes Deferred Commits. The database state is only updated and saved to the hard drive if the AEAD cryptographic signature perfectly authenticates the payload, rendering PQPG virtually immune to session corruption from malformed files.

Supported Cryptographic Suite

Category Supported Algorithms
KEM (Key Encapsulation) ML-KEM-768/1024, Kyber768/1024, FrodoKEM-640, HQC-128/192/256, mceliece348864 -> mceliece8192128f, sntrup761, BIKE, CROSS, SNOVA
DSA (Stateless Signatures) ML-DSA-65/87, Dilithium2/3/5, SLH-DSA (Pure & Pre-hashed), Falcon-padded-512/1024, MAYO, OV, MQOM2
Stateful DSA (FIPS 205) LMS_H5 -> LMS_H25, XMSS, XMSSMT (Via natively linked liboqs)
Dynamic Combiner Hybrids Engine dynamically pairs any lattice, code-based, hash-based, or multivariate algorithm with X25519, X448, Ed25519, or Ed448 via SHA3-512 blenders
AEAD (Symmetric Ciphers) AES-256-GCM, ChaCha20-Poly1305, XAES-256-GCM, XChaCha20-Poly1305, AES-256-GCM-SIV, Deoxys-II-256-128, Ascon-128/128a/80pq, Threefish-256/512/1024-EtM, Camellia-256-EtM, Serpent-256-EtM
XOF / Hashing SHAKE128/256, SHA3-256/384/512, SHA-512, KangarooTwelve, Skein-256/512/1024, BLAKE3-512
Zero-Knowledge Primitives Groth16 (zk-SNARK), BN254 Pairing-Friendly Curve, MiMC (Sponge-Hash)

Architecture Layout

The codebase strictly adheres to SOLID principles, utilizing Adapter Patterns and dynamic Factory Registries to isolate cryptographic mathematics from network framing, anti-replay state validation, and identity management.

pqc-messenger/
β”œβ”€β”€ cmd/
β”‚   └── messenger/
β”‚       β”œβ”€β”€ main.go               # Top-level Subsystem Routing (Core, OQS, OpenPGP)
β”‚       β”œβ”€β”€ archive.go            # On-the-fly Directory Tarball & Compression Engine
β”‚       β”œβ”€β”€ notary-handlers.go    # CLI orchestration for ZK Data Notary (Prove/Verify)
β”‚       β”œβ”€β”€ openpgp-handlers.go   # CLI orchestration for the isolated OpenPGP v6 compartment
β”‚       β”œβ”€β”€ identity-handlers.go  # Orchestrates the Core HPQC Hybrid UI Selection
β”‚       β”œβ”€β”€ oqs-handlers.go       # Orchestrates the liboqs 120-suite Hybrid UI Selection
β”‚       └── *-handlers.go
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ crypto/
β”‚   β”‚   β”œβ”€β”€ registry.go           # Dynamic Namespace Router (Hpqc-, Oqs-, Hybrid-)
β”‚   β”‚   β”œβ”€β”€ hybrid-kem.go         # PQPG SHA3-512 KEM Cryptographic Combiner
β”‚   β”‚   β”œβ”€β”€ hybrid-dsa.go         # PQPG Independent Proof DSA Combiner
β”‚   β”‚   β”œβ”€β”€ hpqc-adapter.go       # Abstract Interface Adapter for Katzenpost HPQC
β”‚   β”‚   β”œβ”€β”€ oqs-adapter.go        # Safe C-FFI Interface Adapter & Memory Manager for liboqs
β”‚   β”‚   └── double-ratchet.go     # Stateless KDF math for the PFS Ratchet
β”‚   β”œβ”€β”€ hpqc/                     # Native Katzenpost engine (Code-based/NTRU Lattices)
β”‚   β”œβ”€β”€ hpq/                      # Scorched-Earth localized HPQ dependency
β”‚   β”œβ”€β”€ xx-network-crypto/        # Scorched-Earth localized upstream dependency
β”‚   β”œβ”€β”€ xx-network-primitives/    # Scorched-Earth localized upstream dependency
β”‚   β”œβ”€β”€ elixxir-crypto/           # Scorched-Earth localized upstream dependency
β”‚   β”œβ”€β”€ deoxysii/                 # CAESAR-Winning Misuse-Resistant AEAD (MRAE)
β”‚   β”œβ”€β”€ aesgcmsiv-noasm/          # RFC 8452 AES-GCM-SIV (Pure Go / Cross-Platform)
β”‚   β”œβ”€β”€ aesgcmsiv-asm/            # AES-SIV-CMAC (Deterministic Hardware Accelerated)
β”‚   β”œβ”€β”€ threefish/                # Tweakable Wide-Block Cipher Engine (256/512/1024)
β”‚   β”œβ”€β”€ skein/                    # UBI Chaining Mode Hashing & XOF Engine
β”‚   β”œβ”€β”€ blake3/                   # Native BLAKE3 Implementation
β”‚   β”œβ”€β”€ oqs/                      # Hardcoded Open Quantum Safe C-FFI Wrappers
β”‚   β”œβ”€β”€ openpgp_pqc/              # draft-ietf-openpgp-pqc wrappers for ProtonMail/gopenpgp v3
β”‚   β”œβ”€β”€ identity/
β”‚   β”‚   β”œβ”€β”€ keyring.go            # PKI management and disk I/O
β”‚   β”‚   β”œβ”€β”€ rollback.go           # Hardware-safe atomic AES-GCM Canary state guard
β”‚   β”‚   └── session.go            # AES-GCM Encrypted BoltDB (Blind Indexes & Anti-Replay)
β”‚   β”œβ”€β”€ vdf/
β”‚   β”‚   └── rsa_vdf.go            # Native RSA Subgroup math & Fiat-Shamir ZKP
β”‚   β”œβ”€β”€ zkp/
β”‚   β”‚   └── engine.go             # Groth16 Setup, Prove, and Verify mathematical interface
β”‚   └── packet/
β”‚       β”œβ”€β”€ stream.go             # Double Ratchet Sealed Sender Envelopes (Chunked)
β”‚       └── stateless.go          # One-Shot Payloads & Massive Entropy KEM Extraction
β”œβ”€β”€ go.mod
└── go.sum


Installation & Build Guide

Prerequisites
  • Go 1.25.10 or higher.
  • CMake, Ninja, and a C Compiler (gcc/clang) for building the static OQS subsystem.
  • Active internet connection to fetch Cloudflare circl, EPFL kyber/v4, ConsenSys gnark, and ProtonMail gopenpgp.
  • (Note: hpqc and its upstream dependencies are hard-forked and strictly localized in the internal/ directory to permanently protect against upstream GitLab/GitHub repository deletions and dependency poisoning).
Phase 1: Build the Static liboqs C-Engine

To utilize FIPS 205 Stateful Signatures and experimental OQS KEMs without trapping users in shared-library (.so) dependency hell, PQPG explicitly requires compiling liboqs as a static archive (.a) with OpenSSL disabled. This guarantees maximum cross-platform binary portability.

cd pqpg
# Clone the upstream Open Quantum Safe repository
git clone -b main https://github.com/open-quantum-safe/liboqs.git
cd liboqs

# Prepare the build directory
mkdir build && cd build

# Configure CMake for a Static Archive WITHOUT OpenSSL (AMD64)
cmake -G Ninja \
  -DCMAKE_INSTALL_PREFIX=$(pwd)/../oqs_static_env \
  -DBUILD_SHARED_LIBS=OFF \
  -DOQS_USE_OPENSSL=OFF \
  -DOQS_ENABLE_SIG_STFL_LMS=ON \
  -DOQS_ENABLE_SIG_STFL_XMSS=ON \
  -DOQS_HAZARDOUS_EXPERIMENTAL_ENABLE_SIG_STFL_KEY_SIG_GEN=ON \
  ..
  
# Configure CMake for a Static Archive WITHOUT OpenSSL (ARM64)
cmake -G Ninja \
  -DCMAKE_INSTALL_PREFIX=$(pwd)/../oqs_static_env \
  -DBUILD_SHARED_LIBS=OFF \
  -DOQS_USE_OPENSSL=OFF \
  -DOQS_ENABLE_SIG_STFL_LMS=ON \
  -DOQS_ENABLE_SIG_STFL_XMSS=ON \
  -DOQS_HAZARDOUS_EXPERIMENTAL_ENABLE_SIG_STFL_KEY_SIG_GEN=ON \
  -DCMAKE_TOOLCHAIN_FILE=../.CMake/toolchain_arm64.cmake \
  ..

# Compile and output the static archive to the isolated environment folder
ninja
ninja install
cd ../..

Phase 2: Build the PQPG Executable

Once the oqs_static_env is successfully built, go to the internal/oqs and change the cgo LDFLAGS and cgo CFLAGS to the corresponding liboqs.a library path inside cfuncs.go and oqs.go.


# ARM64
CGO_ENABLED=1 \
CC=aarch64-linux-gnu-gcc \
GOOS=linux \
GOARCH=arm64 \
go build -mod=vendor -compiler=gc -o pqpg-linux-arm64 ./cmd/messenger

#AMD64
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64 \
go build -mod=vendor  -compiler=gc  -o pqpg-linux-amd64 ./cmd/messenger


πŸ“– Usage Manual

Launch the interactive engine by running ./pqpg in your terminal. You will be prompted to select one of three routing modules:

  • Option 1: Core Crypto Engine: The native, pure-Go/Assembly ecosystem containing the advanced Zero-Knowledge interfaces (Multi-platform).
  • Option 2: OQS Extension Engine: The hardware-accelerated liboqs C-FFI pipeline exclusively driving messaging, vaults, and detached signatures (Restricted to Linux/AMD64).
  • Option 3: OpenPGP PQC Engine: The interoperable draft-ietf-openpgp-pqc v6 compatibility node.
Application Workflows

Depending on whether you boot into the Core Engine or the OQS Extension Engine, PQPG routes you through the unified network layers.

1. Establish an Identity (PKI Setup)

Generate a cryptographic profile. The Core Engine offers a 120-suite selection built on CIRCL and HPQC logic, while the OQS Engine unlocks an exclusive 120-suite hardware-accelerated profiler featuring experimental algorithms like MAYO, OV, SNOVA, MQOM2, and CROSS.

2. Asynchronous Messaging (Double Ratchet)

Securely send a payload using the Perfect Forward Secrecy protocol. You can target either a single file or an entire directory (which is automatically bundled into a maximum-compression .tar.gz archive on the fly before encryption).

3. Stateless Messaging (One-Shot Payloads)

Encrypt data for a recipient outside of an active Ratchet session. Using the stateless.go architecture, the engine executes direct KEM encapsulation and derives the payload key via a strict 64-byte SHA3-512 KDF, ensuring maximum entropy for wide-block ciphers.

4. Personal Post-Quantum Vault

Wrap a local file or directory inside a continuous stream-encrypted envelope deterministically bound to your own identity for secure cold storage.

5. Detached Signatures (Stateless)

Hash a massive file natively from the hard drive to generate a tiny, mathematically isolated .pqc_sig file using advanced lattice, code-based, or multivariate quadratic signature combinations.

6. Release Engineering (FIPS 205 Stateful Signatures)

Generate an ultra-secure .lms_sig or .xmss_sig file specifically designed for software release engineering. The engine synchronously locks the OS, executes the hash-tree traversal, advances the hardware-safe Anti-Rollback AES-GCM canary, and outputs the signature.

Advanced Capabilities (Exclusive to Core Engine)

The following computational features rely on the gnark and kyber abstract algebra engines and are accessible strictly through the Option 1: Core Crypto Engine menu.

7. M-of-N Shared Vault (Feldman VSS Threshold)

Distribute a vault across multiple stakeholders. The engine plots a secret polynomial over the Ed25519 scalar field and outputs N shares. Upon restoration, the engine mathematically proves share authenticity before executing Lagrange interpolation to restore the data.

8. Zero-Knowledge Time-Lock Puzzles (Dead Man's Switch)

Lock a file or directory inside an RSA-4096 Verifiable Delay Function (VDF). The engine generates a sequential CPU puzzle and a native Fiat-Shamir Zero-Knowledge Proof, outputting a .timelock artifact. Unlocking a puzzle forces un-parallelizable sequential CPU operations to derive the AES decryption key.

9. Zero-Knowledge Data Notary (Proof of Breach)

Act as a Prover and generate a zk-SNARK proving possession of a targeted leak file or database. The engine processes the local file chunk-by-chunk inside a field-compliant MiMC Merkle tree and exports a standalone .zkp proof envelope. Auditors can verify the proof by checking the R1CS constraints against a SHA3-256 Verifying Key fingerprint.


Acknowledgements & Upstream Projects

Cloudflare CIRCL The core lattice and ECC mathematics of PQPG are powered by CIRCL (Cloudflare Interoperable, Reusable Cryptographic Library), an advanced open-source engine bringing state-of-the-art post-quantum primitives to Go.

Katzenpost HPQC This library contains highly optimized, native CGO/Assembly Golang implementations of leading quantum-resistant Code-based primitives (McEliece, HQC) and NTRU lattices (SNTRUP). Available at: https://github.com/katzenpost/hpqc

Open Quantum Safe (liboqs) The C-FFI pipeline providing hardware-accelerated Stateful Hash-Based Signatures (LMS/XMSS) and experimental MPC-in-the-head/Multivariate algorithms by statically linking liboqs, the premier C library for prototyping quantum-resistant cryptography.

EPFL Advanced Cryptography Group (Kyber) Threshold cryptography and Feldman VSS operations rely on the go.dedis.ch/kyber abstract algebra suite, providing the vital Elliptic Curve scalar math required for Zero-Knowledge and verifiable group commitments.

ConsenSys gnark The zero-knowledge SNARK ecosystem, circuit compilation, and R1CS Groth16 proving/verifying mechanisms are powered entirely by the high-performance gnark framework.

Oasis Protocol & Deoxys-II The CAESAR competition-winning Deoxys-II algorithm is powered by the highly audited implementations developed for the Oasis network core, bringing Misuse-Resistant Authenticated Encryption (MRAE) to PQPG.

MinIO (secure-io) & Fernandezvara AES-SIV-CMAC and RFC 8452 AES-GCM-SIV implementations utilize the high-performance logic provided by the MinIO cryptography team and the fernandezvara BoringSSL Go ports.

Skein & Threefish The wide-block cryptographic primitives are based on the Skein hash function family designed by Bruce Schneier, Niels Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, and Jesse Walker. Implemented via Go adaptations.

ProtonMail (gopenpgp & go-crypto) The OpenPGP compatibility compartment is powered by ProtonMail's highly audited gopenpgp (v3) library and their fork of the Go crypto library, providing strict compliance with the draft-ietf-openpgp-pqc specifications.

Multiple packages from github.com/aead developed by Andreas Auernhammer The Serpent block cipher, Ascon, and related high-performance symmetric packages.

go-xmssmt (by bwesterb) Go implementation of the stateful hash-based signature-scheme XMSS(MT) described in RFC 8391 (XMSS: Extended Hash-Based Signatures) and NIST SP 800-208.

lms-go (by Trail of Bits) Go implementation of Leighton-Micali stateful Hash-Based Signatures (RFC 8554).

Elixxir & xx network Primitives and cryptography libraries (git.xx.network) providing upstream dependency support for HPQC sub-modules.


License & Third-Party Code

CIRCL License This software relies on the Cloudflare CIRCL library which is released under the BSD-3 Clause License. Faz-Hernandez, A. and Kwiatkowski, K. (2019). Introducing CIRCL: An Advanced Cryptographic Library. Cloudflare. Available at https://github.com/cloudflare/circl. v1.6.3 Accessed May, 2026.

Copyright (c) 2019, Cloudflare Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Directories ΒΆ

Path Synopsis
cmd
messenger command
internal
aesgcmsiv-asm
Package siv implements the Synthetic Initialization Vector (SIV) authenticated encryption scheme specified in RFC 5297.
Package siv implements the Synthetic Initialization Vector (SIV) authenticated encryption scheme specified in RFC 5297.
aesgcmsiv-noasm
Package aesgcmsiv implements AES-GCM-SIV as specified in RFC 8452.
Package aesgcmsiv implements AES-GCM-SIV as specified in RFC 8452.
blake3
Package blake3 provides an SSE4.1/AVX2 accelerated BLAKE3 implementation.
Package blake3 provides an SSE4.1/AVX2 accelerated BLAKE3 implementation.
crypto
Package crypto implements the [XAES-256-GCM] extended-nonce AEAD, an efficient combination of a NIST SP 800-108r1 KDF and AES-256-GCM.
Package crypto implements the [XAES-256-GCM] extended-nonce AEAD, an efficient combination of a NIST SP 800-108r1 KDF and AES-256-GCM.
deoxysii
Package deoxysii implements the Deoxys-II-256-128 MRAE algorithm.
Package deoxysii implements the Deoxys-II-256-128 MRAE algorithm.
elixxir-crypto/authorize
Package authorize contains logic for signing and verifying a given timestamp and for signing & verifying certificate request info.
Package authorize contains logic for signing and verifying a given timestamp and for signing & verifying certificate request info.
elixxir-crypto/broadcast/escape
Package escape includes helpers for escaping and unescaping strings.
Package escape includes helpers for escaping and unescaping strings.
elixxir-crypto/cmix
Any extensions or modifications to the core messaging functionality should be done here, except for conversion of the encrypted message types to the comms messages used for transmitting data.
Any extensions or modifications to the core messaging functionality should be done here, except for conversion of the encrypted message types to the comms messages used for transmitting data.
elixxir-crypto/cyclic
Package cyclic wraps our large.Int structure.
Package cyclic wraps our large.Int structure.
elixxir-crypto/diffieHellman
Package diffieHellman implements a Diffie-Hellman key exchange.
Package diffieHellman implements a Diffie-Hellman key exchange.
elixxir-crypto/e2e
Packagee 2e contains functions used in the end-to-end encryption algorithm, including the end-to-end key rotation.
Packagee 2e contains functions used in the end-to-end encryption algorithm, including the end-to-end key rotation.
elixxir-crypto/fastRNG
Package fastRNG is an implementation of the Fortuna construction as specified by Ferguson, Schneier and Kohno in 'Cryptography Engineering: Design Principles and Practical Applications' Link: https://www.schneier.com/academic/paperfiles/fortuna.pdf
Package fastRNG is an implementation of the Fortuna construction as specified by Ferguson, Schneier and Kohno in 'Cryptography Engineering: Design Principles and Practical Applications' Link: https://www.schneier.com/academic/paperfiles/fortuna.pdf
elixxir-crypto/hash
Package hash includes a general-purpose hashing algorithm, blake2b, that should be suitable for most of our needs.
Package hash includes a general-purpose hashing algorithm, blake2b, that should be suitable for most of our needs.
elixxir-crypto/nike/ecdh
Package ecdh provide an implementation of the Nike interface using X25519.
Package ecdh provide an implementation of the Nike interface using X25519.
elixxir-crypto/partnerships/crust
Package crust will contain cryptographic functions needed for communication between the xx messenger and Crust.
Package crust will contain cryptographic functions needed for communication between the xx messenger and Crust.
elixxir-crypto/registration
Package registration contains functions for generating data for registration.
Package registration contains functions for generating data for registration.
elixxir-crypto/rsa
Package rsa implements a wrapper on Go's crypto/rsa into a more sane object driven approach, while adding PEM and wire marshaling and unmarshalling formats as well as a Multicast OAEP feature, which encrypts with the private key and encrypts with the public key.
Package rsa implements a wrapper on Go's crypto/rsa into a more sane object driven approach, while adding PEM and wire marshaling and unmarshalling formats as well as a Multicast OAEP feature, which encrypts with the private key and encrypts with the public key.
elixxir-crypto/shuffle
Package shuffle has a Fisher-Yates shuffle algorithm that we use for mixing the slots in our Permute phases.
Package shuffle has a Fisher-Yates shuffle algorithm that we use for mixing the slots in our Permute phases.
hpqc/bacap
Package bacap provides the Blinded Cryptographic Capability system (BACAP).
Package bacap provides the Blinded Cryptographic Capability system (BACAP).
hpqc/circl/abe
Package abe provides Attribute-based data encryption algorithms.
Package abe provides Attribute-based data encryption algorithms.
hpqc/circl/abe/cpabe
Package cpabe provides Ciphertext-Policy Attribute-based Encryption algorithms.
Package cpabe provides Ciphertext-Policy Attribute-based Encryption algorithms.
hpqc/circl/abe/cpabe/tkn20
Package tkn20 implements a ciphertext-policy ABE by Tomida, Kawahara, Nishimaki.
Package tkn20 implements a ciphertext-policy ABE by Tomida, Kawahara, Nishimaki.
hpqc/circl/blindsign
Package blindsign provides blind signature schemes.
Package blindsign provides blind signature schemes.
hpqc/circl/blindsign/blindrsa
Package blindrsa implements the RSA Blind Signature Protocol as defined in [RFC9474].
Package blindrsa implements the RSA Blind Signature Protocol as defined in [RFC9474].
hpqc/circl/blindsign/blindrsa/partiallyblindrsa
Package partiallyblindrsa implements a partially blind RSA protocol.
Package partiallyblindrsa implements a partially blind RSA protocol.
hpqc/circl/cipher
Package cipher provides data encryption algorithms.
Package cipher provides data encryption algorithms.
hpqc/circl/cipher/ascon
Package ascon provides ASCON family of light-weight AEAD ciphers.
Package ascon provides ASCON family of light-weight AEAD ciphers.
hpqc/circl/dh
Package dh provides variety of Diffie-Hellman key exchange methods.
Package dh provides variety of Diffie-Hellman key exchange methods.
hpqc/circl/dh/csidh
Package csidh implements commutative supersingular isogeny-based Diffie-Hellman key exchange algorithm (CSIDH) resulting from the group action.
Package csidh implements commutative supersingular isogeny-based Diffie-Hellman key exchange algorithm (CSIDH) resulting from the group action.
hpqc/circl/dh/curve4q
Package curve4q implements Diffie-Hellman operations using the FourQ curve at the 128-bit security level.
Package curve4q implements Diffie-Hellman operations using the FourQ curve at the 128-bit security level.
hpqc/circl/dh/sidh
Package sidh is deprecated, it provides SIDH and SIKE key encapsulation mechanisms.
Package sidh is deprecated, it provides SIDH and SIKE key encapsulation mechanisms.
hpqc/circl/dh/sidh/internal/common
Package common provides types, variables, constants and functions commonly used in SIDH or SIKE.
Package common provides types, variables, constants and functions commonly used in SIDH or SIKE.
hpqc/circl/dh/sidh/internal/p503
Package p503 provides implementation of field arithmetic used in SIDH and SIKE.
Package p503 provides implementation of field arithmetic used in SIDH and SIKE.
hpqc/circl/dh/sidh/internal/p751
Package p751 provides implementation of field arithmetic used in SIDH and SIKE.
Package p751 provides implementation of field arithmetic used in SIDH and SIKE.
hpqc/circl/dh/x25519
Package x25519 provides Diffie-Hellman functions as specified in RFC-7748.
Package x25519 provides Diffie-Hellman functions as specified in RFC-7748.
hpqc/circl/dh/x448
Package x448 provides Diffie-Hellman functions as specified in RFC-7748.
Package x448 provides Diffie-Hellman functions as specified in RFC-7748.
hpqc/circl/ecc
Package ecc provides implementation of arithmetic on some elliptic curves.
Package ecc provides implementation of arithmetic on some elliptic curves.
hpqc/circl/ecc/bls12381
Package bls12381 provides bilinear pairings using the BLS12-381 curve.
Package bls12381 provides bilinear pairings using the BLS12-381 curve.
hpqc/circl/ecc/bls12381/ff
Package ff provides finite fields of characteristic P381.
Package ff provides finite fields of characteristic P381.
hpqc/circl/ecc/fourq
Package fourq provides elliptic curve operations over FourQ curve.
Package fourq provides elliptic curve operations over FourQ curve.
hpqc/circl/ecc/goldilocks
Package goldilocks provides elliptic curve operations over the goldilocks curve.
Package goldilocks provides elliptic curve operations over the goldilocks curve.
hpqc/circl/ecc/p384
Package p384 provides optimized elliptic curve operations on the P-384 curve.
Package p384 provides optimized elliptic curve operations on the P-384 curve.
hpqc/circl/expander
Package expander generates arbitrary bytes from an XOF or Hash function.
Package expander generates arbitrary bytes from an XOF or Hash function.
hpqc/circl/group
Package group provides prime-order groups based on elliptic curves.
Package group provides prime-order groups based on elliptic curves.
hpqc/circl/hpke
Package hpke implements the Hybrid Public Key Encryption (HPKE) standard specified by draft-irtf-cfrg-hpke-07.
Package hpke implements the Hybrid Public Key Encryption (HPKE) standard specified by draft-irtf-cfrg-hpke-07.
hpqc/circl/internal/nist
Package nist implements helpers to generate NIST's Known Answer Tests (KATs).
Package nist implements helpers to generate NIST's Known Answer Tests (KATs).
hpqc/circl/internal/sha3
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
hpqc/circl/kem
Package kem provides a unified interface for KEM schemes.
Package kem provides a unified interface for KEM schemes.
hpqc/circl/kem/frodo
Package frodo provides the key encapsulation mechanism FrodoKEM.
Package frodo provides the key encapsulation mechanism FrodoKEM.
hpqc/circl/kem/frodo/frodo640shake
Package frodo640shake implements the variant FrodoKEM-640 with SHAKE.
Package frodo640shake implements the variant FrodoKEM-640 with SHAKE.
hpqc/circl/kem/hybrid
Package hybrid defines several hybrid classical/quantum KEMs for use in TLS.
Package hybrid defines several hybrid classical/quantum KEMs for use in TLS.
hpqc/circl/kem/kyber
Package kyber implements the CRYSTALS-Kyber.CCAKEM IND-CCA2 secure key encapsulation mechanism (KEM) as submitted to round 3 of the NIST PQC competition and described in
Package kyber implements the CRYSTALS-Kyber.CCAKEM IND-CCA2 secure key encapsulation mechanism (KEM) as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/kem/kyber/kyber1024
Package kyber1024 implements the IND-CCA2 secure key encapsulation mechanism Kyber1024.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
Package kyber1024 implements the IND-CCA2 secure key encapsulation mechanism Kyber1024.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/kem/kyber/kyber512
Package kyber512 implements the IND-CCA2 secure key encapsulation mechanism Kyber512.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
Package kyber512 implements the IND-CCA2 secure key encapsulation mechanism Kyber512.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/kem/kyber/kyber768
Package kyber768 implements the IND-CCA2 secure key encapsulation mechanism Kyber768.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
Package kyber768 implements the IND-CCA2 secure key encapsulation mechanism Kyber768.CCAKEM as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece
Package mceliece implements the Classic McEliece cryptosystem.
Package mceliece implements the Classic McEliece cryptosystem.
hpqc/circl/kem/mceliece/mceliece348864
Package mceliece348864 implements the IND-CCA2 secure key encapsulation mechanism mceliece348864 as submitted to round 4 of the NIST PQC competition and described in
Package mceliece348864 implements the IND-CCA2 secure key encapsulation mechanism mceliece348864 as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece348864f
Package mceliece348864f implements the IND-CCA2 secure key encapsulation mechanism mceliece348864f as submitted to round 4 of the NIST PQC competition and described in
Package mceliece348864f implements the IND-CCA2 secure key encapsulation mechanism mceliece348864f as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece460896
Package mceliece460896 implements the IND-CCA2 secure key encapsulation mechanism mceliece460896 as submitted to round 4 of the NIST PQC competition and described in
Package mceliece460896 implements the IND-CCA2 secure key encapsulation mechanism mceliece460896 as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece460896f
Package mceliece460896f implements the IND-CCA2 secure key encapsulation mechanism mceliece460896f as submitted to round 4 of the NIST PQC competition and described in
Package mceliece460896f implements the IND-CCA2 secure key encapsulation mechanism mceliece460896f as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece6688128
Package mceliece6688128 implements the IND-CCA2 secure key encapsulation mechanism mceliece6688128 as submitted to round 4 of the NIST PQC competition and described in
Package mceliece6688128 implements the IND-CCA2 secure key encapsulation mechanism mceliece6688128 as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece6688128f
Package mceliece6688128f implements the IND-CCA2 secure key encapsulation mechanism mceliece6688128f as submitted to round 4 of the NIST PQC competition and described in
Package mceliece6688128f implements the IND-CCA2 secure key encapsulation mechanism mceliece6688128f as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece6960119
Package mceliece6960119 implements the IND-CCA2 secure key encapsulation mechanism mceliece6960119 as submitted to round 4 of the NIST PQC competition and described in
Package mceliece6960119 implements the IND-CCA2 secure key encapsulation mechanism mceliece6960119 as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece6960119f
Package mceliece6960119f implements the IND-CCA2 secure key encapsulation mechanism mceliece6960119f as submitted to round 4 of the NIST PQC competition and described in
Package mceliece6960119f implements the IND-CCA2 secure key encapsulation mechanism mceliece6960119f as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece8192128
Package mceliece8192128 implements the IND-CCA2 secure key encapsulation mechanism mceliece8192128 as submitted to round 4 of the NIST PQC competition and described in
Package mceliece8192128 implements the IND-CCA2 secure key encapsulation mechanism mceliece8192128 as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mceliece/mceliece8192128f
Package mceliece8192128f implements the IND-CCA2 secure key encapsulation mechanism mceliece8192128f as submitted to round 4 of the NIST PQC competition and described in
Package mceliece8192128f implements the IND-CCA2 secure key encapsulation mechanism mceliece8192128f as submitted to round 4 of the NIST PQC competition and described in
hpqc/circl/kem/mlkem
Package mlkem implements IND-CCA2 secure ML-KEM key encapsulation mechanism (KEM) as defined in FIPS 203.
Package mlkem implements IND-CCA2 secure ML-KEM key encapsulation mechanism (KEM) as defined in FIPS 203.
hpqc/circl/kem/mlkem/mlkem1024
Package mlkem1024 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-1024 as defined in FIPS203.
Package mlkem1024 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-1024 as defined in FIPS203.
hpqc/circl/kem/mlkem/mlkem512
Package mlkem512 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-512 as defined in FIPS203.
Package mlkem512 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-512 as defined in FIPS203.
hpqc/circl/kem/mlkem/mlkem768
Package mlkem768 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-768 as defined in FIPS203.
Package mlkem768 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-768 as defined in FIPS203.
hpqc/circl/kem/schemes
Package schemes contains a register of KEM schemes.
Package schemes contains a register of KEM schemes.
hpqc/circl/kem/sike
Package sike is deprecated, it contains the SIKE key encapsulation mechanism.
Package sike is deprecated, it contains the SIKE key encapsulation mechanism.
hpqc/circl/kem/sike/sikep434
Package sikep434 is deprecated, it implements the key encapsulation mechanism SIKEp434.
Package sikep434 is deprecated, it implements the key encapsulation mechanism SIKEp434.
hpqc/circl/kem/sike/sikep503
Package sikep503 is deprecated, it implements the key encapsulation mechanism SIKEp503.
Package sikep503 is deprecated, it implements the key encapsulation mechanism SIKEp503.
hpqc/circl/kem/sike/sikep751
Package sikep751 is deprecated, it implements the key encapsulation mechanism SIKEp751.
Package sikep751 is deprecated, it implements the key encapsulation mechanism SIKEp751.
hpqc/circl/kem/xwing
Package xwing implements the X-Wing PQ/T hybrid KEM
Package xwing implements the X-Wing PQ/T hybrid KEM
hpqc/circl/math
Package math provides some utility functions for big integers.
Package math provides some utility functions for big integers.
hpqc/circl/math/fp25519
Package fp25519 provides prime field arithmetic over GF(2^255-19).
Package fp25519 provides prime field arithmetic over GF(2^255-19).
hpqc/circl/math/fp448
Package fp448 provides prime field arithmetic over GF(2^448-2^224-1).
Package fp448 provides prime field arithmetic over GF(2^448-2^224-1).
hpqc/circl/math/gf2e12
Package gf2e12 provides finite field arithmetic over GF(2^12).
Package gf2e12 provides finite field arithmetic over GF(2^12).
hpqc/circl/math/gf2e13
Package gf2e13 provides finite field arithmetic over GF(2^13).
Package gf2e13 provides finite field arithmetic over GF(2^13).
hpqc/circl/math/mlsbset
Package mlsbset provides a constant-time exponentiation method with precomputation.
Package mlsbset provides a constant-time exponentiation method with precomputation.
hpqc/circl/math/polynomial
Package polynomial provides representations of polynomials over the scalars of a group.
Package polynomial provides representations of polynomials over the scalars of a group.
hpqc/circl/oprf
Package oprf provides Verifiable, Oblivious Pseudo-Random Functions.
Package oprf provides Verifiable, Oblivious Pseudo-Random Functions.
hpqc/circl/ot
Package ot provides oblivious-transfer protocols.
Package ot provides oblivious-transfer protocols.
hpqc/circl/pke
Package pke provides a variety of public key encryption mechanisms.
Package pke provides a variety of public key encryption mechanisms.
hpqc/circl/pke/kyber
Package kyber implements the CRYSTALS-Kyber.CPAPKE public key encryption as submitted to round 3 of the NIST PQC competition and described in
Package kyber implements the CRYSTALS-Kyber.CPAPKE public key encryption as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/pke/kyber/kyber1024
kyber1024 implements the IND-CPA-secure Public Key Encryption scheme Kyber1024.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
kyber1024 implements the IND-CPA-secure Public Key Encryption scheme Kyber1024.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/pke/kyber/kyber512
kyber512 implements the IND-CPA-secure Public Key Encryption scheme Kyber512.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
kyber512 implements the IND-CPA-secure Public Key Encryption scheme Kyber512.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/pke/kyber/kyber768
kyber768 implements the IND-CPA-secure Public Key Encryption scheme Kyber768.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
kyber768 implements the IND-CPA-secure Public Key Encryption scheme Kyber768.CPAPKE as submitted to round 3 of the NIST PQC competition and described in
hpqc/circl/secretsharing
Package secretsharing provides methods to split secrets into shares.
Package secretsharing provides methods to split secrets into shares.
hpqc/circl/sign
Package sign provides unified interfaces for signature schemes.
Package sign provides unified interfaces for signature schemes.
hpqc/circl/sign/bls
Package bls provides BLS signatures using the BLS12-381 pairing curve.
Package bls provides BLS signatures using the BLS12-381 pairing curve.
Deprecated.
hpqc/circl/sign/dilithium/mode2
mode2 implements the CRYSTALS-Dilithium signature scheme Dilithium2 as submitted to round3 of the NIST PQC competition and described in
mode2 implements the CRYSTALS-Dilithium signature scheme Dilithium2 as submitted to round3 of the NIST PQC competition and described in
hpqc/circl/sign/dilithium/mode3
mode3 implements the CRYSTALS-Dilithium signature scheme Dilithium3 as submitted to round3 of the NIST PQC competition and described in
mode3 implements the CRYSTALS-Dilithium signature scheme Dilithium3 as submitted to round3 of the NIST PQC competition and described in
hpqc/circl/sign/dilithium/mode5
mode5 implements the CRYSTALS-Dilithium signature scheme Dilithium5 as submitted to round3 of the NIST PQC competition and described in
mode5 implements the CRYSTALS-Dilithium signature scheme Dilithium5 as submitted to round3 of the NIST PQC competition and described in
hpqc/circl/sign/ed25519
Package ed25519 implements Ed25519 signature scheme as described in RFC-8032.
Package ed25519 implements Ed25519 signature scheme as described in RFC-8032.
hpqc/circl/sign/ed448
Package ed448 implements Ed448 signature scheme as described in RFC-8032.
Package ed448 implements Ed448 signature scheme as described in RFC-8032.
hpqc/circl/sign/eddilithium2
Package eddilithium2 implements the hybrid signature scheme Ed25519-Dilithium2.
Package eddilithium2 implements the hybrid signature scheme Ed25519-Dilithium2.
hpqc/circl/sign/eddilithium3
Package eddilithium3 implements the hybrid signature scheme Ed448-Dilithium3.
Package eddilithium3 implements the hybrid signature scheme Ed448-Dilithium3.
hpqc/circl/sign/mldsa
mldsa implements NIST post-quantum signature scheme ML-DSA (FIPS204)
mldsa implements NIST post-quantum signature scheme ML-DSA (FIPS204)
hpqc/circl/sign/mldsa/mldsa44
mldsa44 implements NIST signature scheme ML-DSA-44 as defined in FIPS204.
mldsa44 implements NIST signature scheme ML-DSA-44 as defined in FIPS204.
hpqc/circl/sign/mldsa/mldsa65
mldsa65 implements NIST signature scheme ML-DSA-65 as defined in FIPS204.
mldsa65 implements NIST signature scheme ML-DSA-65 as defined in FIPS204.
hpqc/circl/sign/mldsa/mldsa87
mldsa87 implements NIST signature scheme ML-DSA-87 as defined in FIPS204.
mldsa87 implements NIST signature scheme ML-DSA-87 as defined in FIPS204.
hpqc/circl/sign/schemes
Package schemes contains a register of signature algorithms.
Package schemes contains a register of signature algorithms.
hpqc/circl/sign/slhdsa
Package slhdsa provides Stateless Hash-based Digital Signature Algorithm.
Package slhdsa provides Stateless Hash-based Digital Signature Algorithm.
hpqc/circl/simd
Package simd provides parallel implementations of some primitives.
Package simd provides parallel implementations of some primitives.
hpqc/circl/simd/keccakf1600
Package keccakf1600 provides a two and four-way Keccak-f[1600] permutation in parallel.
Package keccakf1600 provides a two and four-way Keccak-f[1600] permutation in parallel.
hpqc/circl/tss
Package tss provides threshold signature schemes.
Package tss provides threshold signature schemes.
hpqc/circl/tss/rsa
Package rsa provides RSA threshold signature scheme.
Package rsa provides RSA threshold signature scheme.
hpqc/circl/vdaf
Package vdaf provides verifiable distributed aggregation functions.
Package vdaf provides verifiable distributed aggregation functions.
hpqc/circl/vdaf/prio3
Package prio3 implements Prio3, a set of Verifiable Distributed Aggregation Functions (VDAFs).
Package prio3 implements Prio3, a set of Verifiable Distributed Aggregation Functions (VDAFs).
hpqc/circl/vdaf/prio3/arith
Package arith provides arithmetic operations over prime fields, vectors, and polynomials.
Package arith provides arithmetic operations over prime fields, vectors, and polynomials.
hpqc/circl/vdaf/prio3/count
Package count is a VDAF for counting Boolean measurements.
Package count is a VDAF for counting Boolean measurements.
hpqc/circl/vdaf/prio3/histogram
Package histogram is a VDAF for aggregating integer measurements into buckets.
Package histogram is a VDAF for aggregating integer measurements into buckets.
hpqc/circl/vdaf/prio3/internal/cursor
Package cursor aids with iteration of slices.
Package cursor aids with iteration of slices.
hpqc/circl/vdaf/prio3/internal/flp
Package flp provides a Fully-Linear Proof (FLP) system.
Package flp provides a Fully-Linear Proof (FLP) system.
hpqc/circl/vdaf/prio3/internal/prio3
Package prio3 supports a variety of verifiable distributed aggregation functions.
Package prio3 supports a variety of verifiable distributed aggregation functions.
hpqc/circl/vdaf/prio3/mhcv
Package mhcv is a VDAF for aggregating vectors of Booleans with bounded weight.
Package mhcv is a VDAF for aggregating vectors of Booleans with bounded weight.
hpqc/circl/vdaf/prio3/sum
Package sum is a VDAF for aggregating integers in a pre-determined range.
Package sum is a VDAF for aggregating integers in a pre-determined range.
hpqc/circl/vdaf/prio3/sumvec
Package sumvec is a VDAF for aggregating vectors of integers in a pre-determined range.
Package sumvec is a VDAF for aggregating vectors of integers in a pre-determined range.
hpqc/circl/xof
Package xof provides an interface for eXtendable-Output Functions.
Package xof provides an interface for eXtendable-Output Functions.
hpqc/circl/xof/k12
k12 implements the KangarooTwelve XOF.
k12 implements the KangarooTwelve XOF.
hpqc/circl/zk
Package zk provides primitives for zero-knowledge proofs of knowledge.
Package zk provides primitives for zero-knowledge proofs of knowledge.
hpqc/circl/zk/dl
Package dl provides a Schnorr NIZK discrete-log proof.
Package dl provides a Schnorr NIZK discrete-log proof.
hpqc/circl/zk/dleq
Package dleq provides zero-knowledge proofs of Discrete-Logarithm Equivalence (DLEQ).
Package dleq provides zero-knowledge proofs of Discrete-Logarithm Equivalence (DLEQ).
hpqc/circl/zk/qndleq
Package qndleq provides zero-knowledge proofs of Discrete-Logarithm Equivalence (DLEQ) on Qn.
Package qndleq provides zero-knowledge proofs of Discrete-Logarithm Equivalence (DLEQ) on Qn.
hpqc/kem
Package kem provides a unified interface for KEM schemes.
Package kem provides a unified interface for KEM schemes.
hpqc/kem/adapter
Package adapter provides an adhoc hashed ElGamal construction that essentially acts like an adapter, adapting a NIKE to KEM.
Package adapter provides an adhoc hashed ElGamal construction that essentially acts like an adapter, adapting a NIKE to KEM.
hpqc/kem/circlkem
Package circlkem adapts circl KEM types to hpqc KEM interfaces.
Package circlkem adapts circl KEM types to hpqc KEM interfaces.
hpqc/kem/combiner
Package combiner is a security-preserving KEM combiner.
Package combiner is a security-preserving KEM combiner.
hpqc/kem/hqc
Package hqc provides KEM wrappers around the go-hqc implementation of the HQC (Hamming Quasi-Cyclic) code-based post-quantum KEM, exposing the three NIST parameter sets through our common kem.Scheme interface.
Package hqc provides KEM wrappers around the go-hqc implementation of the HQC (Hamming Quasi-Cyclic) code-based post-quantum KEM, exposing the three NIST parameter sets through our common kem.Scheme interface.
hpqc/kem/mkem
Package mkem provides multiparty KEM construction.
Package mkem provides multiparty KEM construction.
hpqc/kem/mlkem768
Package mlkem768 provides a KEM wrapper that uses our KEM interfaces.
Package mlkem768 provides a KEM wrapper that uses our KEM interfaces.
hpqc/kem/sntrup
This package provide the Streamlined NTRU Prime KEM.
This package provide the Streamlined NTRU Prime KEM.
hpqc/kem/xwing
Package xwing provides the xwing KEM using a KEM wrapper so that it obeys our KEM interfaces for Scheme, PrivateKey, PublicKey.
Package xwing provides the xwing KEM using a KEM wrapper so that it obeys our KEM interfaces for Scheme, PrivateKey, PublicKey.
hpqc/nike
Package nike contains generic NIKE interfaces and many implementations.
Package nike contains generic NIKE interfaces and many implementations.
hpqc/rand
Package rand provides various utitilies related to generating cryptographically secure random numbers and byte vectors.
Package rand provides various utitilies related to generating cryptographically secure random numbers and byte vectors.
hpqc/sign/circlsign
Package circlsign adapts circl sign types to hpqc sign interfaces.
Package circlsign adapts circl sign types to hpqc sign interfaces.
hpqc/sign/ed25519
Package is our ed25519 wrapper type which also conforms to our generic interfaces for signature schemes.
Package is our ed25519 wrapper type which also conforms to our generic interfaces for signature schemes.
hpqc/sign/falcon
Package falcon implements the hpqc sign.Scheme interface for the padded Falcon parameter sets exposed by github.com/katzenpost/falcon (Falcon-padded-512 and Falcon-padded-1024).
Package falcon implements the hpqc sign.Scheme interface for the padded Falcon parameter sets exposed by github.com/katzenpost/falcon (Falcon-padded-512 and Falcon-padded-1024).
hpqc/sign/mldsa
Package mldsa implements the hpqc sign.Scheme interface for the FIPS 204 ML-DSA signature scheme, in its three standard parameterisations (ML-DSA-44, ML-DSA-65, ML-DSA-87).
Package mldsa implements the hpqc sign.Scheme interface for the FIPS 204 ML-DSA signature scheme, in its three standard parameterisations (ML-DSA-44, ML-DSA-65, ML-DSA-87).
hpqc/sign/sphincsplus
Package sphincsplus implements interface wrapper around a specific parameterization of Sphincs+.
Package sphincsplus implements interface wrapper around a specific parameterization of Sphincs+.
hpqc/sign/sqisign
Package sqisign implements the hpqc sign.Scheme interface for SQIsign level 1.
Package sqisign implements the hpqc sign.Scheme interface for SQIsign level 1.
hpqc/sqisign/bindings/go/sqisign
Package sqisign is a Go binding for the SQIsign level-1 signature scheme, wrapping the sqisign-ffi crate at the repository root.
Package sqisign is a Go binding for the SQIsign level-1 signature scheme, wrapping the sqisign-ffi crate at the repository root.
lms/common
Package common contains some data types and utilities used throughout the lms and ots packages.
Package common contains some data types and utilities used throughout the lms and ots packages.
lms/lms
Package lms implements Leighton-Micali Hash-Based Signatures (RFC 8554)
Package lms implements Leighton-Micali Hash-Based Signatures (RFC 8554)
lms/ots
Package ots implements one-time signatures (LM-OTS) for use in LMS
Package ots implements one-time signatures (LM-OTS) for use in LMS
oqs
Package oqs provides a GO wrapper for the C liboqs quantum-resistant library.
Package oqs provides a GO wrapper for the C liboqs quantum-resistant library.
skein
Package skein implements the Skein512 hash function based on the Threefish tweakable block cipher.
Package skein implements the Skein512 hash function based on the Threefish tweakable block cipher.
skein/skein1024
Package skein1024 implements the Skein1024 hash function based on the Threefish1024 tweakable block cipher.
Package skein1024 implements the Skein1024 hash function based on the Threefish1024 tweakable block cipher.
skein/skein256
Package skein256 implements the Skein256 hash function based on the Threefish256 tweakable block cipher.
Package skein256 implements the Skein256 hash function based on the Threefish256 tweakable block cipher.
skein/threefish
Package threefish implements the Threefish tweakable block cipher.
Package threefish implements the Threefish tweakable block cipher.
threefish
Package threefish implements the Threefish tweakable block cipher.
Package threefish implements the Threefish tweakable block cipher.
vdf
xmssmt
Go implementation of the XMSS[MT] post-quantum stateful hash-based signature scheme as described in RFC 8391.
Go implementation of the XMSS[MT] post-quantum stateful hash-based signature scheme as described in RFC 8391.
xx-network-crypto/chacha
Package chacha contains logic for encryption and decryption using the chacha20poly1305 encryption algorithm.
Package chacha contains logic for encryption and decryption using the chacha20poly1305 encryption algorithm.
xx-network-crypto/csprng
Package csprng wraps the golang crypto/rand package so that we can use different random number generators interchangeably when the need arises.
Package csprng wraps the golang crypto/rand package so that we can use different random number generators interchangeably when the need arises.
xx-network-crypto/mnemonic
Package mnemonic provides english mnemonic encodings wrapping the golang bip39 reference implementation.
Package mnemonic provides english mnemonic encodings wrapping the golang bip39 reference implementation.
xx-network-crypto/nonce
Package nonce contains our implementation of a nonce, including an expiration time, generation time and TTL.
Package nonce contains our implementation of a nonce, including an expiration time, generation time and TTL.
xx-network-crypto/signature/ec
Package ec contains logic for handling elliptic curve keys
Package ec contains logic for handling elliptic curve keys
xx-network-crypto/signature/rsa
Package rsa pem.go imports and exports to pem files.
Package rsa pem.go imports and exports to pem files.
xx-network-crypto/tls
Package tls contains wrapper functions for creating GRPC credentials.
Package tls contains wrapper functions for creating GRPC credentials.
xx-network-primitives/id
Package id contains the generic ID type, which is a byte array that represents an entity ID.
Package id contains the generic ID type, which is a byte array that represents an entity ID.
xx-network-primitives/id/idf
Package idf contains the structure of the ID File.
Package idf contains the structure of the ID File.
xx-network-primitives/keyMutex
Package keyMutex implements a keyed mutex with a sync map.
Package keyMutex implements a keyed mutex with a sync map.
xx-network-primitives/netTime
Package netTime provides a custom time function that should provide the current accurate time used by the network from a custom time service.
Package netTime provides a custom time function that should provide the current accurate time used by the network from a custom time service.
xx-network-primitives/rateLimiting
Package rateLimiting implements the leaky bucket algorithm: https://en.wikipedia.org/wiki/Leaky_bucket
Package rateLimiting implements the leaky bucket algorithm: https://en.wikipedia.org/wiki/Leaky_bucket
zkp

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL