public boolean engineIsCertificateEntry(String alias) { ObjectData ent = (ObjectData)entries.get(alias); if (ent != null) { return ent.getType().equals(CERTIFICATE); } return false; }
public boolean engineIsKeyEntry(String alias) { ObjectData ent = (ObjectData)entries.get(alias); if (ent != null) { BigInteger entryType = ent.getType(); return entryType.equals(PRIVATE_KEY) || entryType.equals(SECRET_KEY) || entryType.equals(PROTECTED_PRIVATE_KEY) || entryType.equals(PROTECTED_SECRET_KEY); } return false; }
public Certificate engineGetCertificate(String s) { ObjectData ent = (ObjectData)entries.get(s); if (ent != null) { if (ent.getType().equals(PRIVATE_KEY) || ent.getType().equals(PROTECTED_PRIVATE_KEY)) { EncryptedPrivateKeyData encPrivData = EncryptedPrivateKeyData.getInstance(ent.getData()); org.bouncycastle.asn1.x509.Certificate[] certificates = encPrivData.getCertificateChain(); return decodeCertificate(certificates[0]); } else if (ent.getType().equals(CERTIFICATE)) { return decodeCertificate(ent.getData()); } } return null; }
public Certificate[] engineGetCertificateChain(String alias) { ObjectData ent = (ObjectData)entries.get(alias); if (ent != null) { if (ent.getType().equals(PRIVATE_KEY) || ent.getType().equals(PROTECTED_PRIVATE_KEY)) { EncryptedPrivateKeyData encPrivData = EncryptedPrivateKeyData.getInstance(ent.getData()); org.bouncycastle.asn1.x509.Certificate[] certificates = encPrivData.getCertificateChain(); Certificate[] chain = new X509Certificate[certificates.length]; for (int i = 0; i != chain.length; i++) { chain[i] = decodeCertificate(certificates[i]); } return chain; } } return null; }
public void engineSetCertificateEntry(String alias, Certificate certificate) throws KeyStoreException { ObjectData entry = (ObjectData)entries.get(alias); Date creationDate = new Date(); Date lastEditDate = creationDate; if (entry != null) { if (!entry.getType().equals(CERTIFICATE)) { throw new KeyStoreException("BCFKS KeyStore already has a key entry with alias " + alias); } creationDate = extractCreationDate(entry, creationDate); } try { entries.put(alias, new ObjectData(CERTIFICATE, alias, creationDate, lastEditDate, certificate.getEncoded(), null)); } catch (CertificateEncodingException e) { throw new ExtKeyStoreException("BCFKS KeyStore unable to handle certificate: " + e.getMessage(), e); } lastModifiedDate = lastEditDate; }