if (Configuration.DEBUG)
  void start() throws KeyStoreException, NoSuchAlgorithmException,      UnrecoverableKeyException, IOException, UnsupportedCallbackException,      InvalidKeyException, SignatureException, CertificateException  {    log.entering(getClass().getName(), "start"); //$NON-NLS-1$    // 1. get the key entry and certificate chain associated to alias    Key privateKey = getAliasPrivateKey();    Certificate[] chain = store.getCertificateChain(alias);    // 2. if the user has not supplied a DN use one from the certificate chain    X509Certificate bottomCertificate = (X509Certificate) chain[0];    X500Principal defaultPrincipal = bottomCertificate.getIssuerX500Principal();    setDName(_dName, defaultPrincipal);    // 4. get alias's public key from certificate's SubjectPublicKeyInfo    PublicKey publicKey = bottomCertificate.getPublicKey();    // 5. issue the self-signed certificate    setSignatureAlgorithmParam(_sigAlgorithm, privateKey);    byte[] derBytes = getSelfSignedCertificate(distinguishedName,                                               publicKey,                                               (PrivateKey) privateKey);    CertificateFactory x509Factory = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$    ByteArrayInputStream bais = new ByteArrayInputStream(derBytes);    Certificate certificate = x509Factory.generateCertificate(bais);    // 6. store it, w/ its private key, associating them to alias    chain = new Certificate[] { certificate };    store.setKeyEntry(alias, privateKey, keyPasswordChars, chain);    // 7. persist the key store    saveKeyStore();    log.exiting(getClass().getName(), "start"); //$NON-NLS-1$  }