C#, ЭЦП по формату подписи получаемой в VipNet CryptoFile

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток!) Тема письма несколько не выражает то что мне необходимо. подпись я уже создала. однако мне необходимо создать файл .sig аналогичный получаемому из программы VipNet CryptoFile при подписывании файла. как я поняла этот файл содержит не только подпись. получилось распарсить этот файл по ASN1. читала статьи про данное кодирование ASN.1 простыми словами искала какие либо реалитзации для C# но ничего не нашла. не знаю получится ли создать что то с помощью чего можно было бы создать аналогичный файл. Помогите пожалуйста может кто встречал все же библиотеки работы с ASN1. Или сталкивался с необходимостью создания такого файла. или подскажите пожалуйста с чего начинать писать кодер на ASN1. Буду очень признательна за любую помощь.

Решение задачи: «C#, ЭЦП по формату подписи получаемой в VipNet CryptoFile»

textual
Листинг программы
  1. CRYPT_SIGN_MESSAGE_PARA SigParams;
  2.     SigParams.cbSize = sizeof(SigParams);
  3.     SigParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
  4.     SigParams.pSigningCert = pCert;
  5.     SigParams.HashAlgorithm.pszObjId = "1.2.643.2.2.9";
  6.     SigParams.HashAlgorithm.Parameters.cbData = NULL;
  7.     SigParams.cMsgCert = 1;
  8.     SigParams.rgpMsgCert = &pCert;
  9.     SigParams.cAuthAttr = 0;
  10.     SigParams.dwInnerContentType = 0;
  11.     SigParams.cMsgCrl = 0;
  12.     SigParams.cUnauthAttr = 0;
  13.     SigParams.dwFlags = 0;
  14.     SigParams.pvHashAuxInfo = NULL;
  15.     SigParams.rgAuthAttr = NULL;
  16.  
  17.     cbSignedMessageBlob = 0;
  18.     if (!(CryptSignMessage(&SigParams,
  19.         FALSE,
  20.         1,
  21.         &pbBuffer,
  22.         &dwBufferLen,
  23.         NULL,
  24.         &cbSignedMessageBlob)))
  25.     {
  26.         HandleError("Error during CryptSignMessage.");
  27.     }
  28.  
  29.     if (!(pbSignedMessageBlob = (BYTE*)malloc(cbSignedMessageBlob))) {
  30.         HandleError("Error during CryptSignMessage.");
  31.     }
  32.  
  33.     if (!(CryptSignMessage(&SigParams,
  34.         FALSE,
  35.         1,
  36.         &pbBuffer,
  37.         &dwBufferLen,
  38.         pbSignedMessageBlob,
  39.         &cbSignedMessageBlob)))
  40.     {
  41.         HandleError("Error during CryptSignMessage.");
  42.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы