crypto

package
v0.9.22 Latest Latest
Warning

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

Go to latest
Published: May 17, 2015 License: LGPL-2.1-or-later Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MnemonicWords []string = []string{}/* 1626 elements not displayed */

Functions

func CreateAddress

func CreateAddress(b common.Address, nonce uint64) common.Address

Creates an ethereum address given the bytes and the nonce

func Decrypt added in v0.7.10

func Decrypt(prv *ecdsa.PrivateKey, ct []byte) ([]byte, error)

func DecryptKey added in v0.8.4

func DecryptKey(ks keyStorePassphrase, keyAddr common.Address, auth string) (keyBytes []byte, keyId []byte, err error)

func Ecrecover

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

func Encrypt added in v0.7.10

func Encrypt(pub *ecdsa.PublicKey, message []byte) ([]byte, error)

func FromECDSA

func FromECDSA(prv *ecdsa.PrivateKey) []byte

func FromECDSAPub

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

func GenerateKey

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

func GetKeyAddresses added in v0.8.4

func GetKeyAddresses(keysDirPath string) (addresses []common.Address, err error)

func GetKeyFile added in v0.8.4

func GetKeyFile(keysDirPath string, keyAddr common.Address) (fileContent []byte, err error)

func HexToECDSA

func HexToECDSA(hexkey string) (*ecdsa.PrivateKey, error)

HexToECDSA parses a secp256k1 private key.

func ImportBlockTestKey added in v0.9.17

func ImportBlockTestKey(privKeyBytes []byte) error

Used only by block tests.

func IndexOf added in v0.7.10

func IndexOf(slice []string, value string) int64

TODO: See if we can refactor this into a shared util lib if we need it multiple times

func LoadECDSA

func LoadECDSA(file string) (*ecdsa.PrivateKey, error)

LoadECDSA loads a secp256k1 private key from the given file. The key data is expected to be hex-encoded.

func MnemonicDecode added in v0.7.10

func MnemonicDecode(wordsar []string) string

func MnemonicEncode added in v0.7.10

func MnemonicEncode(message string) []string

func PKCS7Unpad added in v0.8.4

func PKCS7Unpad(in []byte) []byte

func PubkeyToAddress

func PubkeyToAddress(p ecdsa.PublicKey) []byte

func Ripemd160 added in v0.7.10

func Ripemd160(data []byte) []byte

func SaveECDSA

func SaveECDSA(file string, key *ecdsa.PrivateKey) error

SaveECDSA saves a secp256k1 private key to the given file with restrictive permissions. The key data is saved hex-encoded.

func Sha256 added in v0.7.10

func Sha256(data []byte) []byte

func Sha3 added in v0.7.10

func Sha3(data ...[]byte) []byte

func Sha3Hash added in v0.9.17

func Sha3Hash(data ...[]byte) (h common.Hash)

func SigToPub

func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error)

func Sign

func Sign(hash []byte, prv *ecdsa.PrivateKey) (sig []byte, err error)

func ToECDSA

func ToECDSA(prv []byte) *ecdsa.PrivateKey

New methods using proper ecdsa keys from the stdlib

func ToECDSAPub added in v0.7.10

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

func WriteKeyFile added in v0.8.4

func WriteKeyFile(addr common.Address, keysDirPath string, content []byte) (err error)

Types

type BitCurve added in v0.7.10

type BitCurve struct {
	P       *big.Int // the order of the underlying field
	N       *big.Int // the order of the base point
	B       *big.Int // the constant of the BitCurve equation
	Gx, Gy  *big.Int // (x,y) of the base point
	BitSize int      // the size of the underlying field
}

A BitCurve represents a Koblitz Curve with a=0. See http://www.hyperelliptic.org/EFD/g1p/auto-shortw.html

func S160 added in v0.7.10

func S160() *BitCurve

S160 returns a BitCurve which implements secp160k1 (see SEC 2 section 2.4.1)

func S192 added in v0.7.10

func S192() *BitCurve

S192 returns a BitCurve which implements secp192k1 (see SEC 2 section 2.5.1)

func S224 added in v0.7.10

func S224() *BitCurve

S224 returns a BitCurve which implements secp224k1 (see SEC 2 section 2.6.1)

func S256

func S256() *BitCurve

S256 returns a BitCurve which implements secp256k1 (see SEC 2 section 2.7.1)

func (*BitCurve) Add added in v0.7.10

func (BitCurve *BitCurve) Add(x1, y1, x2, y2 *big.Int) (*big.Int, *big.Int)

Add returns the sum of (x1,y1) and (x2,y2)

func (*BitCurve) Double added in v0.7.10

func (BitCurve *BitCurve) Double(x1, y1 *big.Int) (*big.Int, *big.Int)

Double returns 2*(x,y)

func (*BitCurve) GenerateKey added in v0.7.10

func (BitCurve *BitCurve) GenerateKey(rand io.Reader) (priv []byte, x, y *big.Int, err error)

TODO: double check if it is okay GenerateKey returns a public/private key pair. The private key is generated using the given reader, which must return random data.

func (*BitCurve) IsOnCurve added in v0.7.10

func (BitCurve *BitCurve) IsOnCurve(x, y *big.Int) bool

IsOnBitCurve returns true if the given (x,y) lies on the BitCurve.

func (*BitCurve) Marshal added in v0.7.10

func (BitCurve *BitCurve) Marshal(x, y *big.Int) []byte

Marshal converts a point into the form specified in section 4.3.6 of ANSI X9.62.

func (*BitCurve) Params added in v0.7.10

func (BitCurve *BitCurve) Params() *elliptic.CurveParams

func (*BitCurve) ScalarBaseMult added in v0.7.10

func (BitCurve *BitCurve) ScalarBaseMult(k []byte) (*big.Int, *big.Int)

ScalarBaseMult returns k*G, where G is the base point of the group and k is an integer in big-endian form.

func (*BitCurve) ScalarMult added in v0.7.10

func (BitCurve *BitCurve) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int)

TODO: double check if it is okay ScalarMult returns k*(Bx,By) where k is a number in big-endian form.

func (*BitCurve) Unmarshal added in v0.7.10

func (BitCurve *BitCurve) Unmarshal(data []byte) (x, y *big.Int)

Unmarshal converts a point, serialised by Marshal, into an x, y pair. On error, x = nil.

type Key added in v0.8.4

type Key struct {
	Id uuid.UUID // Version 4 "random" for unique id not derived from key data
	// to simplify lookups we also store the address
	Address common.Address
	// we only store privkey as pubkey/address can be derived from it
	// privkey in this struct is always in plaintext
	PrivateKey *ecdsa.PrivateKey
}

func GenerateNewKeyDefault added in v0.8.4

func GenerateNewKeyDefault(ks KeyStore2, rand io.Reader, auth string) (key *Key, err error)

func ImportPreSaleKey added in v0.8.4

func ImportPreSaleKey(keyStore KeyStore2, keyJSON []byte, password string) (*Key, error)

creates a Key and stores that in the given KeyStore by decrypting a presale key JSON

func NewKey added in v0.8.4

func NewKey(rand io.Reader) *Key

func NewKeyFromECDSA added in v0.9.17

func NewKeyFromECDSA(privateKeyECDSA *ecdsa.PrivateKey) *Key

func (*Key) MarshalJSON added in v0.8.4

func (k *Key) MarshalJSON() (j []byte, err error)

func (*Key) UnmarshalJSON added in v0.8.4

func (k *Key) UnmarshalJSON(j []byte) (err error)

type KeyPair added in v0.7.10

type KeyPair struct {
	PrivateKey []byte
	PublicKey  []byte
	// contains filtered or unexported fields
}

func GenerateNewKeyPair added in v0.7.10

func GenerateNewKeyPair() *KeyPair

func NewKeyPairFromSec added in v0.7.10

func NewKeyPairFromSec(seckey []byte) (*KeyPair, error)

func (*KeyPair) Address added in v0.7.10

func (k *KeyPair) Address() []byte

func (*KeyPair) AsStrings added in v0.7.10

func (k *KeyPair) AsStrings() (string, string, string, string)

func (*KeyPair) Mnemonic added in v0.7.10

func (k *KeyPair) Mnemonic() string

type KeyStore2 added in v0.8.4

type KeyStore2 interface {
	// create new key using io.Reader entropy source and optionally using auth string
	GenerateNewKey(io.Reader, string) (*Key, error)
	GetKey(common.Address, string) (*Key, error) // key from addr and auth string
	GetKeyAddresses() ([]common.Address, error)  // get all addresses
	StoreKey(*Key, string) error                 // store key optionally using auth string
	DeleteKey(common.Address, string) error      // delete key by addr and auth string
}

TODO: rename to KeyStore when replacing existing KeyStore

func NewKeyStorePassphrase added in v0.8.4

func NewKeyStorePassphrase(path string) KeyStore2

func NewKeyStorePlain added in v0.8.4

func NewKeyStorePlain(path string) KeyStore2

Directories

Path Synopsis
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012.
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012.

Jump to

Keyboard shortcuts

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