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

📄 testpkcs8parser.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:   TestPKCS8Parser.java

package jit.testsuit;

import jit.asn1.ASN1Sequence;
import jit.asn1.pkcs.pkcs8.EncryptedPrivateKeyInfo;
import jit.asn1parser.Parser;
import jit.asn1parser.pkcs.PKCS8Parser;
import jit.jcrypto.*;
import jit.jcrypto.param.ECCParam;
import jit.jcrypto.param.RSAParam;
import jit.jcrypto.soft.JMechanism;
import junit.framework.Assert;
import junit.framework.TestCase;

public class TestPKCS8Parser extends TestCase
{

    private PKCS8Parser pKCS8Parser;
    private Session session;
    static final byte SOURCE[] = "中华人民共和国吉大正元信息技术股份有限公司加密测试".getBytes();

    public TestPKCS8Parser(String name)
    {
        super(name);
        pKCS8Parser = null;
        session = null;
    }

    protected void setUp()
        throws Exception
    {
        super.setUp();
        pKCS8Parser = new PKCS8Parser();
        JCrypto jcrypto = new JCrypto();
        jcrypto.initialize(0, null);
        session = jcrypto.openSession(0);
    }

    protected void tearDown()
        throws Exception
    {
        pKCS8Parser = null;
        session = null;
        super.tearDown();
    }

    public void testRSA_512_EPKI()
        throws Exception
    {
        Assert.assertTrue(rsaTest(512));
    }

    public void testRSA_1024_EPKI()
        throws Exception
    {
        Assert.assertTrue(rsaTest(1024));
    }

    public void testECC_160_EPKI()
        throws Exception
    {
        Assert.assertTrue(eccTest(10001));
    }

    public void testECC_192_EPKI()
        throws Exception
    {
        Assert.assertTrue(eccTest(20001));
    }

    public void testECC_239_EPKI()
        throws Exception
    {
        Assert.assertTrue(eccTest(30001));
    }

    public void testECC_256_EPKI()
        throws Exception
    {
        Assert.assertTrue(eccTest(40001));
    }

    private boolean rsaTest(int keyLen)
        throws Exception
    {
        byte password[] = "1234567".getBytes();
        RSAParam rsaParam = new RSAParam(keyLen, 3);
        Mechanism mechanism = new JMechanism(0, rsaParam);
        JKey keys[] = session.generateKeyPair(mechanism);
        JKey pubKey = keys[0];
        JKey prvKey = keys[1];
        EncryptedPrivateKeyInfo epki = pKCS8Parser.generateEPKI(password, prvKey);
        byte epki_data[] = Parser.writeDERObj2Bytes(epki.getDERObject());
        EncryptedPrivateKeyInfo my_epki = new EncryptedPrivateKeyInfo((ASN1Sequence)Parser.writeBytes2DERObj(epki_data));
        JKey myPrvKey = pKCS8Parser.getPriKeyFromEPKI(1, my_epki, password);
        mechanism = new JMechanism(1);
        byte encryptedData[] = session.encrypt(mechanism, pubKey, SOURCE);
        byte decryptedData[] = session.decrypt(mechanism, myPrvKey, encryptedData);
        return isEqualArray(decryptedData, SOURCE);
    }

    private boolean eccTest(int curveID)
        throws Exception
    {
        byte password[] = "12345".getBytes();
        ECCParam eccParam = new ECCParam(curveID);
        Mechanism mechanism = new JMechanism(1025, eccParam);
        JKey keys[] = session.generateKeyPair(mechanism);
        JKey pubKey = keys[0];
        JKey prvKey = keys[1];
        EncryptedPrivateKeyInfo epki = pKCS8Parser.generateEPKI(password, prvKey);
        byte epki_data[] = Parser.writeDERObj2Bytes(epki.getDERObject());
        EncryptedPrivateKeyInfo my_epki = new EncryptedPrivateKeyInfo((ASN1Sequence)Parser.writeBytes2DERObj(epki_data));
        JKey myPrvKey = pKCS8Parser.getPriKeyFromEPKI(2, my_epki, password);
        mechanism = new JMechanism(1026);
        byte encryptedData[] = session.encrypt(mechanism, pubKey, SOURCE);
        byte decryptedData[] = session.decrypt(mechanism, myPrvKey, encryptedData);
        return isEqualArray(decryptedData, SOURCE);
    }

    private boolean isEqualArray(byte a[], byte b[])
    {
        if(a.length != b.length)
            return false;
        for(int i = 0; i < a.length; i++)
            if(a[i] != b[i])
                return false;

        return true;
    }

}

⌨️ 快捷键说明

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