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

📄 testx509crl.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:   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 + -