Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > CryptoAPI in C#


Автор: LexSTV 31.8.2007, 20:32
Всем привет, ай нид хелп в пределах этих выходных желательно. (1-2 сентября)
проблева вот в чем:
Нужно реализовать cryptoAPI функцию CryptVerifyDetachedMessageSignature в с# перерыл всесь инет(гугл 4 страницы дал)
нифига нету. Советы типа : юзай MSDN "DllImport", www.pinvoke.net - фтопку, перерыл, поверьте.
о функции в целом тут http://rsdn.ru/article/crypto/usingcryptoapi.xml
о импорте подобной в с# тут http://www.pinvoke.net./default.aspx/crypt32.CryptVerifyMessageSignature но мне нужна именно Detached проблема вот в чем для ее реализации нужно создать структуру вот такую 

internal struct CRYPT_VERIFY_MESSAGE_PARA
   {
      public int cbSize;
      public uint dwMsgEncodingType;
      public int hCryptProv;
      public IntPtr pfnUnfortunatellyUnsupported;
      public IntPtr pvUnfortunatellyUnsupported;  
   }

последние два параметра (неподдерживаемые) как раз и содержат сертификат которым подписывались данные. Вот у меня вотрос : 
Возможно ли как-то реализовать фунцию CryptVerifyDetachedMessageSignature в C# и как? можно ли как-нить определить поледние два параметра или заставить работать ее без указания сертификата (в чем я лично сомневаюсь, но мало ли) ? 
 

помогите плиз, в ваших руках моя премия smile

Автор: LexSTV 1.9.2007, 11:10
мдя, надо было спросить, как настраивать принтер, или как менять цвет лейбла, тогда, наверное, ответов было бы больше  smile 
 
ладно, вот, что я нарыл,  поскольку два последних параметра не поддерживаются в сишарпе, 

Цитата(LexSTV @  31.8.2007,  20:32 Найти цитируемый пост)
internal struct CRYPT_VERIFY_MESSAGE_PARA
   {
      public int cbSize;
      public uint dwMsgEncodingType;
      public int hCryptProv;
      public IntPtr pfnUnfortunatellyUnsupported;
      public IntPtr pvUnfortunatellyUnsupported;  
   }


то делаю вывод, что вызов cyriptoAPI функции CryptVerifyDetachedMessageSignature  невозможен, буду колдовать на с++, которым в жизни ничего не писал.... 
Плиз, если кто знает, скажите свое видение на этот вопрос...


Автор: LexSTV 2.9.2007, 08:28
Тихо сам с собою я веду беседу....
в общем поял я что надо создать в сшарпе аналог колбака в с++ на предпоследний параметр этой струуктуры, который ищет сертификат в хранилище и в последний передать поинтер на наименование этого сертификата, но вот как??? скажите плиз smile
Цитата(LexSTV @  31.8.2007,  20:32 Найти цитируемый пост)
internal struct CRYPT_VERIFY_MESSAGE_PARA
   {
      public int cbSize;
      public uint dwMsgEncodingType;
      public int hCryptProv;
      public IntPtr pfnUnfortunatellyUnsupported;
      public IntPtr pvUnfortunatellyUnsupported;  
   }



вот еще вопрос,( на который я сам скорее всего скоро отвечу) 
как из цифровой подписи вытащить сертификат? (ну имя его или серийный номер) известно, что последние 64 байта в подписи - это и есть зашифрованный хеш, значит остальное - есть сертифика, вот как его опознать - не понятно  smile 

Автор: Stepan_Lameroff 2.9.2007, 09:59
Посмотрите http://www.mentalis.org.

ЗЫ.  smile 

Цитата(LexSTV @  1.9.2007,  11:10 Найти цитируемый пост)
мдя, надо было спросить, как настраивать принтер, или как менять цвет лейбла, тогда, наверное, ответов было бы больше

Хамство еще никогда не приводило к положительным результатам.
Делайте выводы.

Автор: LexSTV 2.9.2007, 10:02
Спасибо за ссылку, 
хаминть не думал, разве что так, легонько сострить smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)