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

📄 jdkx509certificatefactory.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   JDKX509CertificateFactory.java

package org.bouncycastle.jce.provider;

import java.io.*;
import java.security.cert.*;
import java.util.*;
import org.bouncycastle.asn1.*;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.SignedData;
import org.bouncycastle.asn1.x509.CertificateList;
import org.bouncycastle.asn1.x509.X509CertificateStructure;
import org.bouncycastle.util.encoders.Base64;

// Referenced classes of package org.bouncycastle.jce.provider:
//			PKIXCertPath, X509CRLObject, X509CertificateObject

public class JDKX509CertificateFactory extends CertificateFactorySpi
{

	private SignedData sData;
	private int sDataObjectCount;

	public JDKX509CertificateFactory()
	{
		sData = null;
		sDataObjectCount = 0;
	}

	private String readLine(InputStream in)
		throws IOException
	{
		StringBuffer l = new StringBuffer();
		int c;
		do
		{
			if ((c = in.read()) == 10 || c < 0)
				break;
			if (c != 13)
				l.append((char)c);
		} while (true);
		if (c < 0)
			return null;
		else
			return l.toString();
	}

	private Certificate readDERCertificate(InputStream in)
		throws IOException
	{
		DERInputStream dIn = new DERInputStream(in);
		ASN1Sequence seq = (ASN1Sequence)dIn.readObject();
		if (seq.size() > 1 && (seq.getObjectAt(0) instanceof DERObjectIdentifier) && seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
		{
			sData = new SignedData(ASN1Sequence.getInstance((ASN1TaggedObject)seq.getObjectAt(1), true));
			return new X509CertificateObject(X509CertificateStructure.getInstance(sData.getCertificates().getObjectAt(sDataObjectCount++)));
		} else
		{
			return new X509CertificateObject(X509CertificateStructure.getInstance(seq));
		}
	}

	private Certificate readPKCS7Certificate(InputStream in)
		throws IOException
	{
		BERInputStream dIn = new BERInputStream(in);
		ASN1Sequence seq = (ASN1Sequence)dIn.readObject();
		if (seq.size() > 1 && (seq.getObjectAt(0) instanceof DERObjectIdentifier) && seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
		{
			sData = new SignedData(ASN1Sequence.getInstance((ASN1TaggedObject)seq.getObjectAt(1), true));
			return new X509CertificateObject(X509CertificateStructure.getInstance(sData.getCertificates().getObjectAt(sDataObjectCount++)));
		} else
		{
			return new X509CertificateObject(X509CertificateStructure.getInstance(seq));
		}
	}

	private Certificate readPEMCertificate(InputStream in)
		throws IOException
	{
		StringBuffer pemBuf = new StringBuffer();
		String line;
		while ((line = readLine(in)) != null && !line.equals("-----BEGIN CERTIFICATE-----") && !line.equals("-----BEGIN X509 CERTIFICATE-----")) ;
		for (; (line = readLine(in)) != null && !line.equals("-----END CERTIFICATE-----") && !line.equals("-----END X509 CERTIFICATE-----"); pemBuf.append(line));
		if (pemBuf.length() != 0)
		{
			ByteArrayInputStream bIn = new ByteArrayInputStream(Base64.decode(pemBuf.toString()));
			return readDERCertificate(bIn);
		} else
		{
			return null;
		}
	}

	private CRL readDERCRL(InputStream in)
		throws IOException
	{
		DERInputStream dIn = new DERInputStream(in);
		return new X509CRLObject(new CertificateList((ASN1Sequence)dIn.readObject()));
	}

	private CRL readPEMCRL(InputStream in)
		throws IOException
	{
		StringBuffer pemBuf = new StringBuffer();
		String line;
		while ((line = readLine(in)) != null && !line.equals("-----BEGIN CRL-----") && !line.equals("-----BEGIN X509 CRL-----")) ;
		for (; (line = readLine(in)) != null && !line.equals("-----END CRL-----") && !line.equals("-----END X509 CRL-----"); pemBuf.append(line));
		if (pemBuf.length() != 0)
		{
			ByteArrayInputStream bIn = new ByteArrayInputStream(Base64.decode(pemBuf.toString()));
			return readDERCRL(bIn);
		} else
		{
			return null;
		}
	}

	public Certificate engineGenerateCertificate(InputStream in)
		throws CertificateException
	{
		if (sData != null && sDataObjectCount != sData.getCertificates().size())
			return new X509CertificateObject(X509CertificateStructure.getInstance(sData.getCertificates().getObjectAt(sDataObjectCount++)));
		if (!in.markSupported())
			in = new BufferedInputStream(in);
		int tag;
		in.mark(10);
		tag = in.read();
		if (tag == -1)
			return null;
		if (tag == 48)
			break MISSING_BLOCK_LABEL_106;
		in.reset();
		return readPEMCertificate(in);
		if (in.read() != 128)
			break MISSING_BLOCK_LABEL_126;
		in.reset();
		return readPKCS7Certificate(in);
		in.reset();
		return readDERCertificate(in);
		IOException e;
		e;
		throw new CertificateException(e.toString());
	}

	public Collection engineGenerateCertificates(InputStream inStream)
		throws CertificateException
	{
		ArrayList certs = new ArrayList();
		Certificate cert;
		while ((cert = engineGenerateCertificate(inStream)) != null) 
			certs.add(cert);
		return certs;
	}

	public CRL engineGenerateCRL(InputStream inStream)
		throws CRLException
	{
		if (!inStream.markSupported())
			inStream = new BufferedInputStream(inStream);
		inStream.mark(10);
		if (inStream.read() == 48)
			break MISSING_BLOCK_LABEL_41;
		inStream.reset();
		return readPEMCRL(inStream);
		inStream.reset();
		return readDERCRL(inStream);
		IOException e;
		e;
		throw new CRLException(e.toString());
	}

	public Collection engineGenerateCRLs(InputStream inStream)
		throws CRLException
	{
		return null;
	}

	public Iterator engineGetCertPathEncodings()
	{
		return PKIXCertPath.certPathEncodings.iterator();
	}

	public CertPath engineGenerateCertPath(InputStream inStream)
		throws CertificateException
	{
		return engineGenerateCertPath(inStream, "PkiPath");
	}

	public CertPath engineGenerateCertPath(InputStream inStream, String encoding)
		throws CertificateException
	{
		return new PKIXCertPath(inStream, encoding);
	}

	public CertPath engineGenerateCertPath(List certificates)
		throws CertificateException
	{
		for (Iterator iter = certificates.iterator(); iter.hasNext();)
		{
			Object obj = iter.next();
			if (obj != null && !(obj instanceof X509Certificate))
				throw new CertificateException((new StringBuilder()).append("list contains none X509Certificate object while creating CertPath\n").append(obj.toString()).toString());
		}

		return new PKIXCertPath(certificates);
	}
}

⌨️ 快捷键说明

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