// NOTE: secret should be the output of a KDF like bcrypt, // if it's derived from user input. func GenPrivKeyEd25519FromSecret(secret []byte) PrivKeyEd25519 { privKey32 := Sha256(secret) // Not Ripemd160 because we want 32 bytes. privKeyBytes := new([64]byte) copy(privKeyBytes[:32], privKey32) ed25519.MakePublicKey(privKeyBytes) return PrivKeyEd25519(*privKeyBytes) }
func GenPrivAccountFromKey(privKeyBytes [64]byte) *PrivAccount { pubKeyBytes := ed25519.MakePublicKey(&privKeyBytes) pubKey := PubKeyEd25519(pubKeyBytes[:]) privKey := PrivKeyEd25519(privKeyBytes[:]) return &PrivAccount{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, } }
// Generates a new account with private key. func GenPrivAccount() *PrivAccount { privKeyBytes := new([64]byte) copy(privKeyBytes[:32], CRandBytes(32)) pubKeyBytes := ed25519.MakePublicKey(privKeyBytes) pubKey := PubKeyEd25519(*pubKeyBytes) privKey := PrivKeyEd25519(*privKeyBytes) return &PrivAccount{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, } }
// Generates a new account with private key from SHA256 hash of a secret func GenPrivAccountFromSecret(secret string) *PrivAccount { privKey32 := GenPrivKeyBytesFromSecret(secret) privKeyBytes := new([64]byte) copy(privKeyBytes[:32], privKey32) pubKeyBytes := ed25519.MakePublicKey(privKeyBytes) pubKey := PubKeyEd25519(*pubKeyBytes) privKey := PrivKeyEd25519(*privKeyBytes) return &PrivAccount{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, } }
// Generates a new account with private key from SHA256 hash of a secret func GenPrivAccountFromSecret(secret []byte) *PrivAccount { privKey32 := binary.BinarySha256(secret) privKeyBytes := new([64]byte) copy(privKeyBytes[:32], privKey32) pubKeyBytes := ed25519.MakePublicKey(privKeyBytes) pubKey := PubKeyEd25519(pubKeyBytes[:]) privKey := PrivKeyEd25519(privKeyBytes[:]) return &PrivAccount{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, } }
func GenPrivAccountFromPrivKeyBytes(privKeyBytes []byte) *PrivAccount { if len(privKeyBytes) != 64 { PanicSanity(Fmt("Expected 64 bytes but got %v", len(privKeyBytes))) } var privKeyArray [64]byte copy(privKeyArray[:], privKeyBytes) pubKeyBytes := ed25519.MakePublicKey(&privKeyArray) pubKey := PubKeyEd25519(*pubKeyBytes) privKey := PrivKeyEd25519(privKeyArray) return &PrivAccount{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, } }
// Generates a new validator with private key. func GenPrivValidator() *PrivValidator { privKeyBytes := new([64]byte) copy(privKeyBytes[:32], CRandBytes(32)) pubKeyBytes := ed25519.MakePublicKey(privKeyBytes) pubKey := acm.PubKeyEd25519(*pubKeyBytes) privKey := acm.PrivKeyEd25519(*privKeyBytes) return &PrivValidator{ Address: pubKey.Address(), PubKey: pubKey, PrivKey: privKey, LastHeight: 0, LastRound: 0, LastStep: stepNone, filePath: "", } }
func GenPrivKeyEd25519() PrivKeyEd25519 { privKeyBytes := new([64]byte) copy(privKeyBytes[:32], CRandBytes(32)) ed25519.MakePublicKey(privKeyBytes) return PrivKeyEd25519(*privKeyBytes) }