secp256k1

package
v0.43.0-beta1 Latest Latest
Warning

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

Go to latest
Published: May 11, 2021 License: Apache-2.0 Imports: 16 Imported by: 1,425

Documentation

Index

Constants

View Source
const (
	PrivKeySize = 32

	PrivKeyName = "tendermint/PrivKeySecp256k1"
	PubKeyName  = "tendermint/PubKeySecp256k1"
)
View Source
const PubKeySize = 33

PubKeySize is comprised of 32 bytes for one field element (the x-coordinate), plus one byte for the parity of the y-coordinate.

Variables

View Source
var (
	ErrInvalidLengthKeys        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowKeys          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupKeys = fmt.Errorf("proto: unexpected end of group")
)

Functions

This section is empty.

Types

type PrivKey

type PrivKey struct {
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

PrivKey defines a secp256k1 private key.

func GenPrivKey

func GenPrivKey() *PrivKey

GenPrivKey generates a new ECDSA private key on curve secp256k1 private key. It uses OS randomness to generate the private key.

func GenPrivKeyFromSecret

func GenPrivKeyFromSecret(secret []byte) *PrivKey

GenPrivKeyFromSecret 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 (*PrivKey) Bytes

func (privKey *PrivKey) Bytes() []byte

Bytes returns the byte representation of the Private Key.

func (*PrivKey) Descriptor

func (*PrivKey) Descriptor() ([]byte, []int)

func (*PrivKey) Equals

func (privKey *PrivKey) Equals(other cryptotypes.LedgerPrivKey) bool

Equals - you probably don't need to use this. Runs in constant time based on length of the

func (*PrivKey) GetKey

func (m *PrivKey) GetKey() []byte

func (*PrivKey) Marshal

func (m *PrivKey) Marshal() (dAtA []byte, err error)

func (PrivKey) MarshalAmino

func (privKey PrivKey) MarshalAmino() ([]byte, error)

MarshalAmino overrides Amino binary marshalling.

func (PrivKey) MarshalAminoJSON

func (privKey PrivKey) MarshalAminoJSON() ([]byte, error)

MarshalAminoJSON overrides Amino JSON marshalling.

func (*PrivKey) MarshalTo

func (m *PrivKey) MarshalTo(dAtA []byte) (int, error)

func (*PrivKey) MarshalToSizedBuffer

func (m *PrivKey) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*PrivKey) ProtoMessage

func (*PrivKey) ProtoMessage()

func (*PrivKey) PubKey

func (privKey *PrivKey) PubKey() cryptotypes.PubKey

PubKey performs the point-scalar multiplication from the privKey on the generator point to get the pubkey.

func (*PrivKey) Reset

func (m *PrivKey) Reset()

func (*PrivKey) Sign

func (privKey *PrivKey) 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).

func (*PrivKey) Size

func (m *PrivKey) Size() (n int)

func (*PrivKey) String

func (m *PrivKey) String() string

func (*PrivKey) Type

func (privKey *PrivKey) Type() string

func (*PrivKey) Unmarshal

func (m *PrivKey) Unmarshal(dAtA []byte) error

func (*PrivKey) UnmarshalAmino

func (privKey *PrivKey) UnmarshalAmino(bz []byte) error

UnmarshalAmino overrides Amino binary marshalling.

func (*PrivKey) UnmarshalAminoJSON

func (privKey *PrivKey) UnmarshalAminoJSON(bz []byte) error

UnmarshalAminoJSON overrides Amino JSON marshalling.

func (*PrivKey) XXX_DiscardUnknown

func (m *PrivKey) XXX_DiscardUnknown()

func (*PrivKey) XXX_Marshal

func (m *PrivKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PrivKey) XXX_Merge

func (m *PrivKey) XXX_Merge(src proto.Message)

func (*PrivKey) XXX_Size

func (m *PrivKey) XXX_Size() int

func (*PrivKey) XXX_Unmarshal

func (m *PrivKey) XXX_Unmarshal(b []byte) error

type PubKey

type PubKey struct {
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

PubKey defines a secp256k1 public key Key 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 (*PubKey) Address

func (pubKey *PubKey) Address() crypto.Address

Address returns a Bitcoin style addresses: RIPEMD160(SHA256(pubkey))

func (*PubKey) Bytes

func (pubKey *PubKey) Bytes() []byte

Bytes returns the pubkey byte format.

func (*PubKey) Descriptor

func (*PubKey) Descriptor() ([]byte, []int)

func (*PubKey) Equals

func (pubKey *PubKey) Equals(other cryptotypes.PubKey) bool

func (*PubKey) GetKey

func (m *PubKey) GetKey() []byte

func (*PubKey) Marshal

func (m *PubKey) Marshal() (dAtA []byte, err error)

func (PubKey) MarshalAmino

func (pubKey PubKey) MarshalAmino() ([]byte, error)

MarshalAmino overrides Amino binary marshalling.

func (PubKey) MarshalAminoJSON

func (pubKey PubKey) MarshalAminoJSON() ([]byte, error)

MarshalAminoJSON overrides Amino JSON marshalling.

func (*PubKey) MarshalTo

func (m *PubKey) MarshalTo(dAtA []byte) (int, error)

func (*PubKey) MarshalToSizedBuffer

func (m *PubKey) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*PubKey) ProtoMessage

func (*PubKey) ProtoMessage()

func (*PubKey) Reset

func (m *PubKey) Reset()

func (*PubKey) Size

func (m *PubKey) Size() (n int)

func (*PubKey) String

func (pubKey *PubKey) String() string

func (*PubKey) Type

func (pubKey *PubKey) Type() string

func (*PubKey) Unmarshal

func (m *PubKey) Unmarshal(dAtA []byte) error

func (*PubKey) UnmarshalAmino

func (pubKey *PubKey) UnmarshalAmino(bz []byte) error

UnmarshalAmino overrides Amino binary marshalling.

func (*PubKey) UnmarshalAminoJSON

func (pubKey *PubKey) UnmarshalAminoJSON(bz []byte) error

UnmarshalAminoJSON overrides Amino JSON marshalling.

func (*PubKey) VerifySignature

func (pubKey *PubKey) VerifySignature(msg []byte, sigStr []byte) bool

VerifyBytes verifies a signature of the form R || S. It rejects signatures which are not in lower-S form.

func (*PubKey) XXX_DiscardUnknown

func (m *PubKey) XXX_DiscardUnknown()

func (*PubKey) XXX_Marshal

func (m *PubKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PubKey) XXX_Merge

func (m *PubKey) XXX_Merge(src proto.Message)

func (*PubKey) XXX_Size

func (m *PubKey) XXX_Size() int

func (*PubKey) XXX_Unmarshal

func (m *PubKey) XXX_Unmarshal(b []byte) error

Directories

Path Synopsis
internal
secp256k1
nolint:gocritic Package secp256k1 wraps the bitcoin secp256k1 C library.
nolint:gocritic Package secp256k1 wraps the bitcoin secp256k1 C library.

Jump to

Keyboard shortcuts

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