KeyStoreTest.java :  » App » staaar » ssi » peeno » test » Android Open Source

Android Open Source » App » staaar 
staaar » ssi » peeno » test » KeyStoreTest.java
package ssi.peeno.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.Security;
import java.security.SignatureException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Date;

import org.bouncycastle.asn1.x509.X509Name;
import org.bouncycastle.x509.X509V1CertificateGenerator;

public class KeyStoreTest {
  @SuppressWarnings("deprecation")
  public static void main(String args[]) {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    String pwd = "pwd";
    String keyStoreFile = "keyStore.bin";
    FileInputStream fin = null;
    FileOutputStream fout = null;
    KeyPairGenerator kpg = null;
    X509V1CertificateGenerator certGen = null;
    X509Certificate cert = null;
    try {
      kpg = KeyPairGenerator.getInstance("RSA", "BC");
    } catch (NoSuchAlgorithmException e1) {
      e1.printStackTrace();
    } catch (NoSuchProviderException e1) {
      e1.printStackTrace();
    }
    kpg.initialize(1024);
    KeyPair pair = kpg.generateKeyPair();
    try {
      fout = new FileOutputStream(keyStoreFile);
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    try {
      certGen = new X509V1CertificateGenerator();
      certGen.setPublicKey(pair.getPublic());
      certGen.setSerialNumber(new BigInteger("123098273987612873618792638"));
      X509Name name = new X509Name("C=IT EmailAddress=kamei86i@gmail.com"); 
      certGen.setIssuerDN(name);
      certGen.setSubjectDN(name);
      certGen.setNotBefore(new Date());
      Date afterDate = new Date();
      afterDate.setYear(2020);
      certGen.setNotAfter(afterDate);
      certGen.setSignatureAlgorithm("SHA1WithRSA");
      cert = certGen.generate(pair.getPrivate(), "BC");
    } catch (CertificateException e) {
      e.printStackTrace();
    } catch (InvalidKeyException e) {
      e.printStackTrace();
    } catch (IllegalStateException e) {
      e.printStackTrace();
    } catch (NoSuchProviderException e) {
      e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (SignatureException e) {
      e.printStackTrace();
    }
    KeyStore ks = null;
    try {
      ks = KeyStore.getInstance("JCEKS");
      ks.load(null, pwd.toCharArray());
    } catch (KeyStoreException e) {
      e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (CertificateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    try {
      ks.setKeyEntry("server", pair.getPrivate(), pwd.toCharArray() , new Certificate[] { cert });
      ks.setCertificateEntry("userP1", cert);
    } catch (KeyStoreException e) {
      e.printStackTrace();
    }
    try {
      ks.store(fout, pwd.toCharArray());
    } catch (KeyStoreException e) {
      e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (CertificateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    X509Certificate certLoad = null;
    try {
      certLoad = (X509Certificate) ks.getCertificate("server");
    } catch (KeyStoreException e) {
      e.printStackTrace();
    }
    PublicKey k = certLoad.getPublicKey();
    System.out.println("Created: " + pair.getPublic().toString());
    System.out.println("Loaded: " + k.toString());
    try {
      System.out.println("OnlyCertificate Loaded: " + ks.getCertificate("userP1").getPublicKey().toString());
    } catch (KeyStoreException e) {
      e.printStackTrace();
    }
    try {
      fout.flush();
      fout.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    
    //Read only
    System.out.println("-----------------ReadOnly---------------");
    KeyStore ks1 = null;
    try {
      fin = new FileInputStream(keyStoreFile);
      ks1 = KeyStore.getInstance("JCEKS");
      ks1.load(fin, pwd.toCharArray());
    } catch (KeyStoreException e) {
      e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (CertificateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    X509Certificate certLoad1 = null;
    try {
      certLoad1 = (X509Certificate) ks1.getCertificate("server");
    } catch (KeyStoreException e) {
      e.printStackTrace();
    }
    PublicKey k1 = certLoad1.getPublicKey();
    System.out.println("Loaded: " + k1.toString());
    try {
      System.out.println("OnlyCertificate Loaded: " + ks1.getCertificate("userP1").getPublicKey().toString());
    } catch (KeyStoreException e) {
      e.printStackTrace();
    }
    try {
      fin.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.