Enumerando nomes de contêiner do nome forte CSP
Eu estou tentando encontrar algumas informações sobre como (se possível) enumerar todos os nomes de contêiner no CSP de nome forte (provedor de serviços de criptografia).
Essencialmente, quando você digitasn.exe -i key.snk MyContainerName
, os pares de chaves pública e privada são armazenados no que é chamado de "contêiner". Mais tarde, dentro do seu código, você poderia especificar o nome do contêiner noAssemblyKeyNameAttribute
, por exemplo.:
[assembly: AssemblyKeyName("MyContainerName")]
Isso fará com que o assembly seja assinado em tempo de compilação.
Eu estou tentando descobrir se é possível enumerar de alguma forma todos os nomes de contêineres. Estou escrevendo umplugin para ReSharper que fornece o preenchimento de código para oInternalsVisibleTo
atributo. Eu também gostaria de fornecer a conclusão de código para oAssemblyKeyName
attribute, onde eu preencheria previamente a lista com nomes de contêiner conhecidos.
Esta informação é acessível?
EDITAR: De um comentário sobreessa questão no IT Security StackExchange, há um link para um pequeno utilitário chamadoKeyPal. Executando este utilitário comLM
irá descarregar o armazenamento de chaves da 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
-------------------------------------------------
Onde eu posso ver que ambos [0] e [2] são nomes de contêiner válidos para usar comAssemblyKeyName
. No entanto, existe o [1] one - "IIS Express ...", que não é um contêiner válido. Como faço para distinguir entre eles?