⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eccurve$fp.java

📁 进行与数字证书相关开发必须的java源码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   ECCurve.java

package jit.math.ec;

import jit.math.BigInteger;

// Referenced classes of package jit.math.ec:
//            ECCurve, ECPoint, ECFieldElement

public static class Fp extends ECCurve
{

    public BigInteger getQ()
    {
        return q;
    }

    public ECFieldElement fromBigInteger(BigInteger x)
    {
        return new Fp(q, x);
    }

    public ECPoint decodePoint(byte encoded[])
    {
        ECPoint p = null;
        switch(encoded[0])
        {
        case 2: // '\002'
        case 3: // '\003'
            int ytilde = encoded[0] & 0x1;
            byte i[] = new byte[encoded.length - 1];
            System.arraycopy(encoded, 1, i, 0, i.length);
            ECFieldElement x = new Fp(q, new BigInteger(1, i));
            ECFieldElement alpha = x.multiply(x.square()).add(x.multiply(a).add(b));
            ECFieldElement beta = alpha.sqrt();
            if(beta == null)
                throw new RuntimeException("Invalid point compression");
            int bit0 = beta.toBigInteger().testBit(0) ? 0 : 1;
            if(bit0 == ytilde)
                p = new Fp(this, x, beta);
            else
                p = new Fp(this, x, new Fp(q, q.subtract(beta.toBigInteger())));
            break;

        case 4: // '\004'
            byte xEnc[] = new byte[(encoded.length - 1) / 2];
            byte yEnc[] = new byte[(encoded.length - 1) / 2];
            System.arraycopy(encoded, 1, xEnc, 0, xEnc.length);
            System.arraycopy(encoded, xEnc.length + 1, yEnc, 0, yEnc.length);
            p = new Fp(this, new Fp(q, new BigInteger(1, xEnc)), new Fp(q, new BigInteger(1, yEnc)));
            break;

        default:
            throw new RuntimeException("Invalid point encoding 0x".concat(String.valueOf(String.valueOf(Integer.toString(encoded[0], 16)))));
        }
        return p;
    }

    public Fp(BigInteger q, BigInteger a, BigInteger b)
    {
        super(q, a, b);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -