# Sonr Crypto > Developer documentation for the Sonr cryptography library — curves, threshold signatures, MPC, zero-knowledge proofs, and identity primitives in Go. ## Docs - [Sonr Crypto](https://sonr-io.github.io/crypto): A Go cryptography library for threshold signatures, multi-party computation, zero-knowledge proofs, and decentralized identity — built on a single pluggable elliptic-curve abstraction. - [Getting started](https://sonr-io.github.io/crypto/getting-started): Install the module, choose a curve, and learn the conventions — constructors, round-based protocols, serialization, and error handling — that every package in this library shares. ## Foundations - [Foundations](https://sonr-io.github.io/crypto/foundations): The curve abstraction, the arithmetic helpers, and the protocol iterator — the three things almost every other package in this library is built on top of. - [Curves](https://sonr-io.github.io/crypto/foundations/curves): Every named curve constructor in core/curves, the complete Point and Scalar method sets, pairing curves, and a map of the low-level native field arithmetic underneath. - [Arithmetic & Commitments](https://sonr-io.github.io/crypto/foundations/arithmetic): The core package — modular arithmetic over big.Int with explicit moduli, constant-time comparison, hash-to-field, Fiat–Shamir, safe primes, and the HMAC commitment scheme. - [Protocol Iterator](https://sonr-io.github.io/crypto/foundations/protocol): core/protocol — the Iterator and Message types that drive every interactive round-based protocol in this library, plus the crank loop you write to run them. ## Symmetric & Secrets - [Symmetric & Secrets](https://sonr-io.github.io/crypto/symmetric): Bulk encryption, password-based key derivation, and the secret-hygiene helpers — how to pick between them and how they compose. - [Randomized AEAD (AES-256-GCM)](https://sonr-io.github.io/crypto/symmetric/aead): The aead package — AES-256-GCM with a self-generated nonce prepended to every ciphertext, plus the exact key size, tag size, and wire layout. - [Deterministic AEAD (AES-SIV)](https://sonr-io.github.io/crypto/symmetric/deterministic-aead): The daed package — AES-SIV-CMAC per RFC 5297 with a mandatory 64-byte key. Nonce-free and misuse-resistant, at the price of leaking plaintext equality. - [Key Derivation](https://sonr-io.github.io/crypto/symmetric/key-derivation): Argon2id password stretching with exact preset parameters and PHC hash encoding, plus the subtle package's HKDF, hash/curve name mapping, and X25519 ECDH. - [Secret Hygiene](https://sonr-io.github.io/crypto/symmetric/secrets): The secure, salt, password, and subtle/random helpers — zeroization, salt management, password policy, and randomness, with an honest account of what each actually guarantees. ## Signatures - [Signatures](https://sonr-io.github.io/crypto/signatures): Choosing between BLS aggregation, BBS+ selective disclosure, ECDSA canonicalization, verifiable random functions, and the chain-specific Schnorr variants. - [BLS Signatures](https://sonr-io.github.io/crypto/signatures/bls): Pairing-based signatures on BLS12-381 with aggregation, multi-signatures, proofs of possession, and non-interactive threshold key generation. - [BBS+ Signatures](https://sonr-io.github.io/crypto/signatures/bbs): Sign a vector of attributes on BLS12-381, then prove possession of the signature while disclosing only the attributes you choose — plus blind signing so the issuer never sees part of what it signs. - [ECDSA Utilities](https://sonr-io.github.io/crypto/signatures/ecdsa): Canonical low-S form, malleability defence, fixed-width signature codecs, and RFC 6979-style deterministic signing on top of the standard library's crypto/ecdsa. - [Verifiable Random Function](https://sonr-io.github.io/crypto/signatures/vrf): A bespoke VRF over Edwards25519 using SHAKE256 and the Elligator map — unpredictable outputs that anyone holding the public key can verify. - [Chain-Specific Schemes](https://sonr-io.github.io/crypto/signatures/chain-schemes): Mina-protocol Schnorr over Pallas with Poseidon, and NEM's Keccak-512 flavoured Ed25519 — interop code for two specific networks, not general-purpose primitives. ## Threshold & MPC - [Threshold & MPC](https://sonr-io.github.io/crypto/threshold): Splitting keys across parties so no single machine ever holds a signing key — secret sharing, distributed key generation, and threshold signing. - [Secret Sharing](https://sonr-io.github.io/crypto/threshold/secret-sharing): Shamir, Feldman, and Pedersen verifiable secret sharing over any supported curve — plus the legacy sharing/v1 layer and its known defects. - [Distributed Key Generation](https://sonr-io.github.io/crypto/threshold/dkg): FROST, Gennaro, and 2-party Gennaro DKG — interactive protocols that produce a signing key no single participant ever holds. - [Threshold ECDSA](https://sonr-io.github.io/crypto/threshold/threshold-ecdsa): DKLs18 2-of-2 threshold ECDSA — the protocol.Iterator API, serialization, key refresh, the low-level round methods, and the trusted-dealer shortcut. - [Threshold Ed25519](https://sonr-io.github.io/crypto/threshold/threshold-ed25519): t-of-n Ed25519 signing whose output verifies under a stock Ed25519 verifier, plus FROST threshold Schnorr on top of a dkg/frost result. - [Oblivious Transfer](https://sonr-io.github.io/crypto/threshold/oblivious-transfer): The base OT and correlated OT extension underneath threshold ECDSA — simplest (Verified Simplest OT) and kos (KOS15 cOT extension). ## Zero-Knowledge - [Zero-Knowledge](https://sonr-io.github.io/crypto/zero-knowledge): Four unrelated tools that all let a verifier learn a fact without learning the secret behind it — discrete-log proofs, set-membership accumulators, range proofs, and additively homomorphic encryption. - [Schnorr proofs](https://sonr-io.github.io/crypto/zero-knowledge/schnorr): Non-interactive proof of knowledge of a discrete log over any curve in core/curves, with an optional commit-then-reveal variant used by this module's DKG and OT protocols. - [Accumulator](https://sonr-io.github.io/crypto/zero-knowledge/accumulator): Pairing-based ECC accumulator — a constant-size commitment to a set, constant-size membership witnesses, and a zero-knowledge membership proof that hides which element is held. - [Bulletproofs](https://sonr-io.github.io/crypto/zero-knowledge/bulletproof): Logarithmic-size inner-product argument and the single and batched range proofs built on top of it — plus the exported-API gap that currently makes the range layer callable only from inside the package. - [Paillier](https://sonr-io.github.io/crypto/zero-knowledge/paillier): Additively homomorphic public-key encryption over a composite modulus, plus the PSF proof that a Paillier modulus is square-free — the check that keeps a malformed key from breaking protocols above it. ## Identity & Authorization - [Identity & Authorization](https://sonr-io.github.io/crypto/identity): The application-facing layer — threshold key enclaves, did:key identifiers, UCAN capability tokens, payload encryption, and WebAssembly code signing. - [did:key Identifiers](https://sonr-io.github.io/crypto/identity/did-key): Encode a public key as a self-describing did:key string, parse it back, and derive verification material — plus a frank assessment of the keys/parsers package. - [MPC Enclave](https://sonr-io.github.io/crypto/identity/mpc-enclave): A batteries-included 2-of-2 threshold ECDSA wrapper over tecdsa/dklsv1 — keygen, signing, share refresh, serialization, and the security model it actually provides. - [UCAN Capability Tokens](https://sonr-io.github.io/crypto/identity/ucan): JWT-based User-Controlled Authorization Network tokens signed by an MPC enclave — capabilities, attenuation, delegation chains, templates, and the authorization checks that are not implemented. - [ECIES](https://sonr-io.github.io/crypto/identity/ecies): Encrypt a payload to a secp256k1 public key. A thin wrapper over github.com/ecies/go/v2 with one significant seed hazard. - [WASM Module Signing](https://sonr-io.github.io/crypto/identity/wasm-modules): Ed25519 code signing and SHA-256 hash pinning for WebAssembly module bytes — supply-chain verification, not a JavaScript binding layer. ## Reference - [Package index](https://sonr-io.github.io/crypto/reference/packages): Every importable package in github.com/sonr-io/crypto, what it provides, and the page that documents it. - [Security notes](https://sonr-io.github.io/crypto/reference/security): Critical defects, stubs, non-constant-time paths, and operational footguns found while documenting this library — including three findings that make packages unsafe or unusable as written.