示例#1
0
        public ECDiffieHellman(int keySize, KeyAgreementKeyDerivationFunction kdFunc, KeyAgreementKeyDerivationHashAlgorithm hashAlgo)
            : base(kdFunc, hashAlgo)
        {
            ECDiffieHellmanCng ecdh = new ECDiffieHellmanCng(keySize);

            ecdh.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;

            switch (hashAlgo)
            {
            case KeyAgreementKeyDerivationHashAlgorithm.SHA256:
                ecdh.HashAlgorithm = CngAlgorithm.Sha256;
                break;

            case KeyAgreementKeyDerivationHashAlgorithm.SHA384:
                ecdh.HashAlgorithm = CngAlgorithm.Sha384;
                break;

            case KeyAgreementKeyDerivationHashAlgorithm.SHA512:
                ecdh.HashAlgorithm = CngAlgorithm.Sha512;
                break;

            default:
                throw new CryptoException("Key derivation hash algorithm not supported.");
            }

            _ecdh = ecdh;
        }
示例#2
0
 public DiffieHellman(DiffieHellmanPublicKey publicKey, KeyAgreementKeyDerivationFunction kdFunc, KeyAgreementKeyDerivationHashAlgorithm kdHashAlgo)
     : base(kdFunc, kdHashAlgo)
 {
     _group      = DiffieHellmanGroupType.None;
     _keySize    = publicKey.KeySize;
     _p          = publicKey.P;
     _g          = publicKey.G;
     _privateKey = GeneratePrivateKey(_p);
 }
        public DiffieHellman(DiffieHellmanPublicKey publicKey, KeyAgreementKeyDerivationFunction kdFunc, KeyAgreementKeyDerivationHashAlgorithm kdHashAlgo)
            : base(kdFunc, kdHashAlgo)
        {
            _keySize = publicKey.KeySize;

            _p = publicKey.P;
            _g = publicKey.G;

            GeneratePrivateKey();
        }
示例#4
0
        public DiffieHellman(DiffieHellmanGroupType group, KeyAgreementKeyDerivationFunction kdFunc, KeyAgreementKeyDerivationHashAlgorithm kdHashAlgo)
            : base(kdFunc, kdHashAlgo)
        {
            _group = group;

            DiffieHellmanGroup dhg = DiffieHellmanGroup.GetGroup(_group);

            _keySize    = dhg.KeySize;
            _p          = dhg.P;
            _g          = dhg.G;
            _privateKey = GeneratePrivateKey(_p);
        }
示例#5
0
 public KeyAgreement(KeyAgreementKeyDerivationFunction kdFunc, KeyAgreementKeyDerivationHashAlgorithm kdHashAlgo)
 {
     _kdFunc     = kdFunc;
     _kdHashAlgo = kdHashAlgo;
 }