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 }