Я пытаюсь найти некоторую информацию о том, как (если вообще возможно) перечислять все имена контейнеров в Сильном имени CSP (поставщик криптографических услуг).
По существу, когда вы вводите sn.exe -i key.snk MyContainerName
, пары открытого и закрытого ключей хранятся в том, что называется "контейнером". Позже в вашем коде вы можете указать имя контейнера в AssemblyKeyNameAttribute
, например:
[assembly: AssemblyKeyName("MyContainerName")]
Это приведет к тому, что сборка будет подписана во время компиляции.
Я пытаюсь выяснить, возможно ли каким-либо образом перечислить все имена контейнеров. Я пишу плагин для ReSharper, который обеспечивает завершение кода для атрибута InternalsVisibleTo
. Я также хотел бы предоставить завершение кода для атрибута AssemblyKeyName
, где я бы предварительно заполнил список известными именами контейнеров.
Доступна ли эта информация?
РЕДАКТИРОВАТЬ: Из комментария к этому вопросу в IT Security StackExchange есть ссылка на небольшую утилиту, называемую KeyPal. Запуск этой утилиты с помощью LM
приведет к удалению хранилища ключей локального компьютера:
--------- 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 -------------------------------------------------
Где я могу видеть, что оба [0] и [2] являются допустимыми именами контейнеров для использования с AssemblyKeyName
. Однако там [1] один - "IIS Express...", который не является допустимым контейнером. Как их отличить?