use of org.mozilla.jss.crypto.ObjectNotFoundException in project jss by dogtagpki.
the class JSSKeyStoreSpi method engineDeleteEntry.
@Override
public void engineDeleteEntry(String alias) throws KeyStoreException {
try {
CryptoManager manager = CryptoManager.getInstance();
try {
logger.debug("JSSKeyStoreSpi: searching for cert");
X509Certificate cert = manager.findCertByNickname(alias);
CryptoToken token;
if (cert instanceof TokenCertificate) {
TokenCertificate tokenCert = (TokenCertificate) cert;
token = tokenCert.getOwningToken();
} else {
token = manager.getInternalKeyStorageToken();
}
CryptoStore store = token.getCryptoStore();
logger.debug("JSSKeyStoreSpi: deleting cert: " + alias);
store.deleteCertOnly(cert);
return;
} catch (ObjectNotFoundException e) {
logger.debug("JSSKeyStoreSpi: cert not found, searching for key");
}
String[] parts = parseAlias(alias);
String tokenName = parts[0];
String nickname = parts[1];
CryptoToken token;
if (tokenName == null) {
token = manager.getInternalKeyStorageToken();
} else {
token = manager.getTokenByName(tokenName);
}
CryptoStore store = token.getCryptoStore();
logger.debug("JSSKeyStoreSpi: searching for private key");
for (PrivateKey privateKey : store.getPrivateKeys()) {
// convert key ID into hexadecimal
String keyID = Utils.HexEncode(privateKey.getUniqueID());
logger.debug("JSSKeyStoreSpi: - " + keyID);
if (!nickname.equals(keyID)) {
continue;
}
try {
logger.debug("JSSKeyStoreSpi: searching for public key: " + nickname);
PublicKey publicKey = store.findPublicKey(privateKey);
logger.debug("JSSKeyStoreSpi: deleting public key: " + nickname);
store.deletePublicKey(publicKey);
} catch (ObjectNotFoundException e) {
logger.debug("JSSKeyStoreSpi: public key not found: " + nickname);
}
logger.debug("JSSKeyStoreSpi: deleting private key: " + nickname);
store.deletePrivateKey(privateKey);
return;
}
logger.debug("JSSKeyStoreSpi: entry not found: " + alias);
throw new KeyStoreException("Entry not found: " + alias);
} catch (NotInitializedException e) {
throw new KeyStoreException(e);
} catch (NoSuchTokenException e) {
throw new KeyStoreException(e);
} catch (TokenException e) {
throw new KeyStoreException(e);
} catch (NoSuchItemOnTokenException e) {
throw new KeyStoreException(e);
}
}
use of org.mozilla.jss.crypto.ObjectNotFoundException in project jss by dogtagpki.
the class JSSKeyStoreSpi method engineIsCertificateEntry.
/**
* Returns true if there is a cert with this nickname but there is no
* key associated with the cert.
*/
@Override
public boolean engineIsCertificateEntry(String alias) {
logger.debug("JSSKeyStoreSpi: engineIsCertificateEntry(" + alias + ")");
try {
CryptoManager cm = CryptoManager.getInstance();
cm.findCertByNickname(alias);
logger.debug("JSSKeyStoreSpi: cert found: " + alias);
return true;
} catch (ObjectNotFoundException e) {
logger.debug("JSSKeyStoreSpi: cert not found: " + alias);
return false;
} catch (NotInitializedException e) {
throw new RuntimeException(e);
} catch (TokenException e) {
throw new RuntimeException(e);
}
}
use of org.mozilla.jss.crypto.ObjectNotFoundException in project jss by dogtagpki.
the class JSSKeyStoreSpi method engineGetCertificateChain.
@Override
public Certificate[] engineGetCertificateChain(String alias) {
logger.debug("JSSKeyStoreSpi: engineGetCertificateChain(" + alias + ")");
try {
logger.debug("JSSKeyStoreSpi: searching for leaf cert");
CryptoManager cm = CryptoManager.getInstance();
X509Certificate leaf = cm.findCertByNickname(alias);
logger.debug("JSSKeyStoreSpi: building cert chain");
X509Certificate[] certs = cm.buildCertificateChain(leaf);
Certificate[] chain = new Certificate[certs.length];
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
for (int i = 0; i < certs.length; i++) {
X509Certificate cert = certs[i];
logger.debug("JSSKeyStoreSpi: - " + cert.getSubjectDN());
if (cert instanceof PK11Cert) {
chain[i] = (PK11Cert) cert;
continue;
}
byte[] bytes = cert.getEncoded();
InputStream is = new ByteArrayInputStream(bytes);
chain[i] = certFactory.generateCertificate(is);
}
return chain;
} catch (ObjectNotFoundException e) {
logger.debug("leaf cert not found: " + alias);
return null;
} catch (NotInitializedException e) {
throw new RuntimeException(e);
} catch (TokenException e) {
throw new RuntimeException(e);
} catch (CertificateException e) {
throw new RuntimeException(e);
}
}
use of org.mozilla.jss.crypto.ObjectNotFoundException in project jss by dogtagpki.
the class JSSKeyStoreSpi method engineGetCertificate.
@Override
public Certificate engineGetCertificate(String alias) {
logger.debug("JSSKeyStoreSpi: engineGetCertificate(" + alias + ")");
try {
CryptoManager cm = CryptoManager.getInstance();
X509Certificate cert = cm.findCertByNickname(alias);
logger.debug("JSSKeyStoreSpi: cert found: " + alias);
if (cert instanceof PK11Cert) {
return (PK11Cert) cert;
}
byte[] bytes = cert.getEncoded();
InputStream is = new ByteArrayInputStream(bytes);
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
return certFactory.generateCertificate(is);
} catch (ObjectNotFoundException e) {
logger.debug("JSSKeyStoreSpi: cert not found: " + alias);
return null;
} catch (NotInitializedException e) {
throw new RuntimeException(e);
} catch (TokenException e) {
throw new RuntimeException(e);
} catch (CertificateEncodingException e) {
throw new RuntimeException(e);
} catch (CertificateException e) {
throw new RuntimeException(e);
}
}
Aggregations