public byte[] GetPublicKey(byte[] privateKey, bool withZeroByte = true) { Ed25519.KeyPairFromSeed(out var publicKey, out _, privateKey); var zero = new byte[] { 0 }; var buffer = new BigEndianBuffer(); if (withZeroByte) { buffer.Write(zero); } buffer.Write(publicKey); return(buffer.ToArray()); }
private GetKeyFromSeedResponse GetChildKeyDerivation(byte[] key, byte[] chainCode, uint index) { BigEndianBuffer buffer = new BigEndianBuffer(); buffer.Write(new byte[] { 0 }); buffer.Write(key); buffer.WriteUInt(index); using (HMACSHA512 hmacSha512 = new HMACSHA512(chainCode)) { var i = hmacSha512.ComputeHash(buffer.ToArray()); var il = i.Slice(0, 32); var ir = i.Slice(32); return(new GetKeyFromSeedResponse { Key = il, ChainCode = ir }); } }