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 boolean engineIsCertificateEntry(String alias) { ObjectData ent = (ObjectData)entries.get(alias); if (ent != null) { return ent.getType().equals(CERTIFICATE); } return false; }
private ObjectStoreIntegrityCheck(ASN1Encodable obj) { if (obj instanceof ASN1Sequence || obj instanceof PbkdMacIntegrityCheck) { this.type = PBKD_MAC_CHECK; this.integrityCheck = PbkdMacIntegrityCheck.getInstance(obj); } else if (obj instanceof ASN1TaggedObject) { this.type = SIG_CHECK; this.integrityCheck = SignatureCheck.getInstance(((ASN1TaggedObject)obj).getObject()); } else { throw new IllegalArgumentException("Unknown check object in integrity check."); } }
private void verifyMac(byte[] content, PbkdMacIntegrityCheck integrityCheck, char[] password) throws NoSuchAlgorithmException, IOException, NoSuchProviderException { byte[] check = calculateMac(content, integrityCheck.getMacAlgorithm(), integrityCheck.getPbkdAlgorithm(), password); if (!Arrays.constantTimeAreEqual(check, integrityCheck.getMac())) { throw new IOException("BCFKS KeyStore corrupted: MAC calculation failed"); } }
private ObjectStore(ASN1Sequence seq) { if (seq.size() != 2) { throw new IllegalArgumentException("malformed sequence"); } ASN1Encodable sData = seq.getObjectAt(0); if (sData instanceof EncryptedObjectStoreData) { this.storeData = sData; } else if (sData instanceof ObjectStoreData) { this.storeData = sData; } else { ASN1Sequence seqData = ASN1Sequence.getInstance(sData); if (seqData.size() == 2) { this.storeData = EncryptedObjectStoreData.getInstance(seqData); } else { this.storeData = ObjectStoreData.getInstance(seqData); } } this.integrityCheck = ObjectStoreIntegrityCheck.getInstance(seq.getObjectAt(1)); }
public static EncryptedPrivateKeyData getInstance(Object o) { if (o instanceof EncryptedPrivateKeyData) { return (EncryptedPrivateKeyData)o; } else if (o != null) { return new EncryptedPrivateKeyData(ASN1Sequence.getInstance(o)); } return null; }
public static ObjectStore getInstance(Object o) { if (o instanceof ObjectStore) { return (ObjectStore)o; } else if (o != null) { return new ObjectStore(ASN1Sequence.getInstance(o)); } return null; }
public static PbkdMacIntegrityCheck getInstance(Object o) { if (o instanceof PbkdMacIntegrityCheck) { return (PbkdMacIntegrityCheck)o; } else if (o != null) { return new PbkdMacIntegrityCheck(ASN1Sequence.getInstance(o)); } return null; }
public static SecretKeyData getInstance(Object o) { if (o instanceof SecretKeyData) { return (SecretKeyData)o; } else if (o != null) { return new SecretKeyData(ASN1Sequence.getInstance(o)); } return null; }
public static ObjectStoreData getInstance(Object o) { if (o instanceof ObjectStoreData) { return (ObjectStoreData)o; } else if (o != null) { return new ObjectStoreData(ASN1Sequence.getInstance(o)); } 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 static EncryptedSecretKeyData getInstance(Object o) { if (o instanceof EncryptedSecretKeyData) { return (EncryptedSecretKeyData)o; } else if (o != null) { return new EncryptedSecretKeyData(ASN1Sequence.getInstance(o)); } return null; }
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; }
public static EncryptedObjectStoreData getInstance(Object o) { if (o instanceof EncryptedObjectStoreData) { return (EncryptedObjectStoreData)o; } else if (o != null) { return new EncryptedObjectStoreData(ASN1Sequence.getInstance(o)); } return null; }
public static ObjectDataSequence getInstance( Object obj) { if (obj instanceof ObjectDataSequence) { return (ObjectDataSequence)obj; } else if (obj != null) { return new ObjectDataSequence(ASN1Sequence.getInstance(obj)); } 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 static SignatureCheck getInstance(Object o) { if (o instanceof SignatureCheck) { return (SignatureCheck)o; } else if (o != null) { return new SignatureCheck(ASN1Sequence.getInstance(o)); } return null; }
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; }
private EncryptedPrivateKeyData createPrivateKeySequence(EncryptedPrivateKeyInfo encryptedPrivateKeyInfo, Certificate[] chain) throws CertificateEncodingException { org.bouncycastle.asn1.x509.Certificate[] certChain = new org.bouncycastle.asn1.x509.Certificate[chain.length]; for (int i = 0; i != chain.length; i++) { certChain[i] = org.bouncycastle.asn1.x509.Certificate.getInstance(chain[i].getEncoded()); } return new EncryptedPrivateKeyData(encryptedPrivateKeyInfo, certChain); }
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; }