public Key(byte[] seed, int index) { var encoder = new ASCIIEncoder(); var secret = encoder.DecodeData(Ed25519Curve); // var seedBytes = HexByteConvertorExtensions.HexToByteArrayInternal(seed); var array = new HMACSHA512(secret).ComputeHash(seed); var key = array.SafeSubarray(0, 32); var chainCode = array.SafeSubarray(32, 32); var derivedPath = unchecked ((uint)index + HardenedOffset); derivedPath = HexByteConvertorExtensions.ReverseBytes(derivedPath); var dpBytes = BitConverter.GetBytes(derivedPath); var data = new byte[] { 0 }.Concat(key, dpBytes); var array2 = new HMACSHA512(chainCode).ComputeHash(data); var key2 = array2.SafeSubarray(0, 32); var keyPair = PublicKeyAuth.GenerateKeyPair(key2); PrivateKey = keyPair.PrivateKey; PublicKey = keyPair.PublicKey; }