Inheritance: NBitcoin.BouncyCastle.Crypto.Parameters.ECKeyParameters
Ejemplo n.º 1
0
		public MqvPrivateParameters(
			ECPrivateKeyParameters	staticPrivateKey,
			ECPrivateKeyParameters	ephemeralPrivateKey,
			ECPublicKeyParameters	ephemeralPublicKey)
		{
			this.staticPrivateKey = staticPrivateKey;
			this.ephemeralPrivateKey = ephemeralPrivateKey;
			this.ephemeralPublicKey = ephemeralPublicKey;
		}
Ejemplo n.º 2
0
        public virtual void Init(
            ICipherParameters parameters)
        {
            if (parameters is ParametersWithRandom)
            {
                parameters = ((ParametersWithRandom) parameters).Parameters;
            }

            this.key = (ECPrivateKeyParameters)parameters;
        }
Ejemplo n.º 3
0
        // The ECMQV Primitive as described in SEC-1, 3.4
        private static ECPoint CalculateMqvAgreement(
            ECDomainParameters		parameters,
            ECPrivateKeyParameters	d1U,
            ECPrivateKeyParameters	d2U,
            ECPublicKeyParameters	Q2U,
            ECPublicKeyParameters	Q1V,
            ECPublicKeyParameters	Q2V)
        {
            BigInteger n = parameters.N;
            int e = (n.BitLength + 1) / 2;
            BigInteger powE = BigInteger.One.ShiftLeft(e);

            ECCurve curve = parameters.Curve;

            ECPoint[] points = new ECPoint[]{
                // The Q2U public key is optional
                ECAlgorithms.ImportPoint(curve, Q2U == null ? parameters.G.Multiply(d2U.D) : Q2U.Q),
                ECAlgorithms.ImportPoint(curve, Q1V.Q),
                ECAlgorithms.ImportPoint(curve, Q2V.Q)
            };

            curve.NormalizeAll(points);

            ECPoint q2u = points[0], q1v = points[1], q2v = points[2];

            BigInteger x = q2u.AffineXCoord.ToBigInteger();
            BigInteger xBar = x.Mod(powE);
            BigInteger Q2UBar = xBar.SetBit(e);
            BigInteger s = d1U.D.Multiply(Q2UBar).Add(d2U.D).Mod(n);

            BigInteger xPrime = q2v.AffineXCoord.ToBigInteger();
            BigInteger xPrimeBar = xPrime.Mod(powE);
            BigInteger Q2VBar = xPrimeBar.SetBit(e);

            BigInteger hs = parameters.H.Multiply(s).Mod(n);

            return ECAlgorithms.SumOfTwoMultiplies(
                q1v, Q2VBar.Multiply(hs).Mod(n), q2v, hs);
        }
Ejemplo n.º 4
0
		private ECPrivateKeyParameters ParseKey(string data)
		{
			Dictionary<string, string> values = ToDictionnary(data);

			var curveName = values["curve"].Replace("NIST", "");
			var curve = SecNamedCurves.GetByOid(curves[curveName]);
			var domain = new ECDomainParameters(curve.Curve, curve.G, new BigInteger(values["q"], 16), curve.H);
			Assert.Equal(domain.N, curve.N);

			var key = new ECPrivateKeyParameters(new BigInteger(values["x"], 16), domain);

			ECPoint pub = curve.G.Multiply(key.D);

			Assert.Equal(pub.X.ToBigInteger(), new BigInteger(values["Ux"], 16));
			Assert.Equal(pub.Y.ToBigInteger(), new BigInteger(values["Uy"], 16));

			return key;
		}
Ejemplo n.º 5
0
		private void TestSig(ECPrivateKeyParameters key, DeterministicSigTest test)
		{
			DeterministicECDSA dsa = new DeterministicECDSA(test.Hash);
			dsa.setPrivateKey(key);
			dsa.update(Encoding.UTF8.GetBytes(test.Message));
			var result = dsa.sign();

			Assert.Equal(test.K, dsa.LastK);
			Assert.Equal(test.R, dsa.LastR);

			Assert.Equal(test.S, ECDSASignature.FromDER(result).S);
		}
Ejemplo n.º 6
0
		protected bool Equals(
			ECPrivateKeyParameters other)
		{
			return d.Equals(other.d) && base.Equals(other);
		}
Ejemplo n.º 7
0
 public MqvPrivateParameters(
     ECPrivateKeyParameters staticPrivateKey,
     ECPrivateKeyParameters ephemeralPrivateKey)
     : this(staticPrivateKey, ephemeralPrivateKey, null)
 {
 }
Ejemplo n.º 8
0
 protected bool Equals(
     ECPrivateKeyParameters other)
 {
     return(d.Equals(other.d) && base.Equals(other));
 }
Ejemplo n.º 9
0
 public void setPrivateKey(ECPrivateKeyParameters ecKey)
 {
     Init(true, ecKey);
 }
Ejemplo n.º 10
0
        internal static ECPublicKeyParameters GetCorrespondingPublicKey(
            ECPrivateKeyParameters privKey)
        {
            ECDomainParameters ec = privKey.Parameters;
            ECPoint q = new FixedPointCombMultiplier().Multiply(ec.G, privKey.D);

            if (privKey.PublicKeyParamSet != null)
            {
                return new ECPublicKeyParameters(privKey.AlgorithmName, q, privKey.PublicKeyParamSet);
            }

            return new ECPublicKeyParameters(privKey.AlgorithmName, q, ec);
        }
Ejemplo n.º 11
0
		public MqvPrivateParameters(
			ECPrivateKeyParameters	staticPrivateKey,
			ECPrivateKeyParameters	ephemeralPrivateKey)
			: this(staticPrivateKey, ephemeralPrivateKey, null)
		{
		}
Ejemplo n.º 12
0
		public void setPrivateKey(ECPrivateKeyParameters ecKey)
		{
			this.x = ecKey.D;
			this.q = ecKey.Parameters.N;
			this.curve = ecKey.Parameters;

			qlen = q.BitLength;
			if(q.SignValue <= 0 || qlen < 8)
			{
				throw new InvalidOperationException(
						"bad group order: " + q);

			}
			rolen = (qlen + 7) >> 3;
			rlen = rolen * 8;
			bx = int2octets(x);
		}