Enumerar los nombres de los contenedores del nombre fuerte CSP
Estoy tratando de encontrar información sobre cómo (si es posible) enumerar todos los nombres de los contenedores en el CSP (proveedor de servicios criptográficos) de nombre seguro.
Esencialmente, cuando escribessn.exe -i key.snk MyContainerName
, los pares de claves pública y privada se almacenan en lo que se llama un "contenedor". Más adelante, dentro de su código, puede especificar el nombre del contenedor en elAssemblyKeyNameAttribute
, p.ej.:
[assembly: AssemblyKeyName("MyContainerName")]
Esto hará que el ensamblado se firme en tiempo de compilación.
Estoy tratando de averiguar si es posible enumerar de alguna manera todos los nombres de los contenedores. Estoy escribiendo unplugin para ReSharper que proporciona la terminación de código para elInternalsVisibleTo
atributo. También me gustaría proporcionar la terminación del código para elAssemblyKeyName
atributo, donde yo pre-poblaría la lista con nombres de contenedores conocidos.
¿Es esta información accesible?
EDITAR: De un comentario enesta pregunta En IT Security StackExchange, hay un enlace a una pequeña utilidad llamadaKeyPal. Ejecutando esta utilidad conLM
Volcará el almacén de claves de la máquina local:
--------- KeyPal: MACHINE store: 3 keycontainers ---------
[0] VS_KEY_F726FDF898BC4CB8
Signature 1024
[1] IIS Express Development Certificate Container
Exchange 1024
CertE: CN=localhost
[2] MyContainerName
Signature 1024
-------------------------------------------------
Donde puedo ver que tanto [0] como [2] son nombres de contenedores válidos para usar conAssemblyKeyName
. Sin embargo, está el [1] uno, "IIS Express ...", que no es un contenedor válido. ¿Cómo distingo entre ellos?