crypto

package
v0.0.0-...-f672fcd Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidBLSSignature = errors.New("invalid BLS Signature")
)
View Source
var S256 = btcec.S256()

S256 is the secp256k1 elliptic curve

Functions

func BLSSecretKeyToPubkeyBytes

func BLSSecretKeyToPubkeyBytes(key *bls_sig.SecretKey) ([]byte, error)

BLSSecretKeyToPubkeyBytes returns bytes of BLS Public Key corresponding to the given secret key

func BytesToBLSPublicKey

func BytesToBLSPublicKey(input string) (*bls_sig.PublicKey, error)

BytesToBLSPublicKey decodes given hex string and returns BLS Public Key

func BytesToBLSSecretKey

func BytesToBLSSecretKey(input []byte) (*bls_sig.SecretKey, error)

BytesToECDSAPrivateKey reads the input byte array and constructs a private key if possible

func BytesToECDSAPrivateKey

func BytesToECDSAPrivateKey(input []byte) (*ecdsa.PrivateKey, error)

BytesToECDSAPrivateKey reads the input byte array and constructs a private key if possible

func CreateAddress

func CreateAddress(addr types.Address, nonce uint64) types.Address

CreateAddress creates an Ethereum address.

func CreateAddress2

func CreateAddress2(addr types.Address, salt [32]byte, inithash []byte) types.Address

CreateAddress2 creates an Ethereum address following the CREATE2 Opcode.

func Ecrecover

func Ecrecover(hash, sig []byte) ([]byte, error)

func GenerateAndEncodeBLSSecretKey

func GenerateAndEncodeBLSSecretKey() (*bls_sig.SecretKey, []byte, error)

func GenerateAndEncodeECDSAPrivateKey

func GenerateAndEncodeECDSAPrivateKey() (*ecdsa.PrivateKey, []byte, error)

GenerateAndEncodeECDSAPrivateKey returns a newly generated private key and the Base64 encoding of that private key

func GenerateBLSKey

func GenerateBLSKey() (*bls_sig.SecretKey, error)

GenerateBLSKey generates a new BLS key

func GenerateECDSAKey

func GenerateECDSAKey() (*ecdsa.PrivateKey, error)

GenerateECDSAKey generates a new key based on the secp256k1 elliptic curve.

func GenerateOrReadPrivateKey

func GenerateOrReadPrivateKey(path string) (*ecdsa.PrivateKey, error)

GenerateOrReadPrivateKey generates a private key at the specified path, or reads it if a key file is present

func GetAddressFromKey

func GetAddressFromKey(key goCrypto.PrivateKey) (types.Address, error)

GetAddressFromKey extracts an address from the private key

func Keccak256

func Keccak256(v ...[]byte) []byte

Keccak256 calculates the Keccak256

func Keccak256Hash

func Keccak256Hash(v ...[]byte) (hash types.Hash)

Keccak256Hash calculates and returns the Keccak256 hash of the input data, converting it to an internal Hash data structure.

func MarshalECDSAPrivateKey

func MarshalECDSAPrivateKey(priv *ecdsa.PrivateKey) ([]byte, error)

MarshalECDSAPrivateKey serializes the private key's D value to a []byte

func MarshalPublicKey

func MarshalPublicKey(pub *ecdsa.PublicKey) []byte

MarshalPublicKey marshals a public key on the secp256k1 elliptic curve.

func ParseECDSAPrivateKey

func ParseECDSAPrivateKey(buf []byte) (*ecdsa.PrivateKey, error)

func ParsePublicKey

func ParsePublicKey(buf []byte) (*ecdsa.PublicKey, error)

ParsePublicKey parses bytes into a public key on the secp256k1 elliptic curve.

func PubKeyToAddress

func PubKeyToAddress(pub *ecdsa.PublicKey) types.Address

PubKeyToAddress returns the Ethereum address of a public key

func ReadConsensusKey

func ReadConsensusKey(manager secrets.SecretsManager) (*ecdsa.PrivateKey, error)

func RecoverPubkey

func RecoverPubkey(signature, hash []byte) (*ecdsa.PublicKey, error)

RecoverPubkey verifies the compact signature "signature" of "hash" for the secp256k1 curve.

func Sign

func Sign(priv *ecdsa.PrivateKey, hash []byte) ([]byte, error)

Sign produces a compact signature of the data in hash with the given private key on the secp256k1 curve.

func SignByBLS

func SignByBLS(prv *bls_sig.SecretKey, msg []byte) ([]byte, error)

SignByBLS signs the given data by BLS

func UnmarshalBLSPublicKey

func UnmarshalBLSPublicKey(input []byte) (*bls_sig.PublicKey, error)

UnmarshalBLSPublicKey unmarshal bytes data into BLS Public Key

func UnmarshalBLSSignature

func UnmarshalBLSSignature(input []byte) (*bls_sig.Signature, error)

UnmarshalBLSSignature unmarshal bytes data into BLS Signature

func ValidateSignatureValues

func ValidateSignatureValues(v, r, s *big.Int, isHomestead bool) bool

ValidateSignatureValues checks if the signature values are correct

func VerifyBLSSignature

func VerifyBLSSignature(pubkey *bls_sig.PublicKey, sig *bls_sig.Signature, message []byte) error

VerifyBLSSignature verifies the given signature from Public Key and original message

func VerifyBLSSignatureFromBytes

func VerifyBLSSignatureFromBytes(rawPubkey, rawSig, message []byte) error

VerifyBLSSignatureFromBytes verifies BLS Signature from BLS PublicKey, signature, and original message in bytes

Types

type EIP155Signer

type EIP155Signer struct {
	// contains filtered or unexported fields
}

func NewEIP155Signer

func NewEIP155Signer(chainID uint64, isHomestead bool) *EIP155Signer

NewEIP155Signer returns a new EIP155Signer object

func (*EIP155Signer) Hash

func (e *EIP155Signer) Hash(tx *types.Transaction) types.Hash

Hash is a wrapper function that calls calcTxHash with the EIP155Signer's chainID

func (*EIP155Signer) Sender

func (e *EIP155Signer) Sender(tx *types.Transaction) (types.Address, error)

Sender returns the transaction sender

func (*EIP155Signer) SignTx

func (e *EIP155Signer) SignTx(
	tx *types.Transaction,
	privateKey *ecdsa.PrivateKey,
) (*types.Transaction, error)

SignTx signs the transaction using the passed in private key

type FrontierSigner

type FrontierSigner struct {
	// contains filtered or unexported fields
}

FrontierSigner implements tx signer interface

func NewFrontierSigner

func NewFrontierSigner(isHomestead bool) *FrontierSigner

NewFrontierSigner is the constructor of FrontierSigner

func (*FrontierSigner) Hash

func (f *FrontierSigner) Hash(tx *types.Transaction) types.Hash

Hash is a wrapper function for the calcTxHash, with chainID 0

func (*FrontierSigner) Sender

func (f *FrontierSigner) Sender(tx *types.Transaction) (types.Address, error)

Sender decodes the signature and returns the sender of the transaction

func (*FrontierSigner) SignTx

func (f *FrontierSigner) SignTx(
	tx *types.Transaction,
	privateKey *ecdsa.PrivateKey,
) (*types.Transaction, error)

SignTx signs the transaction using the passed in private key

type KeccakState

type KeccakState interface {
	hash.Hash
	Read([]byte) (int, error)
}

KeccakState wraps sha3.state. In addition to the usual hash methods, it also supports Read to get a variable amount of data from the hash state. Read is faster than Sum because it doesn't copy the internal state, but also modifies the internal state.

func NewKeccakState

func NewKeccakState() KeccakState

NewKeccakState creates a new KeccakState

type KeyType

type KeyType string
const (
	KeyECDSA KeyType = "ecdsa"
	KeyBLS   KeyType = "bls"
)

type LondonSigner

type LondonSigner struct {
	// contains filtered or unexported fields
}

LondonSigner implements signer for EIP-1559

func NewLondonSigner

func NewLondonSigner(chainID uint64, isHomestead bool, fallbackSigner TxSigner) *LondonSigner

NewLondonSigner returns a new LondonSigner object

func (*LondonSigner) Hash

func (e *LondonSigner) Hash(tx *types.Transaction) types.Hash

Hash is a wrapper function that calls calcTxHash with the LondonSigner's fields

func (*LondonSigner) Sender

func (e *LondonSigner) Sender(tx *types.Transaction) (types.Address, error)

Sender returns the transaction sender

func (*LondonSigner) SignTx

SignTx signs the transaction using the passed in private key

type TxSigner

type TxSigner interface {
	// Hash returns the hash of the transaction
	Hash(tx *types.Transaction) types.Hash

	// Sender returns the sender of the transaction
	Sender(tx *types.Transaction) (types.Address, error)

	// SignTx signs a transaction
	SignTx(tx *types.Transaction, priv *ecdsa.PrivateKey) (*types.Transaction, error)
}

TxSigner is a utility interface used to recover data from a transaction

func NewSigner

func NewSigner(forks chain.ForksInTime, chainID uint64) TxSigner

NewSigner creates a new signer object (EIP155 or FrontierSigner)

Jump to

Keyboard shortcuts

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