kryptology icon indicating copy to clipboard operation
kryptology copied to clipboard

Important

This library has been archived and is no longer supported. As such it should not be used, and it is not used by Coinbase.

Kryptology

Coinbase's advanced cryptography library

Quickstart

Use the latest version of this library:

go get github.com/coinbase/kryptology

Pin a specific release of this library:

go get github.com/coinbase/[email protected]

Documentation

Public documentations can be found at https://pkg.go.dev/github.com/coinbase/kryptology

To access the documentation of the local version, run godoc -http=:6060 and open the following url in your browser.

http://localhost:6060/pkg/github.com/coinbase/kryptology/

Developer Setup

Prerequisites: golang 1.17, make

git clone [email protected]/coinbase/kryptology.git && make 

Components

The following is the list of primitives and protocols that are implemented in this repository.

Curves

The curve abstraction code can be found at pkg/core/curves/curve.go

The curves that implement this abstraction are as follows.

  • BLS12377
  • BLS12381
  • Ed25519
  • Secp256k1
  • P256
  • Pallas

Protocols

The generic protocol interface pkg/core/protocol/protocol.go. This abstraction is currently only used in DKLs18 implementation.

  • Cryptographic Accumulators
  • Bulletproof
  • Oblivious Transfer
    • Verifiable Simplest OT
    • KOS OT Extension
  • Threshold ECDSA Signature
    • DKLs18 - DKG and Signing
    • GG20: The authors of GG20 have stated that the protocol is obsolete and should not be used. See https://eprint.iacr.org/2020/540.pdf.
      • GG20 - DKG
      • GG20 - Signing
  • Threshold Schnorr Signature
    • FROST threshold signature - DKG
    • FROST threshold signature - Signing
  • Paillier encryption system
  • Secret Sharing Schemes
    • Shamir's secret sharing scheme
    • Pedersen
    • Feldman
  • Verifiable encryption
  • ZKP Schnorr

Contributing

  • Versioning: vMajor.Minor.Patch
    • Major revision indicates breaking API change or significant new features
    • Minor revision indicates no API breaking changes and may include significant new features or documentation
    • Patch indicates no API breaking changes and may include only fixes

References