¿Cómo puedo obtener el nombre de un contenedor de claves que se encuentra en una tarjeta inteligente requerida para la inicialización de parámetros de Csp?
CspParameters^ cspa = gcnew CspParameters(ProviderType, ProviderName, keyContainerName, cryptoSecurityKey, securityString);
RSACryptoServiceProvider^ csp = gcnew RSACryptoServiceProvider(cspa);
Como los certificados de tarjetas inteligentes se instalan automáticamente en un almacén de certificados personales, he intentado buscar keyContainerName
en X509Certificate2 y no lo encontré allí.
Logré encontrar un nombre de contenedor de una de las claves fuera de C ++ usando certutils.exe, y de esa manera, acabo de ingresar ese nombre y logré generar una firma digital usando el RSACryptoServiceProvider mencionado anteriormente. Funciona a la perfección. ¿Qué puedo hacer con otros certificados con los que se podría usar el software? No puedo pedir a los usuarios que ingresen el nombre del contenedor manualmente.
Pero, por lo que entiendo, si no proporciono el nombre del contenedor (lo dejo vacío), no funciona. Así que necesito una forma de encontrar / obtener un nombre de contenedor clave para cualquier certificado en cualquier tarjeta inteligente dentro del código del programa.
Desafortunadamente, la mayoría de los ejemplos que he visto en Internet proporcionan un nombre de contenedor predefinido constante (como "ejemplo" o "prueba", como aquí enlace ), que es inútil en la vida real.