ecdh

package module
v0.0.0-...-48726ba Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2016 License: BSD-3-Clause Imports: 5 Imported by: 157

README

ECDH

Build Status

This is a go implementation of elliptical curve diffie-hellman key exchange method. It supports the NIST curves (and any curves using the elliptic.Curve go interface) as well as djb's curve25519.

The library handles generating of keys, generating a shared secret, and the (un)marshalling of the elliptical curve keys into slices of bytes.

Warning and Disclaimer

I am not a cryptographer, this was written as part of a personal project to learn about cryptographic systems and protocols. No claims as to the security of this library are made, I would not advise using it for anything that requires any level of security. Pull requests or issues about security flaws are however still welcome.

Compatibility

Works with go 1.2 onwards.

TODO

  • Improve documentation

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ECDH

type ECDH interface {
	GenerateKey(io.Reader) (crypto.PrivateKey, crypto.PublicKey, error)
	Marshal(crypto.PublicKey) []byte
	Unmarshal([]byte) (crypto.PublicKey, bool)
	GenerateSharedSecret(crypto.PrivateKey, crypto.PublicKey) ([]byte, error)
}

The main interface for ECDH key exchange.

func NewCurve25519ECDH

func NewCurve25519ECDH() ECDH

NewCurve25519ECDH creates a new ECDH instance that uses djb's curve25519 elliptical curve.

func NewEllipticECDH

func NewEllipticECDH(curve elliptic.Curve) ECDH

NewEllipticECDH creates a new instance of ECDH with the given elliptic.Curve curve to use as the elliptical curve for elliptical curve diffie-hellman.

Jump to

Keyboard shortcuts

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