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

📄 testpkcs10parser.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:   TestPKCS10Parser.java

package jit.testsuit;

import java.io.*;
import java.util.Vector;
import jit.asn1.*;
import jit.asn1.pkcs.PKCSObjectIdentifiers;
import jit.asn1.pkcs.pkcs10.CertificationRequest;
import jit.asn1.pkcs.pkcs10.CertificationRequestInfo;
import jit.asn1.x509.*;
import jit.asn1parser.Parser;
import jit.asn1parser.pkcs.PKCS10Parser;
import jit.crypto.CipherParameters;
import jit.crypto.params.RSAKeyParameters;
import jit.jcrypto.*;
import jit.jcrypto.param.ECCParam;
import jit.jcrypto.param.RSAParam;
import jit.jcrypto.soft.JMechanism;
import jit.math.BigInteger;
import jit.util.encoders.Base64;
import junit.framework.Assert;
import junit.framework.TestCase;

public class TestPKCS10Parser extends TestCase
{

    private PKCS10Parser pKCS10Parser;
    private Session session;

    public TestPKCS10Parser(String name)
    {
        super(name);
        pKCS10Parser = null;
        session = null;
    }

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

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

    public void testGenerateCertRequest_RSA()
        throws Exception
    {
        RSAParam rsaParam = new RSAParam(512, 3);
        Mechanism mechanism = new JMechanism(0, rsaParam);
        JKey keys[] = session.generateKeyPair(mechanism);
        JKey pubKey = keys[0];
        JKey prvKey = keys[1];
        SubjectPublicKeyInfo spki = pKCS10Parser.generateSPKI(pubKey);
        X509Name subject = new X509Name("c=cn,o=jit");
        CertificationRequestInfo cri = pKCS10Parser.generateCertRequestInfo(subject, spki, null);
        byte data[] = Parser.writeDERObj2Bytes(cri.getDERObject());
        DERBitString signature_sha1 = pKCS10Parser.generateSignature(data, prvKey, PKCSObjectIdentifiers.sha1WithRSAEncryption);
        AlgorithmIdentifier algID = new AlgorithmIdentifier(PKCSObjectIdentifiers.sha1WithRSAEncryption);
        CertificationRequest certRequest = pKCS10Parser.generateCertRequest(cri, algID, signature_sha1);
        Vector vector = pKCS10Parser.getCertRequestContent(certRequest);
        X509Name n = (X509Name)vector.get(0);
        SubjectPublicKeyInfo subPKI = (SubjectPublicKeyInfo)vector.get(1);
        JKey my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        ASN1Set a = (ASN1Set)vector.get(2);
        System.out.println(n.toString());
        Assert.assertNotNull(n);
        Assert.assertTrue(isEqualRSAPubKey(pubKey, my_pubKey));
        DERBitString signature_md2 = pKCS10Parser.generateSignature(data, prvKey, PKCSObjectIdentifiers.md2WithRSAEncryption);
        certRequest = pKCS10Parser.generateCertRequest(cri, new AlgorithmIdentifier(PKCSObjectIdentifiers.md2WithRSAEncryption), signature_md2);
        vector = pKCS10Parser.getCertRequestContent(certRequest);
        n = (X509Name)vector.get(0);
        subPKI = (SubjectPublicKeyInfo)vector.get(1);
        my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        Assert.assertNotNull(n);
        Assert.assertTrue(isEqualRSAPubKey(pubKey, my_pubKey));
        DERBitString signature_md5 = pKCS10Parser.generateSignature(data, prvKey, PKCSObjectIdentifiers.md5WithRSAEncryption);
        certRequest = pKCS10Parser.generateCertRequest(cri, new AlgorithmIdentifier(PKCSObjectIdentifiers.md5WithRSAEncryption), signature_md5);
        vector = pKCS10Parser.getCertRequestContent(certRequest);
        n = (X509Name)vector.get(0);
        subPKI = (SubjectPublicKeyInfo)vector.get(1);
        my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        Assert.assertNotNull(n);
        Assert.assertTrue(isEqualRSAPubKey(pubKey, my_pubKey));
    }

    public void testGenerateCertRequest_ECC()
        throws Exception
    {
        ECCParam eccParam = new ECCParam(10001);
        Mechanism mechanism = new JMechanism(1025, eccParam);
        JKey keys[] = session.generateKeyPair(mechanism);
        JKey pubKey = keys[0];
        JKey prvKey = keys[1];
        SubjectPublicKeyInfo spki = pKCS10Parser.generateSPKI(pubKey);
        X509Name subject = new X509Name("c=cn,o=jit");
        CertificationRequestInfo cri = pKCS10Parser.generateCertRequestInfo(subject, spki, null);
        byte data[] = Parser.writeDERObj2Bytes(cri.getDERObject());
        DERBitString signature_sha1 = pKCS10Parser.generateSignature(data, prvKey, PKCSObjectIdentifiers.sha1WithECEncryption);
        AlgorithmIdentifier algID = new AlgorithmIdentifier(PKCSObjectIdentifiers.sha1WithECEncryption);
        CertificationRequest certRequest = pKCS10Parser.generateCertRequest(cri, algID, signature_sha1);
        Vector vector = pKCS10Parser.getCertRequestContent(certRequest);
        X509Name n = (X509Name)vector.get(0);
        SubjectPublicKeyInfo subPKI = (SubjectPublicKeyInfo)vector.get(1);
        JKey my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        ASN1Set a = (ASN1Set)vector.get(2);
        System.out.println(n.toString());
        Assert.assertNotNull(n);
        Assert.assertNotNull(my_pubKey);
    }

    public void testFromCAFile_RSA()
        throws Exception
    {
        FileInputStream fin = new FileInputStream("c:/testData/rsacertr.txt");
        byte data[] = new byte[fin.available()];
        fin.read(data);
        fin.close();
        data = Base64.decode(data);
        ByteArrayInputStream bis = new ByteArrayInputStream(data);
        ASN1InputStream ais = new ASN1InputStream(bis);
        ASN1Sequence seq = (ASN1Sequence)ais.readObject();
        CertificationRequest certRequest = new CertificationRequest(seq);
        Vector vector = pKCS10Parser.getCertRequestContent(certRequest);
        X509Name n = (X509Name)vector.get(0);
        SubjectPublicKeyInfo subPKI = (SubjectPublicKeyInfo)vector.get(1);
        JKey my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        ASN1Set a = (ASN1Set)vector.get(2);
        System.out.println(n);
        Assert.assertNotNull(n);
        Assert.assertNotNull(my_pubKey);
    }

    public void testFromCAFile_ECC()
        throws Exception
    {
        FileInputStream fin = new FileInputStream("c:/testData/ecccertr.txt");
        byte data[] = new byte[fin.available()];
        fin.read(data);
        fin.close();
        data = Base64.decode(data);
        ByteArrayInputStream bis = new ByteArrayInputStream(data);
        ASN1InputStream ais = new ASN1InputStream(bis);
        ASN1Sequence seq = (ASN1Sequence)ais.readObject();
        CertificationRequest certRequest = new CertificationRequest(seq);
        Vector vector = pKCS10Parser.getCertRequestContent(certRequest);
        X509Name n = (X509Name)vector.get(0);
        SubjectPublicKeyInfo subPKI = (SubjectPublicKeyInfo)vector.get(1);
        JKey my_pubKey = pKCS10Parser.getPubKeyFromSPKI(subPKI);
        ASN1Set a = (ASN1Set)vector.get(2);
        System.out.println(n);
        Assert.assertNotNull(n);
        Assert.assertNotNull(my_pubKey);
    }

    private boolean isEqualRSAPubKey(JKey jkey1, JKey jkey2)
        throws Exception
    {
        CipherParameters key1 = Parser.conver2CipherParam(jkey1);
        CipherParameters key2 = Parser.conver2CipherParam(jkey2);
        if(!(key1 instanceof RSAKeyParameters) || !(key2 instanceof RSAKeyParameters))
            return false;
        BigInteger m1 = ((RSAKeyParameters)key1).getModulus();
        BigInteger e1 = ((RSAKeyParameters)key1).getExponent();
        BigInteger m2 = ((RSAKeyParameters)key2).getModulus();
        BigInteger e2 = ((RSAKeyParameters)key2).getExponent();
        if(!m1.equals(m2) || !e1.equals(e2))
        {
            System.out.println("RSA Public Key test failtrue.");
            return false;
        } else
        {
            return true;
        }
    }
}

⌨️ 快捷键说明

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