home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / security / x509 / CertAndKeyGen.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.7 KB  |  96 lines

  1. package sun.security.x509;
  2.  
  3. import java.io.IOException;
  4. import java.security.InvalidKeyException;
  5. import java.security.KeyPair;
  6. import java.security.KeyPairGenerator;
  7. import java.security.NoSuchAlgorithmException;
  8. import java.security.PrivateKey;
  9. import java.security.PublicKey;
  10. import java.security.SecureRandom;
  11. import java.security.Signature;
  12. import java.security.SignatureException;
  13. import java.util.Date;
  14. import sun.security.pkcs.PKCS10;
  15. import sun.security.util.BigInt;
  16.  
  17. public final class CertAndKeyGen {
  18.    private SecureRandom prng;
  19.    private String sigAlg;
  20.    private KeyPairGenerator keyGen;
  21.    private X509Key publicKey;
  22.    private PrivateKey privateKey;
  23.  
  24.    public CertAndKeyGen(String var1, String var2) throws NoSuchAlgorithmException {
  25.       this.keyGen = KeyPairGenerator.getInstance(var1);
  26.       this.sigAlg = var2;
  27.    }
  28.  
  29.    public void setRandom(SecureRandom var1) {
  30.       this.prng = var1;
  31.    }
  32.  
  33.    public void generate(int var1) throws InvalidKeyException {
  34.       KeyPair var2;
  35.       try {
  36.          if (this.prng == null) {
  37.             this.prng = new SecureRandom();
  38.          }
  39.  
  40.          this.keyGen.initialize(var1, this.prng);
  41.          var2 = this.keyGen.generateKeyPair();
  42.       } catch (Exception var4) {
  43.          throw new IllegalArgumentException(((Throwable)var4).getMessage());
  44.       }
  45.  
  46.       PublicKey var3 = var2.getPublic();
  47.       if (var3 instanceof X509Key) {
  48.          this.publicKey = (X509Key)var3;
  49.          this.privateKey = var2.getPrivate();
  50.       } else {
  51.          throw new InvalidKeyException("public key " + var3 + " not an X509Key.");
  52.       }
  53.    }
  54.  
  55.    public X509Key getPublicKey() {
  56.       return this.publicKey;
  57.    }
  58.  
  59.    public PrivateKey getPrivateKey() {
  60.       return this.privateKey;
  61.    }
  62.  
  63.    public X509Cert getSelfCert(X500Name var1, long var2) throws InvalidKeyException, SignatureException, NoSuchAlgorithmException {
  64.       try {
  65.          X500Signer var4 = this.getSigner(var1);
  66.          Date var6 = new Date();
  67.          Date var7 = new Date();
  68.          var7.setTime(var7.getTime() + var2 * 1000L);
  69.          X509Cert var5 = new X509Cert(var1, this.publicKey, var6, var7);
  70.          var5.encodeAndSign(new BigInt((int)(var6.getTime() / 1000L)), var4);
  71.          return var5;
  72.       } catch (IOException var8) {
  73.          throw new CertException(8, " getSelfCert");
  74.       }
  75.    }
  76.  
  77.    public PKCS10 getCertRequest(X500Name var1) throws InvalidKeyException, SignatureException {
  78.       PKCS10 var2 = new PKCS10(this.publicKey);
  79.  
  80.       try {
  81.          var2.encodeAndSign(this.getSigner(var1));
  82.          return var2;
  83.       } catch (IOException var3) {
  84.          throw new SignatureException(this.sigAlg + " IOException");
  85.       } catch (NoSuchAlgorithmException var4) {
  86.          throw new SignatureException(this.sigAlg + " unavailable?");
  87.       }
  88.    }
  89.  
  90.    private X500Signer getSigner(X500Name var1) throws InvalidKeyException, NoSuchAlgorithmException {
  91.       Signature var2 = Signature.getInstance(this.sigAlg);
  92.       var2.initSign(this.privateKey);
  93.       return new X500Signer(var2, var1);
  94.    }
  95. }
  96.