public static ObjectData getInstance( Object obj) { if (obj instanceof ObjectData) { return (ObjectData)obj; } else if (obj != null) { return new ObjectData(ASN1Sequence.getInstance(obj)); } return null; }
private Date extractCreationDate(ObjectData entry, Date creationDate) { try { creationDate = entry.getCreationDate().getDate(); } catch (ParseException e) { // this should never happen, if it does we'll leave creation date unmodified and hope for the best. } return creationDate; }
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 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; }
ObjectData objData = ObjectData.getInstance(it.next()); entries.put(objData.getIdentifier(), objData);
public boolean engineIsCertificateEntry(String alias) { ObjectData ent = (ObjectData)entries.get(alias); if (ent != null) { return ent.getType().equals(CERTIFICATE); } return false; }
public Date engineGetCreationDate(String s) { ObjectData ent = (ObjectData)entries.get(s); if (ent != null) { try { // we return last modified as it represents date current state of entry was created return ent.getLastModifiedDate().getDate(); } catch (ParseException e) { return new Date(); // it's here, but... } } return null; }
private ObjectDataSequence(ASN1Sequence seq) { dataSequence = new ASN1Encodable[seq.size()]; for (int i = 0; i != dataSequence.length; i++) { dataSequence[i] = ObjectData.getInstance(seq.getObjectAt(i)); } }
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[] 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; }
entries.put(alias, new ObjectData(PROTECTED_PRIVATE_KEY, alias, creationDate, lastEditDate, createPrivateKeySequence(encInfo, chain).getEncoded(), null)); entries.put(alias, new ObjectData(PROTECTED_SECRET_KEY, alias, creationDate, lastEditDate, keyBytes, null));
ObjectData ent = (ObjectData)entries.get(alias); if (ent.getType().equals(CERTIFICATE)) if (Arrays.areEqual(ent.getData(), encodedCert)) else if (ent.getType().equals(PRIVATE_KEY) || ent.getType().equals(PROTECTED_PRIVATE_KEY)) EncryptedPrivateKeyData encPrivData = EncryptedPrivateKeyData.getInstance(ent.getData()); if (Arrays.areEqual(encPrivData.getCertificateChain()[0].toASN1Primitive().getEncoded(), encodedCert))
entries.put(alias, new ObjectData(PRIVATE_KEY, alias, creationDate, lastEditDate, keySeq.getEncoded(), null)); entries.put(alias, new ObjectData(SECRET_KEY, alias, creationDate, lastEditDate, keyData.getEncoded(), null));
if (ent.getType().equals(PRIVATE_KEY) || ent.getType().equals(PROTECTED_PRIVATE_KEY)) EncryptedPrivateKeyData encPrivData = EncryptedPrivateKeyData.getInstance(ent.getData()); EncryptedPrivateKeyInfo encInfo = EncryptedPrivateKeyInfo.getInstance(encPrivData.getEncryptedPrivateKeyInfo()); else if (ent.getType().equals(SECRET_KEY) || ent.getType().equals(PROTECTED_SECRET_KEY)) EncryptedSecretKeyData encKeyData = EncryptedSecretKeyData.getInstance(ent.getData());