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

📄 testsigneddataparser.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:   TestSignedDataParser.java

package jit.testsuit;

import java.io.*;
import jit.asn1.pkcs.PKCSObjectIdentifiers;
import jit.asn1.pkcs.pkcs12.Pfx;
import jit.asn1.pkcs.pkcs7.*;
import jit.asn1.x509.X509Name;
import jit.asn1parser.Parser;
import jit.asn1parser.pkcs.PKCS12Parser;
import jit.asn1parser.pkcs.pkcs7.SignedDataParser;
import jit.asn1parser.x509.X509Cert;
import jit.jcrypto.*;
import jit.math.BigInteger;
import jit.util.encoders.Base64;
import junit.framework.Assert;
import junit.framework.TestCase;

public class TestSignedDataParser extends TestCase
{

    private SignedDataParser signedDataParser;
    private Session session;
    static final byte SOURCE[] = "吉大正元SignedDataParser测试".getBytes();

    public TestSignedDataParser(String name)
    {
        super(name);
        signedDataParser = null;
    }

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

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

    public void testGenerateSignerInfo_RSA()
        throws Exception
    {
        PKCS12Parser p12 = new PKCS12Parser();
        p12.load("c:/testData/lijian.pfx");
        p12.decrypt("1".toCharArray());
        JKey prvKey = p12.getPrivateKey();
        X509Cert certs[] = p12.getCertificates();
        X509Cert cert = certs[0];
        X509Name name = cert.getIssuer();
        BigInteger sn = cert.getSerialNumber();
        IssuerAndSerialNumber is = new IssuerAndSerialNumber(name, sn);
        SignerInfo signerInfo = signedDataParser.generateSignerInfo(SOURCE, is, prvKey, PKCSObjectIdentifiers.md2WithRSAEncryption);
        boolean f = signedDataParser.verifySignerInfo(SOURCE, signerInfo, cert);
        Assert.assertTrue(f);
        System.out.println("RSA_MD2 test OK");
        signerInfo = signedDataParser.generateSignerInfo(SOURCE, is, prvKey, PKCSObjectIdentifiers.md5WithRSAEncryption);
        f = signedDataParser.verifySignerInfo(SOURCE, signerInfo, cert);
        Assert.assertTrue(f);
        System.out.println("RSA_MD5 test OK");
        signerInfo = signedDataParser.generateSignerInfo(SOURCE, is, prvKey, PKCSObjectIdentifiers.sha1WithRSAEncryption);
        Assert.assertTrue(f);
        System.out.println("RSA_SHA1 test OK");
    }

    public void testGenerateSignerInfo_ECC()
        throws Exception
    {
        PKCS12Parser p12 = new PKCS12Parser();
        p12.load("c:/testData/eccpfx.pfx");
        p12.decrypt("1111".toCharArray());
        JKey prvKey = p12.getPrivateKey();
        X509Cert certs[] = p12.getCertificates();
        X509Cert cert = certs[0];
        X509Name name = cert.getIssuer();
        BigInteger sn = cert.getSerialNumber();
        IssuerAndSerialNumber is = new IssuerAndSerialNumber(name, sn);
        SignerInfo signerInfo = signedDataParser.generateSignerInfo(SOURCE, is, prvKey, PKCSObjectIdentifiers.sha1WithECEncryption);
        boolean f = signedDataParser.verifySignerInfo(SOURCE, signerInfo, cert);
        Assert.assertTrue(f);
        System.out.println("ECC_SHA1 test OK");
    }

    public void testGenerateSignerData_RSA()
        throws Exception
    {
        PKCS12Parser p12 = new PKCS12Parser();
        p12.load("c:/testData/lijian.pfx");
        Pfx pfx = p12.getPfx();
        X509Cert pubCert = new X509Cert("c:/testData/lijian.cer");
        SignedData signedData = signedDataParser.generateSignedData(true, SOURCE, PKCSObjectIdentifiers.md2, pfx, "1".toCharArray());
        boolean f = signedDataParser.verifySignedData(signedData, pubCert);
        Assert.assertTrue(f);
        ContentInfo contentInfo = signedDataParser.generateSignedDataContent(signedData);
        byte data[] = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
        data = Base64.encode(data);
        data = format64(data);
        FileOutputStream fos = new FileOutputStream("c:/signedData_md2.txt.jsf");
        fos.write(data);
        fos.close();
        signedData = signedDataParser.generateSignedData(true, SOURCE, PKCSObjectIdentifiers.md2, pfx, "1".toCharArray());
        f = signedDataParser.verifySignedData(signedData, pubCert);
        Assert.assertTrue(f);
        contentInfo = signedDataParser.generateSignedDataContent(signedData);
        data = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
        data = Base64.encode(data);
        data = format64(data);
        fos = new FileOutputStream("c:/signedData_md5.txt.jsf");
        fos.write(data);
        fos.close();
        signedData = signedDataParser.generateSignedData(true, SOURCE, PKCSObjectIdentifiers.sha1, pfx, "1".toCharArray());
        f = signedDataParser.verifySignedData(signedData, pubCert);
        Assert.assertTrue(f);
    }

    public void testGenerateSignedData_ECC()
        throws Exception
    {
        PKCS12Parser p12 = new PKCS12Parser();
        p12.load("c:/testData/eccpfx.pfx");
        Pfx pfx = p12.getPfx();
        X509Cert pubCert = new X509Cert("c:/testData/ecc.cer");
        SignedData signedData = signedDataParser.generateSignedData(true, SOURCE, PKCSObjectIdentifiers.sha1, pfx, "1111".toCharArray());
        boolean f = signedDataParser.verifySignedData(signedData, pubCert);
        Assert.assertTrue(f);
    }

    private byte[] format64(byte base64Data[])
        throws Exception
    {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        for(int i = 0; i < base64Data.length; i++)
        {
            if(i != 0 && i % 64 == 0)
                bos.write("\n".getBytes());
            bos.write(base64Data[i]);
        }

        return bos.toByteArray();
    }

}

⌨️ 快捷键说明

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