diff -r 38548d32c91c src/macosx/classes/apple/security/KeychainStore.java --- a/src/macosx/classes/apple/security/KeychainStore.java Wed Jun 11 09:31:15 2014 -0700 +++ b/src/macosx/classes/apple/security/KeychainStore.java Fri Jun 13 10:30:14 2014 +0200 @@ -279,11 +279,13 @@ if (entry instanceof TrustedCertEntry) { return ((TrustedCertEntry)entry).cert; } else { - if (((KeyEntry)entry).chain == null) { + if(((KeyEntry) entry).chain == null) { return null; - } else { - return ((KeyEntry)entry).chain[0]; } + if(((KeyEntry) entry).chain.length == 0) { + return null; + } + return ((KeyEntry) entry).chain[0]; } } else { return null; @@ -601,14 +603,19 @@ for (Enumeration e = entries.keys(); e.hasMoreElements(); ) { String alias = (String)e.nextElement(); Object entry = entries.get(alias); - if (entry instanceof TrustedCertEntry) { - certElem = ((TrustedCertEntry)entry).cert; - } else if (((KeyEntry)entry).chain != null) { - certElem = ((KeyEntry)entry).chain[0]; - } else { + if(entry instanceof TrustedCertEntry) { + certElem = ((TrustedCertEntry) entry).cert; + } + else if(((KeyEntry) entry).chain == null) { continue; } - if (certElem.equals(cert)) { + else if(((KeyEntry) entry).chain.length == 0) { + continue; + } + else { + certElem = ((KeyEntry) entry).chain[0]; + } + if(certElem.equals(cert)) { return alias; } } diff -r 38548d32c91c src/macosx/native/apple/security/KeystoreImpl.m --- a/src/macosx/native/apple/security/KeystoreImpl.m Wed Jun 11 09:31:15 2014 -0700 +++ b/src/macosx/native/apple/security/KeystoreImpl.m Fri Jun 13 10:30:14 2014 +0200 @@ -279,7 +279,7 @@ // Search the user keychain list for all identities. Identities are a certificate/private key association that // can be chosen for a purpose such as signing or an SSL connection. SecIdentitySearchRef identitySearch = NULL; - OSStatus err = SecIdentitySearchCreate(NULL, CSSM_KEYUSE_ANY, &identitySearch); + OSStatus err = SecIdentitySearchCreate(NULL, 0 /*Pass 0 if you want all identities returned by this search*/, &identitySearch); SecIdentityRef theIdentity = NULL; OSErr searchResult = noErr;