crypto

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2020 License: Apache-2.0, Apache-2.0, Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PrivKeyLenEd25519   = 64
	PrivKeyLenSecp256k1 = 32
)
View Source
const (
	PrivKeyTypeEd25519   = byte(0x01)
	PrivKeyTypeSecp256k1 = byte(0x02)
)

Types of PrivKey implementations

View Source
const (
	PubKeyLenEd25519   = 32
	PubKeyLenSecp256k1 = 64
)
View Source
const (
	PubKeyTypeEd25519   = byte(0x01)
	PubKeyTypeSecp256k1 = byte(0x02)
)

Types of PubKey implementations

View Source
const (
	SignatureTypeEd25519   = byte(0x01)
	SignatureTypeSecp256k1 = byte(0x02)
)

Types of Signature implementations

View Source
const (
	// A series of combination of ciphers
	// ZA includes ed25519,ecdsa,ripemd160,keccak256,secretbox
	CryptoTypeZhongAn = "ZA"
)
View Source
const (
	SignKeyLenEd25519 = 64
)

Variables

View Source
var (
	CryptoType = CryptoTypeZhongAn
)

Functions

func CRandBytes

func CRandBytes(numBytes int) []byte

This uses the OS and the Seed(s).

func CRandHex

func CRandHex(numDigits int) string

RandHex(24) gives 96 bits of randomness, strong enough for most purposes.

func CReader

func CReader() io.Reader

Returns a crand.Reader mixed with user-supplied entropy

func DecodeArmor

func DecodeArmor(armorStr string) (blockType string, headers map[string]string, data []byte, err error)

func DecryptSymmetric

func DecryptSymmetric(ciphertext []byte, secret []byte) (plaintext []byte, err error)

secret must be 32 bytes long. Use something like Sha256(Bcrypt(passphrase)) The ciphertext is (secretbox.Overhead + 24) bytes longer than the plaintext.

func EncodeArmor

func EncodeArmor(blockType string, headers map[string]string, data []byte) string

func EncryptSymmetric

func EncryptSymmetric(plaintext []byte, secret []byte) (ciphertext []byte)

secret must be 32 bytes long. Use something like Sha256(Bcrypt(passphrase)) The ciphertext is (secretbox.Overhead + 24) bytes longer than the plaintext. NOTE: call crypto.MixEntropy() first.

func GetNodeCryptoType

func GetNodeCryptoType() string

func GetNodePrivKeyBytes

func GetNodePrivKeyBytes(pkey PrivKey) []byte

func GetNodePubkeyBytes

func GetNodePubkeyBytes(pkey PubKey) []byte

func GetNodeSigBytes

func GetNodeSigBytes(sig Signature) []byte

func MixEntropy

func MixEntropy(seedBytes []byte)

Mix additional bytes of randomness, e.g. from hardware, user-input, etc. It is OK to call it multiple times. It does not diminish security.

func NodeInit

func NodeInit(crypto string)

func NodePubkeyLen

func NodePubkeyLen() int

--------------------------------------------------

func PaddedBigBytes

func PaddedBigBytes(bi *big.Int, buf []byte)

func Ripemd160

func Ripemd160(bytes []byte) []byte

func Sha256

func Sha256(bytes []byte) []byte

Types

type PrivKey

type PrivKey interface {
	Bytes() []byte
	Sign(msg []byte) Signature
	PubKey() PubKey
	Equals(PrivKey) bool
	KeyString() string
}

PrivKey is part of PrivAccount and state.PrivValidator.

func GenNodePrivKey

func GenNodePrivKey() PrivKey

func GenPrivkeyByBytes

func GenPrivkeyByBytes(cryptoType string, data []byte) (PrivKey, error)

func GenPrivkeyByType

func GenPrivkeyByType(cryptoType string) (PrivKey, error)

func PrivKeyFromBytes

func PrivKeyFromBytes(privKeyBytes []byte) (privKey PrivKey, err error)

func SetNodePrivKey

func SetNodePrivKey(data []byte) PrivKey

type PrivKeyEd25519

type PrivKeyEd25519 [PrivKeyLenEd25519]byte

Implements PrivKey

func GenPrivKeyEd25519

func GenPrivKeyEd25519() PrivKeyEd25519

func GenPrivKeyEd25519FromSecret

func GenPrivKeyEd25519FromSecret(secret []byte) PrivKeyEd25519

NOTE: secret should be the output of a KDF like bcrypt, if it's derived from user input.

func (PrivKeyEd25519) Bytes

func (privKey PrivKeyEd25519) Bytes() []byte

func (PrivKeyEd25519) Equals

func (privKey PrivKeyEd25519) Equals(other PrivKey) bool

func (PrivKeyEd25519) Generate

func (privKey PrivKeyEd25519) Generate(index int) PrivKeyEd25519

Deterministically generates new priv-key bytes from key.

func (PrivKeyEd25519) KeyString

func (privKey PrivKeyEd25519) KeyString() string

func (PrivKeyEd25519) PubKey

func (privKey PrivKeyEd25519) PubKey() PubKey

func (PrivKeyEd25519) Sign

func (privKey PrivKeyEd25519) Sign(msg []byte) Signature

func (PrivKeyEd25519) String

func (privKey PrivKeyEd25519) String() string

func (PrivKeyEd25519) ToCurve25519

func (privKey PrivKeyEd25519) ToCurve25519() *[32]byte

type PrivKeySecp256k1

type PrivKeySecp256k1 [PrivKeyLenSecp256k1]byte

PrivKeySecp256k1 Implements PrivKey

func GenPrivKeySecp256k1

func GenPrivKeySecp256k1() PrivKeySecp256k1

func GenPrivKeySecp256k1FromSecret

func GenPrivKeySecp256k1FromSecret(secret []byte) PrivKeySecp256k1

NOTE: secret should be the output of a KDF like bcrypt, if it's derived from user input.

func (PrivKeySecp256k1) Bytes

func (privKey PrivKeySecp256k1) Bytes() []byte

func (PrivKeySecp256k1) Equals

func (privKey PrivKeySecp256k1) Equals(other PrivKey) bool

func (PrivKeySecp256k1) KeyString

func (privKey PrivKeySecp256k1) KeyString() string

func (PrivKeySecp256k1) PubKey

func (privKey PrivKeySecp256k1) PubKey() PubKey

func (PrivKeySecp256k1) Sign

func (privKey PrivKeySecp256k1) Sign(msg []byte) Signature

func (PrivKeySecp256k1) String

func (privKey PrivKeySecp256k1) String() string

type PubKey

type PubKey interface {
	Address() []byte
	Bytes() []byte
	KeyString() string
	VerifyBytes(msg []byte, sig Signature) bool
	Equals(PubKey) bool
}

PubKey is part of Account and Validator.

func PubKeyFromBytes

func PubKeyFromBytes(pubKeyBytes []byte) (pubKey PubKey, err error)

func SetNodePubkey

func SetNodePubkey(data []byte) PubKey

type PubKeyEd25519

type PubKeyEd25519 [PubKeyLenEd25519]byte

Implements PubKey

func (PubKeyEd25519) Address

func (pubKey PubKeyEd25519) Address() []byte

func (PubKeyEd25519) Bytes

func (pubKey PubKeyEd25519) Bytes() []byte

func (PubKeyEd25519) Equals

func (pubKey PubKeyEd25519) Equals(other PubKey) bool

func (PubKeyEd25519) KeyString

func (pubKey PubKeyEd25519) KeyString() string

Must return the full bytes in hex. Used for map keying, etc.

func (PubKeyEd25519) String

func (pubKey PubKeyEd25519) String() string

func (PubKeyEd25519) ToCurve25519

func (pubKey PubKeyEd25519) ToCurve25519() *[32]byte

For use with golang/crypto/nacl/box If error, returns nil.

func (PubKeyEd25519) VerifyBytes

func (pubKey PubKeyEd25519) VerifyBytes(msg []byte, sig_ Signature) bool

type PubKeySecp256k1

type PubKeySecp256k1 [PubKeyLenSecp256k1]byte

Implements PubKey

func (PubKeySecp256k1) Address

func (pubKey PubKeySecp256k1) Address() []byte

func (PubKeySecp256k1) Bytes

func (pubKey PubKeySecp256k1) Bytes() []byte

func (PubKeySecp256k1) Equals

func (pubKey PubKeySecp256k1) Equals(other PubKey) bool

func (PubKeySecp256k1) KeyString

func (pubKey PubKeySecp256k1) KeyString() string

Must return the full bytes in hex. Used for map keying, etc.

func (PubKeySecp256k1) String

func (pubKey PubKeySecp256k1) String() string

func (PubKeySecp256k1) VerifyBytes

func (pubKey PubKeySecp256k1) VerifyBytes(msg []byte, sig_ Signature) bool

type Signature

type Signature interface {
	Bytes() []byte
	IsZero() bool
	String() string
	Equals(Signature) bool
	KeyString() string
}

Signature is a part of Txs and consensus Votes.

func SetNodeSignature

func SetNodeSignature(data []byte) Signature

func SignatureFromBytes

func SignatureFromBytes(sigBytes []byte) (sig Signature, err error)

type SignatureEd25519

type SignatureEd25519 [SignKeyLenEd25519]byte

Implements Signature

func (SignatureEd25519) Bytes

func (sig SignatureEd25519) Bytes() []byte

func (SignatureEd25519) Equals

func (sig SignatureEd25519) Equals(other Signature) bool

func (SignatureEd25519) IsZero

func (sig SignatureEd25519) IsZero() bool

func (SignatureEd25519) KeyString

func (sig SignatureEd25519) KeyString() string

func (SignatureEd25519) String

func (sig SignatureEd25519) String() string

type SignatureSecp256k1

type SignatureSecp256k1 []byte

Implements Signature

func (SignatureSecp256k1) Bytes

func (sig SignatureSecp256k1) Bytes() []byte

func (SignatureSecp256k1) Equals

func (sig SignatureSecp256k1) Equals(other Signature) bool

func (SignatureSecp256k1) IsZero

func (sig SignatureSecp256k1) IsZero() bool

func (SignatureSecp256k1) KeyString

func (sig SignatureSecp256k1) KeyString() string

func (SignatureSecp256k1) String

func (sig SignatureSecp256k1) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL