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

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

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

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

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

textual
Листинг программы
CRYPT_SIGN_MESSAGE_PARA SigParams;
    SigParams.cbSize = sizeof(SigParams);
    SigParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
    SigParams.pSigningCert = pCert;
    SigParams.HashAlgorithm.pszObjId = "1.2.643.2.2.9";
    SigParams.HashAlgorithm.Parameters.cbData = NULL;
    SigParams.cMsgCert = 1;
    SigParams.rgpMsgCert = &pCert;
    SigParams.cAuthAttr = 0;
    SigParams.dwInnerContentType = 0;
    SigParams.cMsgCrl = 0;
    SigParams.cUnauthAttr = 0;
    SigParams.dwFlags = 0;
    SigParams.pvHashAuxInfo = NULL;
    SigParams.rgAuthAttr = NULL;
 
    cbSignedMessageBlob = 0;
    if (!(CryptSignMessage(&SigParams,
        FALSE,
        1,
        &pbBuffer,
        &dwBufferLen,
        NULL,
        &cbSignedMessageBlob))) 
    {
        HandleError("Error during CryptSignMessage.");
    }
 
    if (!(pbSignedMessageBlob = (BYTE*)malloc(cbSignedMessageBlob))) {
        HandleError("Error during CryptSignMessage.");
    }
 
    if (!(CryptSignMessage(&SigParams,
        FALSE,
        1,
        &pbBuffer,
        &dwBufferLen,
        pbSignedMessageBlob,
        &cbSignedMessageBlob))) 
    {
        HandleError("Error during CryptSignMessage.");
    }

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


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

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

14   голосов , оценка 4.071 из 5
Похожие ответы