<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FCertificateFactory</id>
		<title>Java Tutorial/Security/CertificateFactory - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FCertificateFactory"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/CertificateFactory&amp;action=history"/>
		<updated>2026-04-27T00:08:25Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/CertificateFactory&amp;diff=4360&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/CertificateFactory&amp;diff=4360&amp;oldid=prev"/>
				<updated>2010-06-01T05:01:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:01, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/CertificateFactory&amp;diff=4359&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/CertificateFactory&amp;diff=4359&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Creating a Certification Path ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.KeyStore;&lt;br /&gt;
import java.security.cert.CertPath;&lt;br /&gt;
import java.security.cert.Certificate;&lt;br /&gt;
import java.security.cert.CertificateFactory;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    FileInputStream is = new FileInputStream(&amp;quot;your.keystore&amp;quot;);&lt;br /&gt;
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());&lt;br /&gt;
    keystore.load(is, &amp;quot;my-keystore-password&amp;quot;.toCharArray());&lt;br /&gt;
    String alias = &amp;quot;myalias&amp;quot;;&lt;br /&gt;
    Certificate cert = keystore.getCertificate(alias);&lt;br /&gt;
    CertificateFactory certFact = CertificateFactory.getInstance(&amp;quot;X.509&amp;quot;);&lt;br /&gt;
    CertPath path = certFact.generateCertPath(Arrays.asList(new Certificate[]{cert}));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Importing a Certificate from a File ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.security.cert.CertificateFactory;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    FileInputStream is = new FileInputStream(new File(&amp;quot;your&amp;quot;));&lt;br /&gt;
    CertificateFactory cf = CertificateFactory.getInstance(&amp;quot;X.509&amp;quot;);&lt;br /&gt;
    java.security.cert.Certificate cert = cf.generateCertificate(is);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  reading multiple certificates with a CertificateFactory. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.ByteArrayInputStream;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.math.BigInteger;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.NoSuchProviderException;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.Security;&lt;br /&gt;
import java.security.SignatureException;&lt;br /&gt;
import java.security.cert.CertificateFactory;&lt;br /&gt;
import java.security.cert.X509Certificate;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import javax.security.auth.x500.X500Principal;&lt;br /&gt;
import org.bouncycastle.x509.X509V1CertificateGenerator;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    KeyPair pair = generateRSAKeyPair();&lt;br /&gt;
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();&lt;br /&gt;
    bOut.write(generateV1Certificate(pair).getEncoded());&lt;br /&gt;
    bOut.close();&lt;br /&gt;
    InputStream in = new ByteArrayInputStream(bOut.toByteArray());&lt;br /&gt;
    CertificateFactory fact = CertificateFactory.getInstance(&amp;quot;X.509&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    X509Certificate x509Cert;&lt;br /&gt;
    Collection collection = new ArrayList();&lt;br /&gt;
    while ((x509Cert = (X509Certificate) fact.generateCertificate(in)) != null) {&lt;br /&gt;
      collection.add(x509Cert);&lt;br /&gt;
    }&lt;br /&gt;
    Iterator it = collection.iterator();&lt;br /&gt;
    while (it.hasNext()) {&lt;br /&gt;
      System.out.println(&amp;quot;version: &amp;quot; + ((X509Certificate) it.next()).getVersion());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static X509Certificate generateV1Certificate(KeyPair pair) throws InvalidKeyException,&lt;br /&gt;
      NoSuchProviderException, SignatureException {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();&lt;br /&gt;
    certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));&lt;br /&gt;
    certGen.setIssuerDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setNotBefore(new Date(System.currentTimeMillis() - 10000));&lt;br /&gt;
    certGen.setNotAfter(new Date(System.currentTimeMillis() + 10000));&lt;br /&gt;
    certGen.setSubjectDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setPublicKey(pair.getPublic());&lt;br /&gt;
    certGen.setSignatureAlgorithm(&amp;quot;SHA256WithRSAEncryption&amp;quot;);&lt;br /&gt;
    return certGen.generateX509Certificate(pair.getPrivate(), &amp;quot;BC&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static KeyPair generateRSAKeyPair() throws Exception {&lt;br /&gt;
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance(&amp;quot;RSA&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    kpGen.initialize(1024, new SecureRandom());&lt;br /&gt;
    return kpGen.generateKeyPair();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using the CertificateFactory Class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.ByteArrayInputStream;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.math.BigInteger;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.NoSuchProviderException;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.Security;&lt;br /&gt;
import java.security.SignatureException;&lt;br /&gt;
import java.security.cert.CertificateFactory;&lt;br /&gt;
import java.security.cert.X509Certificate;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import javax.security.auth.x500.X500Principal;&lt;br /&gt;
import org.bouncycastle.x509.X509V1CertificateGenerator;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    KeyPair pair = generateRSAKeyPair();&lt;br /&gt;
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();&lt;br /&gt;
    bOut.write(generateV1Certificate(pair).getEncoded());&lt;br /&gt;
    bOut.close();&lt;br /&gt;
    InputStream in = new ByteArrayInputStream(bOut.toByteArray());&lt;br /&gt;
    CertificateFactory fact = CertificateFactory.getInstance(&amp;quot;X.509&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    X509Certificate x509Cert = (X509Certificate) fact.generateCertificate(in);&lt;br /&gt;
    System.out.println(&amp;quot;issuer: &amp;quot; + x509Cert.getIssuerX500Principal());&lt;br /&gt;
  }&lt;br /&gt;
  public static X509Certificate generateV1Certificate(KeyPair pair) throws InvalidKeyException,&lt;br /&gt;
      NoSuchProviderException, SignatureException {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();&lt;br /&gt;
    certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));&lt;br /&gt;
    certGen.setIssuerDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setNotBefore(new Date(System.currentTimeMillis() - 10000));&lt;br /&gt;
    certGen.setNotAfter(new Date(System.currentTimeMillis() + 10000));&lt;br /&gt;
    certGen.setSubjectDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setPublicKey(pair.getPublic());&lt;br /&gt;
    certGen.setSignatureAlgorithm(&amp;quot;SHA256WithRSAEncryption&amp;quot;);&lt;br /&gt;
    return certGen.generateX509Certificate(pair.getPrivate(), &amp;quot;BC&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static KeyPair generateRSAKeyPair() throws Exception {&lt;br /&gt;
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance(&amp;quot;RSA&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    kpGen.initialize(1024, new SecureRandom());&lt;br /&gt;
    return kpGen.generateKeyPair();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>