private void CheckPrivateKey(ECKeyGenerationParameters param, BigInteger privateKey) { var point = param.DomainParameters.G.Multiply(privateKey).Normalize(); var x = point.AffineXCoord.GetEncoded().Reverse(); var y = point.AffineYCoord.GetEncoded().Reverse(); var pub = PublicKey.GetOctets(); if (!x.SequenceEqual(pub.Take(pub.Length / 2)) || !y.SequenceEqual(pub.Skip(pub.Length / 2))) { throw new CryptographicException("Закрытый ключ не соответствует открытому ключу."); } }