📄 testx509crl.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: TestX509CRL.java
package jit.test;
import java.io.*;
import java.util.*;
import jit.asn1.*;
import jit.asn1.pkcs.PKCSObjectIdentifiers;
import jit.asn1.x509.*;
import jit.asn1parser.Parser;
import jit.asn1parser.x509.*;
import jit.crypto.params.*;
import jit.jcrypto.*;
import jit.math.BigInteger;
public class TestX509CRL
implements PKCSObjectIdentifiers
{
BigInteger mod;
BigInteger pubExp;
BigInteger priExp;
BigInteger p;
BigInteger q;
BigInteger dp;
BigInteger dq;
BigInteger coff;
RSAKeyParameters pubKey;
RSAPrivateCrtKeyParameters priKey;
BigInteger smod;
BigInteger spubExp;
BigInteger spriExp;
BigInteger sp;
BigInteger sq;
BigInteger sdp;
BigInteger sdq;
BigInteger scoff;
RSAPrivateCrtKeyParameters spriKey;
RSAKeyParameters spubKey;
ECPublicKeyParameters ecPubKey;
ECPrivateKeyParameters ecPriKey;
X509CRL crl;
CRLEntryGenerator crlEntryGen;
public TestX509CRL()
{
mod = new BigInteger("dba7ecd2cb0cd61e6dc9d6802deba2f2c7ff58db2e49864e86499999c829a8903d27b054e0a44b556a3e6b5fc3ba265d5328c9fc005ede177f897034176d2f087f6cae54533889c6b65d1ef4d873340e1e54dcf6051d9bf2f52716d88798cb8edf66651eb7f0fb98048dddf110393105ca88e90760d9868bbd5e4502addbee4f", 16);
pubExp = new BigInteger("3");
priExp = new BigInteger("926ff33732088ebef3dbe45573f26ca1daaa3b3cc9865989aedbbbbbdac6706028c5203895c2dce39c299cea827c19938cc5dbfd5594940faa5ba022ba48ca046e1923316268d24464c21cd1f7535b0b7d1301f388416bd53c74e4423c7c0c1af3d4b4046f81ac16fc7ba5d43890896f9babe9269b7a2b0b98b822b724685a0b", 16);
p = new BigInteger("eb7705f0f858fe5a01a697659901aa5b2e2acff664715ab42ccd04fe4ce5b0b97f4c23bad235feb074536432e84264e1bd3cd1f45b8868eeceb059a3108ccc59", 16);
q = new BigInteger("eecff399474250061d935c544c748121b48d8a12544a1f7eedaabb76dff908acf25b335d3e787ac5158100ffd31dfdfca3ca39591c19dd0b8999b74ce6b29ae7", 16);
dp = new BigInteger("9cfa03f5fae5fee6abc464ee66011c3cc971dff9984b91cd733358a98899207baa32c27c8c23ff204d8ced77458198967e288bf83d059b49df203bc20b08883b", 16);
dq = new BigInteger("9f354d10da2c3559690ce83832f85616785e5c0c38316a549e71d24f3ffb5b1df6e777937efafc8363ab55ffe213fea86d317b90bd66935d06667a33447711ef", 16);
coff = new BigInteger("9f864f86695a64d08c04c2eb29d5e3996a463ef764c640cf5db748c2d0757561d3153f925cd5d69fd6a8040e27ee29bb0d60a30bf140a45b2555263a2cbc5969", 16);
pubKey = new RSAKeyParameters(false, mod, pubExp);
priKey = new RSAPrivateCrtKeyParameters(mod, pubExp, priExp, p, q, dp, dq, coff);
smod = new BigInteger("9d021b39ec0fe2c910a408642547a1e58ca7b50908286de148e78841bc830337e982ed532ea2ab3427510a6af0b0178a3776772580b5303685ffce65566106c9", 16);
spubExp = new BigInteger("3");
spriExp = new BigInteger("68ac12269d5fec860b18059818da6bee5dc5235b5ac59e96309a5ad67dacaccee52143b9d9a87982d3a05bf3049b1cf87870d7a06ed6d5cf6bf47c4aef07d363", 16);
sp = new BigInteger("d5f293affef7802907b7b103d9503ac2034de9ea188740aec75f0640c6b9244f", 16);
sq = new BigInteger("bbde740c692e74c6e228cf7a907731537f7f49cac1ebaed09cb20db4291c2567", 16);
sdp = new BigInteger("8ea1b7caa9fa5570afcfcb57e6357c815789469c105a2b1f2f94aed5d9d0c2df", 16);
sdq = new BigInteger("7d3ef808461ef88496c5dfa70afa20e254ff86872bf2748b13215e781b6818ef", 16);
scoff = new BigInteger("54dfc3c314948066d7fa1d9de56d7228de0f8a2e73db6e51f29f576221311c3a", 16);
spriKey = new RSAPrivateCrtKeyParameters(smod, spubExp, spriExp, sp, sq, sdp, sdq, scoff);
spubKey = new RSAKeyParameters(false, smod, spubExp);
ecPubKey = null;
ecPriKey = null;
crl = null;
crlEntryGen = null;
crl = new X509CRL();
crlEntryGen = new CRLEntryGenerator();
}
public void parserTest()
{
try
{
X509CRL crl = new X509CRL("D:/CFCATestCrl.crl");
JCrypto jCrypto = new JCrypto();
jCrypto.initialize(0, null);
Session session = jCrypto.openSession(0);
JKey jPubKey = Parser.convert2JKey(1, pubKey);
boolean verify = crl.verifyCRLSign(session, jPubKey);
AlgorithmIdentifier sigAlg = crl.getSignatureAlgorithm();
Time thisUpdate = crl.getThisUpdate();
Time nextUpdate = crl.getNextUpdate();
int versin = crl.getVersion();
String issuerName = crl.getIssuer().toString();
System.out.println("issuer DN :".concat(String.valueOf(String.valueOf(issuerName))));
CRLEntry crlEntry[] = crl.getRevokedCertificates();
X509Extensions x509Extens = crlEntry[0].getExtensions();
ExtensionsParser extenParser = new ExtensionsParser(x509Extens);
Vector extenVector = extenParser.listAllName();
Time revocDate = crlEntry[0].getRevocationDate();
CRLReason crlReason = extenParser.getReasonCode();
int reason = crlReason.getValue().intValue();
DERInteger derInt = null;
BigInteger bigInt = null;
for(int i = 0; i < crlEntry.length; i++)
{
derInt = crlEntry[i].getUserCertificate();
bigInt = derInt.getValue();
int len = bigInt.bitLength();
System.out.println(String.valueOf(String.valueOf((new StringBuffer("sn[")).append(i).append("] :").append(bigInt.toString(16)))));
}
InputStream cerFis1 = new FileInputStream("D:/jianjian.cer");
ASN1InputStream cerAsnIn1 = new ASN1InputStream(cerFis1);
ASN1Sequence cerAsnSeq1 = (ASN1Sequence)cerAsnIn1.readObject();
X509Cert x509cert = new X509Cert(cerAsnSeq1);
boolean isRevoked = crl.isRevoked(x509cert);
if(isRevoked)
System.out.println("is revoked ");
x509Extens = crl.getExtensions();
extenParser = new ExtensionsParser(x509Extens);
extenVector = extenParser.listAllName();
CRLNumber CRL_Number = extenParser.getCRLNumber();
int number = CRL_Number.getCRLNumber().intValue();
GeneralNames issuerAltName = extenParser.getIssuerAltName();
GeneralName genName = GeneralName.getInstance(((ASN1Sequence)issuerAltName.getDERObject()).getObjectAt(0));
String sIssuerAltName = X509Name.getInstance(genName.getName()).toString();
AuthorityKeyIdentifier authKeyID = extenParser.getAuthorityKeyIdentifier();
byte akeyID[] = null;
DERInteger sn = null;
int isn = 0;
GeneralNames certissuer = null;
String sCertIssuer = null;
if(authKeyID != null)
{
akeyID = authKeyID.getKeyIdentifier();
sn = authKeyID.getCertSerialNumber();
isn = sn.getValue().intValue();
certissuer = authKeyID.getCertIssuer();
}
if(certissuer != null)
sCertIssuer = GeneralName.getInstance(((ASN1Sequence)certissuer.getDERObject()).getObjectAt(0)).getStringName();
byte byte0 = 9;
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public void generateTest()
{
DERInteger certSN = new DERInteger(0x1b207);
crlEntryGen.setUserCertificate(certSN);
Date date = new Date(System.currentTimeMillis());
Time revocationDate = new Time(date);
crlEntryGen.setRevocationDate(revocationDate);
Hashtable extension = new Hashtable();
CRLReason son = new CRLReason(10);
DEROctetString deroctet = new DEROctetString(son.getDERObject());
extension.put(X509Extensions.ReasonCode, new X509Extension(false, deroctet));
X509Extensions x509Extension = new X509Extensions(extension);
crlEntryGen.setCrlEntryExtensions(x509Extension);
CRLEntry crlEntries[] = new CRLEntry[2];
try
{
crlEntries[0] = crlEntryGen.generateCRLEntry();
}
catch(Exception e)
{
System.out.println(e.toString());
}
certSN = new DERInteger(22222);
crlEntryGen.setUserCertificate(certSN);
date = new Date(System.currentTimeMillis());
revocationDate = new Time(date);
crlEntryGen.setRevocationDate(revocationDate);
try
{
crlEntries[1] = crlEntryGen.generateCRLEntry();
}
catch(Exception e)
{
System.out.println(e.toString());
}
crl.setCRLEntries(crlEntries);
try
{
AlgorithmIdentifier alg = new AlgorithmIdentifier(PKCSObjectIdentifiers.sha1WithRSAEncryption);
crl.setSignatureAlg(alg);
X509Name issuer = new X509Name("C=CN,CN=ZHAOZHIWEI");
crl.setIssuer(issuer);
Date thisUpdate = new Date(System.currentTimeMillis());
crl.setThisUpdate(thisUpdate);
Date nextUpdate = new Date(System.currentTimeMillis() + 0x202fbf000L);
crl.setNextUpdate(nextUpdate);
Hashtable extensions = new Hashtable();
X509Name certIssuer = new X509Name("CN=Jitwpki,C=cn");
GeneralName genName = new GeneralName(certIssuer);
GeneralNames genNames = new GeneralNames(new DERSequence(genName));
DEROctetString octet = new DEROctetString(genNames.getDERObject());
extensions.put(X509Extensions.IssuerAlternativeName, new X509Extension(false, octet));
SPKIParser spkiParser = new SPKIParser();
JKey jSPubKey = Parser.convert2JKey(1, spubKey);
SubjectPublicKeyInfo spki = spkiParser.generateSPKI(1, jSPubKey);
BigInteger certIssuerSN = new BigInteger("678");
X509Name acertIssuer = new X509Name("CN=Jitwpki,C=cn");
GeneralName agenName = new GeneralName(acertIssuer);
GeneralNames agenNames = new GeneralNames(new DERSequence(agenName));
AuthorityKeyIdentifier authorityKeyID = new AuthorityKeyIdentifier(spki, agenNames, certIssuerSN);
octet = new DEROctetString(authorityKeyID.getDERObject());
extensions.put(X509Extensions.AuthorityKeyIdentifier, new X509Extension(false, octet));
CRLNumber CRL_Number = new CRLNumber(new BigInteger("5"));
octet = new DEROctetString(CRL_Number.getDERObject());
extensions.put(X509Extensions.CRLNumber, new X509Extension(false, octet));
X509Extensions x509Extensions = new X509Extensions(extensions);
crl.setExtensions(x509Extensions);
JKey jPriKey = Parser.convert2JKey(2, priKey);
JCrypto jCrypto = new JCrypto();
jCrypto.initialize(0, null);
Session session = jCrypto.openSession(0);
crl.generateCRL(session, jPriKey, "D:/CFCATestCrl.crl");
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public static void main(String args[])
{
TestX509CRL crlTest = new TestX509CRL();
crlTest.parserTest();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -