31 lines
606 B
Go
31 lines
606 B
Go
package node
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"log"
|
|
|
|
"golang.org/x/crypto/nacl/box"
|
|
"golang.org/x/crypto/nacl/sign"
|
|
)
|
|
|
|
type cryptoKeys struct {
|
|
PubKey []byte
|
|
PrivKey []byte
|
|
PubSignKey []byte
|
|
PrivSignKey []byte
|
|
}
|
|
|
|
func generateKeys() cryptoKeys {
|
|
pubKey, privKey, err := box.GenerateKey(rand.Reader)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate encryption keys: %v", err)
|
|
}
|
|
|
|
pubSignKey, privSignKey, err := sign.GenerateKey(rand.Reader)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate signing keys: %v", err)
|
|
}
|
|
|
|
return cryptoKeys{pubKey[:], privKey[:], pubSignKey[:], privSignKey[:]}
|
|
}
|