All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testifyproject.bouncycastle.jce.ECPointUtil Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package org.testifyproject.bouncycastle.jce;

import java.security.spec.ECFieldF2m;
import java.security.spec.ECFieldFp;
import java.security.spec.ECPoint;
import java.security.spec.EllipticCurve;

import org.testifyproject.bouncycastle.math.ec.ECCurve;

/**
 * Utility class for handling EC point org.testifyproject.testifyprojectcoding.
 */
public class ECPointUtil
{
    /**
     * Decode a point on this curve which has been encoded using point
     * org.testifyproject.testifyprojectpression (X9.62 s 4.2.1 and 4.2.2) or regular encoding.
     * 
     * @param curve
     *            The elliptic curve.
     * @param encoded
     *            The encoded point.
     * @return the org.testifyproject.testifyprojectcoded point.
     */
    public static ECPoint org.testifyproject.testifyprojectcodePoint(
       EllipticCurve curve, 
       byte[] encoded)
    {
        ECCurve c = null;
        
        if (curve.getField() instanceof ECFieldFp)
        {
            c = new ECCurve.Fp(
                    ((ECFieldFp)curve.getField()).getP(), curve.getA(), curve.getB());
        }
        else
        {
            int k[] = ((ECFieldF2m)curve.getField()).getMidTermsOfReductionPolynomial();
            
            if (k.length == 3)
            {
                c = new ECCurve.F2m(
                        ((ECFieldF2m)curve.getField()).getM(), k[2], k[1], k[0], curve.getA(), curve.getB());
            }
            else
            {
                c = new ECCurve.F2m(
                        ((ECFieldF2m)curve.getField()).getM(), k[0], curve.getA(), curve.getB());
            }
        }
        
        org.testifyproject.bouncycastle.math.ec.ECPoint p = c.org.testifyproject.testifyprojectcodePoint(encoded);

        return new ECPoint(p.getAffineXCoord().toBigInteger(), p.getAffineYCoord().toBigInteger());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy