home *** CD-ROM | disk | FTP | other *** search
- package sun.security.x509;
-
- import java.io.IOException;
- import java.security.InvalidKeyException;
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.NoSuchAlgorithmException;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.security.SecureRandom;
- import java.security.Signature;
- import java.security.SignatureException;
- import java.util.Date;
- import sun.security.pkcs.PKCS10;
- import sun.security.util.BigInt;
-
- public final class CertAndKeyGen {
- private SecureRandom prng;
- private String sigAlg;
- private KeyPairGenerator keyGen;
- private X509Key publicKey;
- private PrivateKey privateKey;
-
- public CertAndKeyGen(String var1, String var2) throws NoSuchAlgorithmException {
- this.keyGen = KeyPairGenerator.getInstance(var1);
- this.sigAlg = var2;
- }
-
- public void setRandom(SecureRandom var1) {
- this.prng = var1;
- }
-
- public void generate(int var1) throws InvalidKeyException {
- KeyPair var2;
- try {
- if (this.prng == null) {
- this.prng = new SecureRandom();
- }
-
- this.keyGen.initialize(var1, this.prng);
- var2 = this.keyGen.generateKeyPair();
- } catch (Exception var4) {
- throw new IllegalArgumentException(((Throwable)var4).getMessage());
- }
-
- PublicKey var3 = var2.getPublic();
- if (var3 instanceof X509Key) {
- this.publicKey = (X509Key)var3;
- this.privateKey = var2.getPrivate();
- } else {
- throw new InvalidKeyException("public key " + var3 + " not an X509Key.");
- }
- }
-
- public X509Key getPublicKey() {
- return this.publicKey;
- }
-
- public PrivateKey getPrivateKey() {
- return this.privateKey;
- }
-
- public X509Cert getSelfCert(X500Name var1, long var2) throws InvalidKeyException, SignatureException, NoSuchAlgorithmException {
- try {
- X500Signer var4 = this.getSigner(var1);
- Date var6 = new Date();
- Date var7 = new Date();
- var7.setTime(var7.getTime() + var2 * 1000L);
- X509Cert var5 = new X509Cert(var1, this.publicKey, var6, var7);
- var5.encodeAndSign(new BigInt((int)(var6.getTime() / 1000L)), var4);
- return var5;
- } catch (IOException var8) {
- throw new CertException(8, " getSelfCert");
- }
- }
-
- public PKCS10 getCertRequest(X500Name var1) throws InvalidKeyException, SignatureException {
- PKCS10 var2 = new PKCS10(this.publicKey);
-
- try {
- var2.encodeAndSign(this.getSigner(var1));
- return var2;
- } catch (IOException var3) {
- throw new SignatureException(this.sigAlg + " IOException");
- } catch (NoSuchAlgorithmException var4) {
- throw new SignatureException(this.sigAlg + " unavailable?");
- }
- }
-
- private X500Signer getSigner(X500Name var1) throws InvalidKeyException, NoSuchAlgorithmException {
- Signature var2 = Signature.getInstance(this.sigAlg);
- var2.initSign(this.privateKey);
- return new X500Signer(var2, var1);
- }
- }
-