crypto-snippets
A bunch of schemes, constructions, and definitions for (my) quick reference.
Schnorr Signature
$\gdef\system{\mathsf{Sig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}Sign}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$ $\gdef\msgspace{\mathcal{M}}$ $\gdef\group{\mathbb{G}}$ $\gdef\gen{g}$
$\gdef\order{q}$ $\gdef\hash{\mathsf{H}}$
$\keygen: (\gen^{x}, x)$
$\sign: (R, s)$
$\verify: g^s \stackrel{?}{=} RX^c$
Group Signature Syntax
$\gdef\system{\mathsf{GSig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}GSign}}$ $\gdef\verify{\mathsf{\systemprefix{}GVerify}}$ $\gdef\open{\mathsf{\systemprefix{}GOpen}}$ $\gdef\msgspace{\mathcal{M}}$ $\gdef\msg{\mathcal{m}}$ $\gdef\sig{\mathcal{\sigma}}$
$\gdef\gsk{gsk}$ $\gdef\gmsk{gmsk}$ $\gdef\gpk{gpk}$
$\keygen(1^\lambda, n) \to (\gpk, \gmsk, \{\gsk_i\}^n)$
$\sign(\gsk_i, \msg) \to \sigma$
$\verify(\gpk, \msg, \sig) \to \{0, 1\}$
$\open(\gmsk, \msg, \sig) \to \{1, .., n\}$
EdDSA ZoKrates
$\gdef\system{\mathsf{Sig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}Sign}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$ $\gdef\hash{\mathsf{Hash}}$ $\gdef\msgspace{\mathcal{M}}$ $\gdef\group{\mathbb{G}}$ $\gdef\generator{G}$ $\gdef\modulo{q}$
$\keygen : (h \generator, h)$
$\sign : (R,s)$
$\verify : s \generator \stackrel{?}{=} R + Y S$
Ed25519
$\gdef\system{\mathsf{Sig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}Sign}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$ $\gdef\hash{\mathsf{Hash}}$ $\gdef\msgspace{\mathcal{M}}$ $\gdef\group{\mathbb{G}}$ $\gdef\generator{G}$ $\gdef\modulo{q}$
$\keygen : (h \generator, h)$
$\sign : (R,s)$
$\verify : s \generator \stackrel{?}{=} R + Y S$
Commitment Syntax
$\gdef\system{\mathsf{Com}}$ $\gdef\systemprefix{}$ $\gdef\setup{\mathsf{\systemprefix{}Setup}}$ $\gdef\commit{\mathsf{\systemprefix{}Commit}}$ $\gdef\check{\mathsf{\systemprefix{}Check}}$
$\setup(1^n) \to pp$
$\commit(pp,u) \to (c, r)$
$\check(pp, c, u, r) \to \{0, 1\}$
Digital Signature Syntax
$\gdef\system{\mathsf{Sig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}Sign}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$ $\gdef\msgspace{\mathcal{M}}$
$\keygen(1^n) \to (pk, sk)$
$\sign(sk, m) \to \sigma$
$\verify(pk, m, \sigma) \to \{0,1\}$
SNARK Syntax
$\gdef\system{\mathsf{SNARK}}$ $\gdef\systemprefix{}$ $\gdef\setup{\mathsf{\systemprefix{}Setup}}$ $\gdef\prove{\mathsf{\systemprefix{}Prove}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$
$\setup{}(ecs, src) \to (pk, vk)$
$\prove{}(ecs, x, x', w, pk) \to \pi_{ecs}$
$\verify{}(\pi_{ecs}, x, vk) \to \{0, 1\}$
BLS Signature
$\gdef\system{\mathsf{Sig}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\sign{\mathsf{\systemprefix{}Sign}}$ $\gdef\verify{\mathsf{\systemprefix{}Verify}}$ $\gdef\msgspace{\mathcal{M}}$
$\gdef\gone{\mathbb{G}_1}$ $\gdef\genone{g_1}$ $\gdef\gentwo{g_2}$ $\gdef\gtwo{\mathbb{G}_2}$ $\gdef\gthree{\mathbb{G}_T}$ $\gdef\order{q}$ $\gdef\hash{\mathsf{H}}$
$\keygen: (\genone^{\alpha}, \alpha)$
$\sign: \hash(m)^{\alpha}$
$\verify: e(\genone, \sigma) \stackrel{?}{=} e(pk, \hash(m))$
Elgamal Encryption
$\gdef\system{\mathsf{Enc}}$ $\gdef\systemprefix{}$ $\gdef\keygen{\mathsf{\systemprefix{}KGen}}$ $\gdef\msgspace{\mathcal{M}}$
$\gdef\enc{\mathsf{\systemprefix{}Enc}}$ $\gdef\dec{\mathsf{\systemprefix{}Dec}}$ $\gdef\msgspace{\mathcal{M}}$ $\gdef\group{\mathbb{G}}$ $\gdef\generator{g}$ $\gdef\modulo{q}$ \(\gdef\rgets{\stackrel{\$}{\gets} }\)
$\keygen: (\generator^{x}, x)$
$\enc: (\generator^y, \generator^{xy} m)$
$\dec: c_2 \cdot c_1 ^ {-x}$