Декодировать файл PKCS # 12 - PullRequest
       84

Декодировать файл PKCS # 12

4 голосов
/ 17 февраля 2009

Я ищу способы декодирования файла PKCS # 12 в .NET, мне нужно извлечь секретный ключ и все сертификаты, чтобы я мог программно получить доступ к следующему.

  • модуль
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • exponent1
  • exponent2
  • коэффициент

Мне нужна эта информация, чтобы я мог успешно использовать PKCS # 11 для создания закрытого ключа и сертификата на USB-токене.

Я нашел сайт, который использует OpenSSL для вывода этих данных. Я был очень взволнован, когда нашел OpenSSL.NET , однако функция разделения файлов PKCS # 12 еще не была реализована. Мне было интересно, если кто-нибудь знает какие-либо альтернативы.

Спасибо

Rohan

Ответы [ 4 ]

4 голосов
/ 17 февраля 2009

Приветствия Мануэль,

Я скачал API Bouncy Castle, и мне не понадобилось много времени, чтобы найти то, что мне нужно. Исходный код включает в себя обширный список модульных тестов.

static void Main(string[] args)
{
    char[] password = new char[] {'p','a','s','s','w','o','r','d'};

    using(StreamReader reader = new StreamReader(@"Test.pfx"))
    {
        Pkcs12Store store = new Pkcs12Store(reader.BaseStream,password);
        foreach (string n in store.Aliases)
        {
            if(store.IsKeyEntry(n))
            {
                AsymmetricKeyEntry key = store.GetKey(n);

                if(key.Key.IsPrivate)
                {
                    RsaPrivateCrtKeyParameters parameters = key.Key as RsaPrivateCrtKeyParameters;
                    Console.WriteLine(parameters.PublicExponent);
                }                       
            }
        }
    }
}
2 голосов
/ 17 февраля 2009

Я недавно использовал расширенный API для замкового замка в своем недавнем проекте с портом Java, и он прекрасно работает, безупречно.

Могу поспорить, что их C # не сильно отличается, и он действительно хорошо справляется с поставленной задачей.

http://www.bouncycastle.org/

0 голосов
/ 17 февраля 2009

Вы должны иметь возможность использовать OpenSSL напрямую через pInvoke. Возможно, вы могли бы внести свой вклад в проект OpenSSL.NET, когда заработаете.

Поставщики криптографии win32 - хорошая альтернатива, но она может быть немного негибкой в ​​том, что форматы могут анализировать и генерировать.

0 голосов
/ 17 февраля 2009

AFAIK, вы должны привязать к библиотекам шифрования win32, см. Эту статью MSDN: http://msdn.microsoft.com/en-us/library/ms867088.aspx

...