1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- namespace Org.BouncyCastle.Crypto.Parameters
- {
- public class MqvPrivateParameters
- : ICipherParameters
- {
- private readonly ECPrivateKeyParameters staticPrivateKey;
- private readonly ECPrivateKeyParameters ephemeralPrivateKey;
- private readonly ECPublicKeyParameters ephemeralPublicKey;
-
- public MqvPrivateParameters(
- ECPrivateKeyParameters staticPrivateKey,
- ECPrivateKeyParameters ephemeralPrivateKey)
- : this(staticPrivateKey, ephemeralPrivateKey, null)
- {
- }
- public MqvPrivateParameters(
- ECPrivateKeyParameters staticPrivateKey,
- ECPrivateKeyParameters ephemeralPrivateKey,
- ECPublicKeyParameters ephemeralPublicKey)
- {
- if (staticPrivateKey == null)
- throw new ArgumentNullException("staticPrivateKey");
- if (ephemeralPrivateKey == null)
- throw new ArgumentNullException("ephemeralPrivateKey");
- ECDomainParameters parameters = staticPrivateKey.Parameters;
- if (!parameters.Equals(ephemeralPrivateKey.Parameters))
- throw new ArgumentException("Static and ephemeral private keys have different domain parameters");
- if (ephemeralPublicKey == null)
- {
- ephemeralPublicKey = new ECPublicKeyParameters(
- parameters.G.Multiply(ephemeralPrivateKey.D),
- parameters);
- }
- else if (!parameters.Equals(ephemeralPublicKey.Parameters))
- {
- throw new ArgumentException("Ephemeral public key has different domain parameters");
- }
- this.staticPrivateKey = staticPrivateKey;
- this.ephemeralPrivateKey = ephemeralPrivateKey;
- this.ephemeralPublicKey = ephemeralPublicKey;
- }
- public virtual ECPrivateKeyParameters StaticPrivateKey
- {
- get { return staticPrivateKey; }
- }
- public virtual ECPrivateKeyParameters EphemeralPrivateKey
- {
- get { return ephemeralPrivateKey; }
- }
- public virtual ECPublicKeyParameters EphemeralPublicKey
- {
- get { return ephemeralPublicKey; }
- }
- }
- }
- #endif
|