📄 testenvelopeddataparser.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: TestEnvelopedDataParser.java
package jit.testsuit;
import java.io.*;
import jit.asn1.ASN1Sequence;
import jit.asn1.pkcs.PKCSObjectIdentifiers;
import jit.asn1.pkcs.pkcs12.Pfx;
import jit.asn1.pkcs.pkcs7.*;
import jit.asn1.x509.*;
import jit.asn1parser.Parser;
import jit.asn1parser.pkcs.PKCS12Parser;
import jit.asn1parser.pkcs.pkcs7.EnvelopedDataParser;
import jit.asn1parser.x509.SPKIParser;
import jit.asn1parser.x509.X509Cert;
import jit.jcrypto.*;
import jit.jcrypto.soft.JMechanism;
import jit.math.BigInteger;
import jit.util.encoders.Base64;
import junit.framework.Assert;
import junit.framework.TestCase;
public class TestEnvelopedDataParser extends TestCase
{
private EnvelopedDataParser envelopedDataParser;
private Session session;
private byte SOURCE[];
public TestEnvelopedDataParser(String name)
{
super(name);
envelopedDataParser = null;
session = null;
SOURCE = "吉大正元CFCA数字信封测试程序TEST".getBytes();
}
protected void setUp()
throws Exception
{
super.setUp();
JCrypto jcrypto = new JCrypto();
jcrypto.initialize(0, null);
session = jcrypto.openSession(0);
envelopedDataParser = new EnvelopedDataParser(session);
}
protected void tearDown()
throws Exception
{
envelopedDataParser = null;
session = null;
super.tearDown();
}
public void testGenerateEnvelopedData_3DES()
throws Exception
{
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
X509Cert cert = new X509Cert("c:/testData/lijian.cer");
JMechanism mechanism = new JMechanism(305);
JKey contentEncryptionKey = session.generateKey(mechanism, 0);
byte bContentEncryptionKey[] = contentEncryptionKey.getKey();
SubjectPublicKeyInfo spki = cert.getSubjectPublicKeyInfo();
SPKIParser spkiParser = new SPKIParser();
JKey recipientPubKey = spkiParser.getPublicKey(spki);
BigInteger sn = cert.getSerialNumber();
X509Name issuer = cert.getIssuer();
IssuerAndSerialNumber issuerAndSerialNumber = new IssuerAndSerialNumber(issuer, sn);
AlgorithmIdentifier keyEncryptionAlg = null;
if(recipientPubKey.getKeyType() == 1)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption);
else
if(recipientPubKey.getKeyType() == 1001)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.ecEncryption);
RecipientInfo recipientInfo = envelopedDataParser.generateRecipientInfo(issuerAndSerialNumber, keyEncryptionAlg, bContentEncryptionKey, recipientPubKey);
EncryptedContentInfo encryptedContentInfo = envelopedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.data, PKCSObjectIdentifiers.des3CBCEncryption, SOURCE, contentEncryptionKey);
EnvelopedData envelopedData = envelopedDataParser.generateEnvelopedData(recipientInfo, encryptedContentInfo);
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
ContentInfo contentInfo = envelopedDataParser.generateEnvelopedDataContent(envelopedData);
byte data[] = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
data = Base64.encode(data);
data = format64(data);
FileOutputStream fos = new FileOutputStream("c:/envelopedData_3des.txt.jef");
fos.write(data);
fos.close();
}
public void testGenerateEnvelopedData_DES()
throws Exception
{
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
X509Cert cert = new X509Cert("c:/testData/lijian.cer");
JMechanism mechanism = new JMechanism(288);
JKey contentEncryptionKey = session.generateKey(mechanism, 0);
byte bContentEncryptionKey[] = contentEncryptionKey.getKey();
SubjectPublicKeyInfo spki = cert.getSubjectPublicKeyInfo();
SPKIParser spkiParser = new SPKIParser();
JKey recipientPubKey = spkiParser.getPublicKey(spki);
BigInteger sn = cert.getSerialNumber();
X509Name issuer = cert.getIssuer();
IssuerAndSerialNumber issuerAndSerialNumber = new IssuerAndSerialNumber(issuer, sn);
AlgorithmIdentifier keyEncryptionAlg = null;
if(recipientPubKey.getKeyType() == 1)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption);
else
if(recipientPubKey.getKeyType() == 1001)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.ecEncryption);
RecipientInfo recipientInfo = envelopedDataParser.generateRecipientInfo(issuerAndSerialNumber, keyEncryptionAlg, bContentEncryptionKey, recipientPubKey);
EncryptedContentInfo encryptedContentInfo = envelopedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.data, PKCSObjectIdentifiers.desCBCEncryption, SOURCE, contentEncryptionKey);
EnvelopedData envelopedData = envelopedDataParser.generateEnvelopedData(recipientInfo, encryptedContentInfo);
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
ContentInfo contentInfo = envelopedDataParser.generateEnvelopedDataContent(envelopedData);
byte data[] = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
data = Base64.encode(data);
data = format64(data);
FileOutputStream fos = new FileOutputStream("c:/envelopedData_des.txt.jef");
fos.write(data);
fos.close();
}
public void testGenerateEnvelopedData_RC2()
throws Exception
{
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
X509Cert cert = new X509Cert("c:/testData/lijian.cer");
JMechanism mechanism = new JMechanism(256);
JKey contentEncryptionKey = session.generateKey(mechanism, 0);
byte bContentEncryptionKey[] = contentEncryptionKey.getKey();
SubjectPublicKeyInfo spki = cert.getSubjectPublicKeyInfo();
SPKIParser spkiParser = new SPKIParser();
JKey recipientPubKey = spkiParser.getPublicKey(spki);
BigInteger sn = cert.getSerialNumber();
X509Name issuer = cert.getIssuer();
IssuerAndSerialNumber issuerAndSerialNumber = new IssuerAndSerialNumber(issuer, sn);
AlgorithmIdentifier keyEncryptionAlg = null;
if(recipientPubKey.getKeyType() == 1)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption);
else
if(recipientPubKey.getKeyType() == 1001)
keyEncryptionAlg = new AlgorithmIdentifier(PKCSObjectIdentifiers.ecEncryption);
RecipientInfo recipientInfo = envelopedDataParser.generateRecipientInfo(issuerAndSerialNumber, keyEncryptionAlg, bContentEncryptionKey, recipientPubKey);
EncryptedContentInfo encryptedContentInfo = envelopedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.data, PKCSObjectIdentifiers.rc2CBCEncryption, SOURCE, contentEncryptionKey);
EnvelopedData envelopedData = envelopedDataParser.generateEnvelopedData(recipientInfo, encryptedContentInfo);
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
ContentInfo contentInfo = envelopedDataParser.generateEnvelopedDataContent(envelopedData);
byte data[] = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
data = Base64.encode(data);
data = format64(data);
FileOutputStream fos = new FileOutputStream("c:/envelopedData_rc2.txt.jef");
fos.write(data);
fos.close();
}
public void testDecodeFromC_DES()
throws Exception
{
FileInputStream fin = new FileInputStream("c:/envelopedData_des.txt.jef");
byte data[] = new byte[fin.available()];
fin.read(data);
fin.close();
data = Parser.convertBase64(data);
data = Base64.decode(data);
ASN1Sequence seq = (ASN1Sequence)Parser.writeBytes2DERObj(data);
ContentInfo contentInfo = ContentInfo.getInstance(seq);
EnvelopedData envelopedData = EnvelopedData.getInstance(contentInfo.getContent());
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
}
public void testDecodeFromC_3DES()
throws Exception
{
FileInputStream fin = new FileInputStream("c:/envelopedData_3des.txt.jef");
byte data[] = new byte[fin.available()];
fin.read(data);
fin.close();
data = Parser.convertBase64(data);
data = Base64.decode(data);
ASN1Sequence seq = (ASN1Sequence)Parser.writeBytes2DERObj(data);
ContentInfo contentInfo = ContentInfo.getInstance(seq);
EnvelopedData envelopedData = EnvelopedData.getInstance(contentInfo.getContent());
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
}
public void testDecodeFromC_RC2()
throws Exception
{
FileInputStream fin = new FileInputStream("c:/envelopedData_rc2.txt.jef");
byte data[] = new byte[fin.available()];
fin.read(data);
fin.close();
data = Parser.convertBase64(data);
data = Base64.decode(data);
ASN1Sequence seq = (ASN1Sequence)Parser.writeBytes2DERObj(data);
ContentInfo contentInfo = ContentInfo.getInstance(seq);
EnvelopedData envelopedData = EnvelopedData.getInstance(contentInfo.getContent());
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
Pfx pfx = p12.getPfx();
byte decode[] = envelopedDataParser.decodeEnvelop(envelopedData, pfx, "1".toCharArray());
Assert.assertTrue(isEqualArray(decode, SOURCE));
}
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();
}
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 + -