Ejemplo n.º 1
0
        public ECDiffieHellmanManaged(int keySize)
        {
            var curve = ECCurve.secp256r1;

            switch (keySize)
            {
            case 256: curve = ECCurve.secp256r1; break;

            case 384: curve = ECCurve.secp384r1; break;

            case 521: curve = ECCurve.secp521r1; break;

            default: throw new CryptographicException("ECDiffieHellmanManaged only supports 256, 384 and 521 bit key sizes.");
            }
            privateKey = new ECDiffieHellmanManagedPrivateKey(curve);
        }
Ejemplo n.º 2
0
        public override byte[] SignHash(byte[] hash)
        {
            var ephemeral = new ECDiffieHellmanManagedPrivateKey(curve);
            var n         = curve.n;
            var k         = ephemeral.D;
            var R         = ECPoint.FromBlob(ephemeral.PublicKey.ToByteArray());
            var r         = R.X % n;

            var e   = CalculateE(hash);
            var d   = D;
            var val = k.ModInverse(n);
            var s   = (val * (e + (r * d))) % n;

            using (var pw = new PacketWriter())
            {
                pw.WriteString(r.ToByteArray().Reverse().ToArray());
                pw.WriteString(s.ToByteArray().Reverse().ToArray());
                return(((MemoryStream)pw.BaseStream).ToArray());
            }
        }
Ejemplo n.º 3
0
 public void ImportParameters(ECDiffieHellmanManagedPrivateKey privateKey)
 {
     D = privateKey.D;
     q = ECPoint.FromBlob(privateKey.PublicKey.ToByteArray());
 }
Ejemplo n.º 4
0
 public ECDiffieHellmanManaged(ECCurve curve)
 {
     privateKey = new ECDiffieHellmanManagedPrivateKey(curve);
 }
Ejemplo n.º 5
0
 public ECDiffieHellmanManaged(ECDiffieHellmanManagedPrivateKey key)
 {
     privateKey = key;
 }