- package crypto
-
- import (
- "github.com/tendermint/tendermint/crypto/tmhash"
- "github.com/tendermint/tendermint/internal/jsontypes"
- "github.com/tendermint/tendermint/libs/bytes"
- )
-
- const (
- // AddressSize is the size of a pubkey address.
- AddressSize = tmhash.TruncatedSize
- )
-
- // An address is a []byte, but hex-encoded even in JSON.
- // []byte leaves us the option to change the address length.
- // Use an alias so Unmarshal methods (with ptr receivers) are available too.
- type Address = bytes.HexBytes
-
- func AddressHash(bz []byte) Address {
- return Address(tmhash.SumTruncated(bz))
- }
-
- type PubKey interface {
- Address() Address
- Bytes() []byte
- VerifySignature(msg []byte, sig []byte) bool
- Equals(PubKey) bool
- Type() string
-
- // Implementations must support tagged encoding in JSON.
- jsontypes.Tagged
- }
-
- type PrivKey interface {
- Bytes() []byte
- Sign(msg []byte) ([]byte, error)
- PubKey() PubKey
- Equals(PrivKey) bool
- Type() string
-
- // Implementations must support tagged encoding in JSON.
- jsontypes.Tagged
- }
-
- type Symmetric interface {
- Keygen() []byte
- Encrypt(plaintext []byte, secret []byte) (ciphertext []byte)
- Decrypt(ciphertext []byte, secret []byte) (plaintext []byte, err error)
- }
-
- // If a new key type implements batch verification,
- // the key type must be registered in github.com/tendermint/tendermint/crypto/batch
- type BatchVerifier interface {
- // Add appends an entry into the BatchVerifier.
- Add(key PubKey, message, signature []byte) error
- // Verify verifies all the entries in the BatchVerifier, and returns
- // if every signature in the batch is valid, and a vector of bools
- // indicating the verification status of each signature (in the order
- // that signatures were added to the batch).
- Verify() (bool, []bool)
- }
|