crypto

package module
v2.0.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2018 License: MIT Imports: 20 Imported by: 0

README

go-libp2p-crypto

standard-readme compliant GoDoc Coverage Status Build Status

Various cryptographic utilities used by ipfs

Table of Contents

Install

go get github.com/libp2p/go-libp2p-crypto

Usage

Go to https://godoc.org/github.com/libp2p/go-libp2p-crypto.

Contribute

Feel free to join in. All welcome. Open an issue!

Check out our contributing document for more information on how we work, and about contributing in general. Please be aware that all interactions related to libp2p are subject to the IPFS Code of Conduct.

Small note: If editing the README, please conform to the standard-readme specification.

Want to hack on IPFS?

License

MIT © 2016 Jeromy Johnson

Documentation

Overview

Package crypto implements various cryptographic utilities used by ipfs. This includes a Public and Private key interface and an RSA key implementation that satisfies it.

Index

Constants

View Source
const (
	RSA = iota
	Ed25519
	Secp256k1
)

Variables

View Source
var ErrBadKeyType = errors.New("invalid or unsupported key type")
View Source
var KeyTypes = []int{
	RSA,
	Ed25519,
	Secp256k1,
}

Functions

func ConfigDecodeKey

func ConfigDecodeKey(b string) ([]byte, error)

ConfigDecodeKey decodes from b64 (for config file), and unmarshals.

func ConfigEncodeKey

func ConfigEncodeKey(b []byte) string

ConfigEncodeKey encodes to b64 (for config file), and marshals.

func GenerateEd25519Key added in v1.1.0

func GenerateEd25519Key(src io.Reader) (PrivKey, PubKey, error)

func GenerateKeyPair

func GenerateKeyPair(typ, bits int) (PrivKey, PubKey, error)

func GenerateKeyPairWithReader

func GenerateKeyPairWithReader(typ, bits int, src io.Reader) (PrivKey, PubKey, error)

Generates a keypair of the given type and bitsize

func GenerateSecp256k1Key added in v1.4.0

func GenerateSecp256k1Key(src io.Reader) (PrivKey, PubKey, error)

func KeyEqual

func KeyEqual(k1, k2 Key) bool

KeyEqual checks whether two

func KeyStretcher

func KeyStretcher(cipherType string, hashType string, secret []byte) (StretchedKeys, StretchedKeys)

Generates a set of keys for each party by stretching the shared key. (myIV, theirIV, myCipherKey, theirCipherKey, myMACKey, theirMACKey)

func MarshalPrivateKey

func MarshalPrivateKey(k PrivKey) ([]byte, error)

MarshalPrivateKey converts a key object into its protobuf serialized form.

func MarshalPublicKey

func MarshalPublicKey(k PubKey) ([]byte, error)

MarshalPublicKey converts a public key object into a protobuf serialized public key

func MarshalRsaPrivateKey

func MarshalRsaPrivateKey(k *RsaPrivateKey) []byte

func MarshalRsaPublicKey

func MarshalRsaPublicKey(k *RsaPublicKey) ([]byte, error)

Types

type Ed25519PrivateKey added in v1.1.0

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

func (*Ed25519PrivateKey) Bytes added in v1.1.0

func (k *Ed25519PrivateKey) Bytes() ([]byte, error)

func (*Ed25519PrivateKey) Equals added in v1.1.0

func (k *Ed25519PrivateKey) Equals(o Key) bool

func (*Ed25519PrivateKey) GetPublic added in v1.1.0

func (k *Ed25519PrivateKey) GetPublic() PubKey

func (*Ed25519PrivateKey) Raw

func (k *Ed25519PrivateKey) Raw() ([]byte, error)

func (*Ed25519PrivateKey) Sign added in v1.1.0

func (k *Ed25519PrivateKey) Sign(msg []byte) ([]byte, error)

func (*Ed25519PrivateKey) ToCurve25519 added in v1.4.0

func (k *Ed25519PrivateKey) ToCurve25519() *[32]byte

func (*Ed25519PrivateKey) Type

func (k *Ed25519PrivateKey) Type() pb.KeyType

type Ed25519PublicKey added in v1.1.0

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

func (*Ed25519PublicKey) Bytes added in v1.1.0

func (k *Ed25519PublicKey) Bytes() ([]byte, error)

func (*Ed25519PublicKey) Equals added in v1.1.0

func (k *Ed25519PublicKey) Equals(o Key) bool

func (*Ed25519PublicKey) Raw

func (k *Ed25519PublicKey) Raw() ([]byte, error)

func (*Ed25519PublicKey) ToCurve25519 added in v1.4.0

func (k *Ed25519PublicKey) ToCurve25519() (*[32]byte, error)

func (*Ed25519PublicKey) Type

func (k *Ed25519PublicKey) Type() pb.KeyType

func (*Ed25519PublicKey) Verify added in v1.1.0

func (k *Ed25519PublicKey) Verify(data []byte, sig []byte) (bool, error)

type GenSharedKey

type GenSharedKey func([]byte) ([]byte, error)

Given a public key, generates the shared key.

func GenerateEKeyPair

func GenerateEKeyPair(curveName string) ([]byte, GenSharedKey, error)

Generates an ephemeral public key and returns a function that will compute the shared secret key. Used in the identify module.

Focuses only on ECDH now, but can be made more general in the future.

type Key

type Key interface {
	// Bytes returns a serialized, storeable representation of this key
	// DEPRECATED in favor of Marshal / Unmarshal
	Bytes() ([]byte, error)

	// Equals checks whether two PubKeys are the same
	Equals(Key) bool

	// Raw returns the raw bytes of the key (not wrapped in the
	// libp2p-crypto protobuf).
	//
	// This function is the inverse of {Priv,Pub}KeyUnmarshaler.
	Raw() ([]byte, error)

	// Type returns the protobof key type.
	Type() pb.KeyType
}

Key represents a crypto key that can be compared to another key

type PrivKey

type PrivKey interface {
	Key

	// Cryptographically sign the given bytes
	Sign([]byte) ([]byte, error)

	// Return a public key paired with this private key
	GetPublic() PubKey
}

PrivKey represents a private key that can be used to generate a public key, sign data, and decrypt data that was encrypted with a public key

func UnmarshalEd25519PrivateKey added in v1.1.0

func UnmarshalEd25519PrivateKey(data []byte) (PrivKey, error)

func UnmarshalPrivateKey

func UnmarshalPrivateKey(data []byte) (PrivKey, error)

UnmarshalPrivateKey converts a protobuf serialized private key into its representative object

func UnmarshalRsaPrivateKey

func UnmarshalRsaPrivateKey(b []byte) (PrivKey, error)

func UnmarshalSecp256k1PrivateKey added in v1.4.0

func UnmarshalSecp256k1PrivateKey(data []byte) (PrivKey, error)

type PrivKeyUnmarshaller added in v1.6.0

type PrivKeyUnmarshaller func(data []byte) (PrivKey, error)

PrivKeyUnmarshaller is a func that creates a PrivKey from a given slice of bytes

type PubKey

type PubKey interface {
	Key

	// Verify that 'sig' is the signed hash of 'data'
	Verify(data []byte, sig []byte) (bool, error)
}

func UnmarshalEd25519PublicKey added in v1.5.0

func UnmarshalEd25519PublicKey(data []byte) (PubKey, error)

func UnmarshalPublicKey

func UnmarshalPublicKey(data []byte) (PubKey, error)

UnmarshalPublicKey converts a protobuf serialized public key into its representative object

func UnmarshalRsaPublicKey

func UnmarshalRsaPublicKey(b []byte) (PubKey, error)

func UnmarshalSecp256k1PublicKey added in v1.4.0

func UnmarshalSecp256k1PublicKey(data []byte) (PubKey, error)

type PubKeyUnmarshaller added in v1.6.0

type PubKeyUnmarshaller func(data []byte) (PubKey, error)

PubKeyUnmarshaller is a func that creates a PubKey from a given slice of bytes

type RsaPrivateKey

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

func (*RsaPrivateKey) Bytes

func (sk *RsaPrivateKey) Bytes() ([]byte, error)

func (*RsaPrivateKey) Decrypt

func (sk *RsaPrivateKey) Decrypt(b []byte) ([]byte, error)

func (*RsaPrivateKey) Equals

func (sk *RsaPrivateKey) Equals(k Key) bool

Equals checks whether this key is equal to another

func (*RsaPrivateKey) GetPublic

func (sk *RsaPrivateKey) GetPublic() PubKey

func (*RsaPrivateKey) Raw

func (sk *RsaPrivateKey) Raw() ([]byte, error)

func (*RsaPrivateKey) Sign

func (sk *RsaPrivateKey) Sign(message []byte) ([]byte, error)

func (*RsaPrivateKey) Type

func (sk *RsaPrivateKey) Type() pb.KeyType

type RsaPublicKey

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

func (*RsaPublicKey) Bytes

func (pk *RsaPublicKey) Bytes() ([]byte, error)

func (*RsaPublicKey) Encrypt

func (pk *RsaPublicKey) Encrypt(b []byte) ([]byte, error)

func (*RsaPublicKey) Equals

func (pk *RsaPublicKey) Equals(k Key) bool

Equals checks whether this key is equal to another

func (*RsaPublicKey) Raw

func (pk *RsaPublicKey) Raw() ([]byte, error)

func (*RsaPublicKey) Type

func (pk *RsaPublicKey) Type() pb.KeyType

func (*RsaPublicKey) Verify

func (pk *RsaPublicKey) Verify(data, sig []byte) (bool, error)

type Secp256k1PrivateKey added in v1.4.0

type Secp256k1PrivateKey btcec.PrivateKey

func (*Secp256k1PrivateKey) Bytes added in v1.4.0

func (sk *Secp256k1PrivateKey) Bytes() ([]byte, error)

func (*Secp256k1PrivateKey) Equals added in v1.4.0

func (k *Secp256k1PrivateKey) Equals(o Key) bool

func (*Secp256k1PrivateKey) GetPublic added in v1.4.0

func (k *Secp256k1PrivateKey) GetPublic() PubKey

func (*Secp256k1PrivateKey) Raw

func (k *Secp256k1PrivateKey) Raw() ([]byte, error)

func (*Secp256k1PrivateKey) Sign added in v1.4.0

func (k *Secp256k1PrivateKey) Sign(data []byte) ([]byte, error)

func (*Secp256k1PrivateKey) Type

func (sk *Secp256k1PrivateKey) Type() pb.KeyType

type Secp256k1PublicKey added in v1.4.0

type Secp256k1PublicKey btcec.PublicKey

func (*Secp256k1PublicKey) Bytes added in v1.4.0

func (sk *Secp256k1PublicKey) Bytes() ([]byte, error)

func (*Secp256k1PublicKey) Equals added in v1.4.0

func (k *Secp256k1PublicKey) Equals(o Key) bool

func (*Secp256k1PublicKey) Raw

func (k *Secp256k1PublicKey) Raw() ([]byte, error)

func (*Secp256k1PublicKey) Type

func (sk *Secp256k1PublicKey) Type() pb.KeyType

func (*Secp256k1PublicKey) Verify added in v1.4.0

func (k *Secp256k1PublicKey) Verify(data []byte, sigStr []byte) (bool, error)

type StretchedKeys

type StretchedKeys struct {
	IV        []byte
	MacKey    []byte
	CipherKey []byte
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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