j'ai utilisé pour accéder à la chaîne de certificats pour la signature PDF sur un jeton USB avec ce code:Impossible d'accéder à tous les alias de KeyStore sur Token USB
this._keyStore = KeyStore.getInstance("PKCS11");
this._keyStore.load(null, myPassword);
Enumeration<String> aliases = this._keyStore.aliases();
while (aliases.hasMoreElements()) {
String nextElement = (String) aliases.nextElement();
System.out.println("Enumeration element : "+nextElement);
try
{
this._privateKey = (PrivateKey) this._keyStore.getKey(nextElement, pass);
this._certificatesChain = (X509Certificate[]) this._keyStore.getCertificateChain(nextElement);
if (this._certificatesChain.length == 0)
{
//Let's try another
continue;
}
if (this._certificatesChain[0].getKeyUsage()[1])
{
//I want to use this
break;
}
}
catch (Exception e){continue;}
Je suis muni d'un nouveau jeton USB qui a gagné » t travailler avec ça. Il semble que l'utilisation de PKCS11 ne fera que lire l'un des deux certificats sur le Token, qui n'est pas celui que je suis censé utiliser pour la signature. La meilleure solution que j'ai trouvée est d'utiliser "Windows-MY" dans l'appel Keystore.getInstance(), qui peut accéder à tous les certificats (même ceux qui ne proviennent pas du Token, mais croisons-nous) . L'inconvénient majeur de ceci est que cela crée deux invites PIN pour l'ensemble du processus de signature: la première fois est l'invite que j'ai codé pour demander à l'utilisateur le code PIN; La deuxième fois, c'est quand j'essaye de signer - cette fois, avec une invite de Windows.
Existe-t-il un moyen d'accéder à tous les certificats avec une instance Keystore PKCS11 ou d'éviter l'invite Windows?
S'agit-il d'une clé de stockage USB standard ou d'un périphérique cryptographique? Dans le second cas, les broches sont normales pour des problèmes de sécurité. –
C'est un jeton de signature USB. – Lorenzo