Bonjour à tous,

Y-a-t-il un moyen simple pour connaitre si un certificat (java.security.cert.Certificate ou java.security.cert.X509Certificate) est un certificat d'autorité ou un certificat utilisateur ?

Je veux lister les certificats stockés dans un magasin de certificats (Windows-My pour windows et le trousseau de clés keychainstore sous MAC OS).

Un exemple de code qui charge le Keystore windows avec SunMSCAPI:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null) ;
Enumeration en = ks.aliases() ;
while (en.hasMoreElements()) {
    String aliasKey = (String)en.nextElement() ;
    Certificate c = ks.getCertificate(aliasKey) ;
    System.out.println("---> alias : " + aliasKey) ;
 
     // CE QUE JE VEUX :
     if( c est un certificat autorité CA ) continue;
}
La méthode Keystore.isKeyEntry(aliasKey) permet de savoir si le certificat est un certificat enregistré avec une PrivateKey.
Cela marche bien sous windows mais pas sous Mac OS (avec le keystore chargé dans "KeychainStore" et "Apple").

Mon code doit fonctionner pour les 2 OS.

Est-ce qu'il existe une méthode pour déterminer si un certificat est un CA ou pas ?
Je n'ai pas forcément tous les certificats intermédiaires dans le magasin mais j'en ai quand même quelques un ...


Merci de votre aide !