private void AddEdchSessionInfo(byte[] si, ISecureRandom random) { ECDHPublicKeyParameters ephemeralPublicKey; var engine = new RFC6637ECDHEngine(); engine.InitForEncryption(random, (ECDHPublicKeyParameters)_pubKey.GetKey(), _pubKey.GetFingerprint(), out ephemeralPublicKey); var encSession = engine.ProcessBlock(si, 0, si.Length); _data = new[] { new BigInteger(1, ephemeralPublicKey.Q.GetEncoded()), }; _extraData = encSession; }
/// <summary> /// Inits the verification process. /// </summary> /// <param name="pubKey">The pub key.</param> /// <exception cref="PgpException">invalid key.</exception> public void InitVerify(IPgpPublicKey pubKey) { _lastb = 0; if (_sig == null) { _sig = SignerUtilities.GetSigner(PgpUtilities.GetSignatureName(_sigPck.KeyAlgorithm, _sigPck.HashAlgorithm)); } try { _sig.Init(false, pubKey.GetKey()); } catch (InvalidKeyException e) { throw new PgpException("invalid key.", e); } }