Documentation ¶
Index ¶
Constants ¶
const ( PrivKeyAminoName = "tendermint/PrivKeySecp256k1" PubKeyAminoName = "tendermint/PubKeySecp256k1" )
-------------------------------------
const PubKeySecp256k1Size = 33
PubKeySecp256k1Size is comprised of 32 bytes for one field element (the x-coordinate), plus one byte for the parity of the y-coordinate.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PrivKeySecp256k1 ¶
type PrivKeySecp256k1 [32]byte
PrivKeySecp256k1 implements PrivKey.
func GenPrivKey ¶
func GenPrivKey() PrivKeySecp256k1
GenPrivKey generates a new ECDSA private key on curve secp256k1 private key. It uses OS randomness to generate the private key.
func GenPrivKeySecp256k1 ¶
func GenPrivKeySecp256k1(secret []byte) PrivKeySecp256k1
GenPrivKeySecp256k1 hashes the secret with SHA2, and uses that 32 byte output to create the private key.
It makes sure the private key is a valid field element by setting:
c = sha256(secret) k = (c mod (n − 1)) + 1, where n = curve order.
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
Bytes marshalls the private key using amino encoding.
func (PrivKeySecp256k1) Equals ¶
func (privKey PrivKeySecp256k1) Equals(other crypto.PrivKey) bool
Equals - you probably don't need to use this. Runs in constant time based on length of the keys.
func (PrivKeySecp256k1) PubKey ¶
func (privKey PrivKeySecp256k1) PubKey() crypto.PubKey
PubKey performs the point-scalar multiplication from the privKey on the generator point to get the pubkey.
func (PrivKeySecp256k1) Sign ¶
func (privKey PrivKeySecp256k1) Sign(msg []byte) ([]byte, error)
Sign creates an ECDSA signature on curve Secp256k1, using SHA256 on the msg. The returned signature will be of the form R || S (in lower-S form).
type PubKeySecp256k1 ¶
type PubKeySecp256k1 [PubKeySecp256k1Size]byte
PubKeySecp256k1 implements crypto.PubKey. It is the compressed form of the pubkey. The first byte depends is a 0x02 byte if the y-coordinate is the lexicographically largest of the two associated with the x-coordinate. Otherwise the first byte is a 0x03. This prefix is followed with the x-coordinate.
func (PubKeySecp256k1) Address ¶
func (pubKey PubKeySecp256k1) Address() crypto.Address
Address returns a Bitcoin style addresses: RIPEMD160(SHA256(pubkey))
func (PubKeySecp256k1) Bytes ¶
func (pubKey PubKeySecp256k1) Bytes() []byte
Bytes returns the pubkey marshalled with amino encoding.
func (PubKeySecp256k1) Equals ¶
func (pubKey PubKeySecp256k1) Equals(other crypto.PubKey) bool
func (PubKeySecp256k1) String ¶
func (pubKey PubKeySecp256k1) String() string
func (PubKeySecp256k1) VerifyBytes ¶
func (pubKey PubKeySecp256k1) VerifyBytes(msg []byte, sigStr []byte) bool
VerifyBytes verifies a signature of the form R || S. It rejects signatures which are not in lower-S form.