up
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user