Come posso ottenere il nome di un Key Container che è in una smart card richiesta per l'inizializzazione di CspParameters?
CspParameters^ cspa = gcnew CspParameters(ProviderType, ProviderName, keyContainerName, cryptoSecurityKey, securityString);
RSACryptoServiceProvider^ csp = gcnew RSACryptoServiceProvider(cspa);
Poiché i certificati delle smart card vengono installati automaticamente in un archivio di certificati personali, ho provato a cercare keyContainerName
in X509Certificate2 e non sono riuscito a trovarlo lì.
Sono riuscito a trovare un nome contenitore di una delle chiavi al di fuori di C ++ usando certutils.exe, e in questo modo, ho appena inserito quel nome e sono riuscito a generare una firma digitale utilizzando il summenzionato RSACryptoServiceProvider. Funziona magnificamente. Cosa posso fare con altri certificati con cui il software potrebbe essere utilizzato? Non posso chiedere agli utenti di inserire manualmente il nome del contenitore.
Ma, da quello che ho capito, se non fornisco il nome del contenitore (lascialo vuoto), non funziona. Quindi ho bisogno di un modo per trovare / ottenere un nome di contenitore chiave per qualsiasi certificato in qualsiasi smart card all'interno del codice del programma.
Sfortunatamente, la maggior parte degli esempi che ho visto su Internet forniscono un nome di contenitore predefinito costante (come "esempio" o "test" - come qui link ), che è inutile nella vita reale.