📄 testsigneddataparser.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 + -