Examples of ECFieldElement


Examples of org.bouncycastle.math.ec.ECFieldElement

    private static X9IntegerConverter converter = new X9IntegerConverter();

    private static BigInteger trace(ECFieldElement fe)
    {
        ECFieldElement t = fe;
        for (int i = 0; i < fe.getFieldSize() - 1; i++)
        {
            t = t.square().add(fe);
        }
        return t.toBigInteger();
    }
View Full Code Here

Examples of org.bouncycastle.math.ec.ECFieldElement

     *         <code>null</code> if no solution exists.
     */
    private static ECFieldElement solveQuadradicEquation(ECFieldElement beta)
    {
        ECFieldElement.F2m b = (ECFieldElement.F2m)beta;
        ECFieldElement zeroElement = new ECFieldElement.F2m(
            b.getM(), b.getK1(), b.getK2(), b.getK3(), ECConstants.ZERO);

        if (beta.toBigInteger().equals(ECConstants.ZERO))
        {
            return zeroElement;
        }

        ECFieldElement z = null;
        ECFieldElement gamma = zeroElement;

        Random rand = new Random();
        int m = b.getM();
        do
        {
            ECFieldElement t = new ECFieldElement.F2m(b.getM(), b.getK1(),
                b.getK2(), b.getK3(), new BigInteger(m, rand));
            z = zeroElement;
            ECFieldElement w = beta;
            for (int i = 1; i <= m - 1; i++)
            {
                ECFieldElement w2 = w.square();
                z = z.square().add(w2.multiply(t));
                w = w2.add(beta);
            }
            if (!w.toBigInteger().equals(ECConstants.ZERO))
            {
                return null;
            }
View Full Code Here

Examples of org.bouncycastle.math.ec.ECFieldElement

        int byteCount = converter.getByteLength(Q.getX());
        byte[] bytes = converter.integerToBytes(Q.getX().toBigInteger(), byteCount);

        if (!(Q.getX().toBigInteger().equals(ECConstants.ZERO)))
        {
            ECFieldElement y = Q.getY().multiply(Q.getX().invert());
            if (trace(y).equals(ECConstants.ONE))
            {
                bytes[bytes.length - 1] |= 0x01;
            }
            else
View Full Code Here

Examples of org.bouncycastle.math.ec.ECFieldElement

        {
            bytes = Arrays.clone(bytes);
            bytes[bytes.length - 1] ^= 0x01;
        }
        ECCurve.F2m c = (ECCurve.F2m)curve;
        ECFieldElement xp = curve.fromBigInteger(new BigInteger(1, bytes));
        ECFieldElement yp = null;
        if (xp.toBigInteger().equals(ECConstants.ZERO))
        {
            yp = (ECFieldElement.F2m)curve.getB();
            for (int i = 0; i < c.getM() - 1; i++)
            {
                yp = yp.square();
            }
        }
        else
        {
            ECFieldElement beta = xp.add(curve.getA()).add(
                curve.getB().multiply(xp.square().invert()));
            ECFieldElement z = solveQuadradicEquation(beta);
            if (z == null)
            {
                throw new RuntimeException("Invalid point compression");
            }
            if (!trace(z).equals(k))
            {
                z = z.add(curve.fromBigInteger(ECConstants.ONE));
            }
            yp = xp.multiply(z);
        }

        return new ECPoint.F2m(curve, xp, yp);
View Full Code Here

Examples of org.bouncycastle.math.ec.ECFieldElement

    }

    public BigInteger[] generateSignature(byte[] message)
    {
        ECFieldElement h = hash2FieldElement(key.getParameters().getCurve(), message);
        if (h.toBigInteger().signum() == 0)
        {
            h = key.getParameters().getCurve().fromBigInteger(ONE);
        }

        BigInteger e, r, s;
        ECFieldElement Fe, y;

        do
        {
            do
            {
                do
                {
                    e = generateRandomInteger(key.getParameters().getN(), random);
                    Fe = key.getParameters().getG().multiply(e).getX();
                }
                while (Fe.toBigInteger().signum() == 0);

                y = h.multiply(Fe);
                r = fieldElement2Integer(key.getParameters().getN(), y);
            }
            while (r.signum() == 0);
View Full Code Here

Examples of org.bouncycastle.math.ec.ECFieldElement

        if (r.compareTo(key.getParameters().getN()) >= 0 || s.compareTo(key.getParameters().getN()) >= 0)
        {
            return false;
        }

        ECFieldElement h = hash2FieldElement(key.getParameters().getCurve(), message);
        if (h.toBigInteger().signum() == 0)
        {
            h = key.getParameters().getCurve().fromBigInteger(ONE);
        }

        ECPoint R = ECAlgorithms.sumOfTwoMultiplies(key.getParameters().getG(), s, ((ECPublicKeyParameters)key).getQ(), r);

        // components must be bogus.
        if (R.isInfinity())
        {
            return false;
        }

        ECFieldElement y = h.multiply(R.getX());
        return fieldElement2Integer(key.getParameters().getN(), y).compareTo(r) == 0;
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.