github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/helpers/ed25519/ed25519.go (about)

     1  package ed25519
     2  
     3  import (
     4  	"bytes"
     5  	"crypto/rand"
     6  	"io"
     7  
     8  	e "github.com/agl/ed25519"
     9  )
    10  
    11  // GetPublicKeyFromPrivate takes an Ed25519 private key and generates the public
    12  // key compartment from it.
    13  func GetPublicKeyFromPrivate(privateKey [e.PrivateKeySize]byte) [e.PublicKeySize]byte {
    14  	buf := make([]byte, len(privateKey))
    15  	copy(buf, privateKey[0:e.PrivateKeySize])
    16  	keyProvidingReader := bytes.NewBuffer([]byte(buf))
    17  	pub, _, _ := e.GenerateKey(keyProvidingReader)
    18  	return *pub
    19  }
    20  
    21  // GenerateKey creates ed25519 keys with the standard rand.Reader.
    22  func GenerateKey() (publicKey *[e.PublicKeySize]byte, privateKey *[e.PrivateKeySize]byte, err error) {
    23  	return GenerateKeyFrom(rand.Reader)
    24  }
    25  
    26  // GenerateKeyFrom creates ed25519 keys and gets its entropy from the passed rand reader.
    27  func GenerateKeyFrom(rand io.Reader) (publicKey *[e.PublicKeySize]byte, privateKey *[e.PrivateKeySize]byte, err error) {
    28  	return e.GenerateKey(rand)
    29  }