Библиотека PKCS # 11 в C#

#c# #dll #pkcs#11

#c# #dll #pkcs #11

Вопрос:

Мне нужно написать библиотеку PKCS11 для какой-нибудь смарт-карты. Я разработчик C #, и я не хочу использовать другие языки. Я использую platform invoke для связи с cards API (это не PKCS11).

Как я могу написать библиотеку с интерфейсом PKCS11 на C #, которая будет доступна не только для .Net. Какие технологии я должен использовать, что я должен знать (я никогда раньше этого не делал)? Надеюсь, мне будет достаточно некоторых ключевых слов в этой теме для начала. В каком направлении я должен копать?

Спасибо.

Комментарии:

1. Что вы подразумеваете под будет доступно не только для .Net? Означает ли это, что вы хотите, чтобы она использовалась другими языками? Если да, то на каких языках?

2. Новые читатели: пожалуйста, обратите внимание, что C # очень далек от хорошего выбора для реализации библиотек PKCS # 11. PKCS # 11 — это спецификация интерфейса C для токенов безопасности, и она использует «шаблоны» практически для всего. Шаблоны состоят из (частично заполненных) структур данных, которые будет заполнять интерфейс PKCS #11. Основной структурой данных является байт. Лучше прочитать K amp; R на языке C и продолжить работу с ним.

Ответ №1:

Вы можете использовать эту библиотеку: pkcs11.net

Оболочка Pkcs11 для .Net, написанная на C #. Поддерживаемые методы: TokeInfo / SlotInfo, открытие / закрытие сеанса, вход / выход из системы, поиск объектов, дайджест, подпись / проверка, шифрование / дешифрование

Ответ №2:

Найдите «как создать неуправляемую DLL в C #«. Тем не менее, я должен сказать, что идея создания библиотеки DLL драйвера PKCS # 11 в C # далека от идеала по ряду причин, которые вы найдете в статьях, найденных по приведенной выше ссылке для поиска.

Ответ №3:

Я не понимаю, почему вы хотите это сделать, но PKCS # 11 — это не Windows, CSP, хотя некоторые приложения используют PKCS # 11, такие как Mozilla, но я действительно рекомендую, если вы хотите создать PKCS # 11, сделайте это на C или C , чтобы код был переносимымконечно, для других платформ это может потребовать настройки (#if #else), но основной логический код останется прежним, и на самом деле PKCS # 11 — это linux / unix / bsd / macosx .. также C # не может сгенерировать stdlib, я предполагаю, что он генерирует объект COM / COM , который полностью отличается от библиотеки C для PKCS # 11 ..

Комментарии:

1. Я создал перенос stdlib для COM / COM 🙂

2. Это хорошо как практика для выполнения COM, но в целом не полезно, если вы хотите заставить людей использовать ваши смарт-карты, за исключением пользовательских приложений (может быть, я бы предпочел PKCS # 11 или CSP) .. т. е. Любой, кто хочет использовать вашу библиотеку, должен использовать ее только в пользовательском приложениикоторый импортирует этот COM, его нельзя использовать ни в одном стандартном приложении, которое обычно должно использовать эту смарт-карту .. под стандартным приложением я подразумеваю «браузеры, приложения для почтовых клиентов, приложения для Windows, приложения на основе kerbros», которые все используют либо CSP, либо PKCS # 11

Ответ №4:

Вы можете использовать NCryptoki, интерфейс C # для неуправляемой библиотеки DLL PKCS # 11. Посмотрите на это: http://www.ncryptoki.com

PKCS # 11 можно использовать не только для функций PKI (ключей и сертификатов), но и для хранения и чтения данных на смарт-карте. Вот почему PKCS # 11 также необходим в Windows.