ValarDragon 99e582d79a crypto: Refactor to move files out of the top level directory
Currently the top level directory contains basically all of the code
for the crypto package. This PR moves the crypto code into submodules
in a similar manner to what `golang/x/crypto` does. This improves code
organization.

Ref discussion: https://github.com/tendermint/tendermint/pull/1966

Closes #1956
2018-07-18 08:38:44 -07:00

46 lines
1.1 KiB
Go

// crypto is a customized/convenience cryptography package for supporting
// Tendermint.
// It wraps select functionality of equivalent functions in the
// Go standard library, for easy usage with our libraries.
// Keys:
// All key generation functions return an instance of the PrivKey interface
// which implements methods
// AssertIsPrivKeyInner()
// Bytes() []byte
// Sign(msg []byte) Signature
// PubKey() PubKey
// Equals(PrivKey) bool
// Wrap() PrivKey
// From the above method we can:
// a) Retrieve the public key if needed
// pubKey := key.PubKey()
// For example:
// privKey, err := ed25519.GenPrivKeyEd25519()
// if err != nil {
// ...
// }
// pubKey := privKey.PubKey()
// ...
// // And then you can use the private and public key
// doSomething(privKey, pubKey)
// We also provide hashing wrappers around algorithms:
// Sha256
// sum := crypto.Sha256([]byte("This is Tendermint"))
// fmt.Printf("%x\n", sum)
// Ripemd160
// sum := crypto.Ripemd160([]byte("This is consensus"))
// fmt.Printf("%x\n", sum)
package crypto
// TODO: Add more docs in here