Да, я понимаю что код из моего примера не несёт никакой смысловой нагрузки.
Я уже реализовал приложение для windows(всё работает), хочу собрать под Linux, но даже CryptAcquireContext возвращает false.
Если не удаётся инициализировать контекст провайдера, то выполнять дальнейшие действия (работу с ключевым контейнером, вычисление подписи, шифрование, использую функции CryptEncrypt, CryptSignHash и т.д.) видимо тоже не удастся. Например в реализации присутствует алгоритм действий:
DWORD dwProwType = [задаю нужный тип провайдера];
CryptAcquireContext(&hProv,Container,NULL,dwProwType,0)
ALG_ID DigestAlg = [задаю нужный алгоритм];
CryptCreateHash(hProv,DigestAlg,0,0,&hHash);
CryptHashData(hHash,pbBuffer,dwBufferLen,0);
DWORD KeySpec = [задаю существующий тип ключа];
CryptSignHash(hHash,KeySpec,NULL,0,NULL,&dwSigLen);
pbSignature = (BYTE*)malloc(dwSigLen);
CryptSignHash(hHash,KeySpec,NULL,0,pbSignature,&dwSigLen);
Reverse(pbSignature, dwSigLen);
UPD: пример использования CryptAcquireContext без контейнера в реализованном приложении:
CryptAcquireContext(&hProv,NULL,NULL,dwProwType,0)
CryptImportPublicKeyInfo(hProv,MY_ENCODING_TYPE,&certCtxt->pCertInfo->SubjectPublicKeyInfo,&hPubKey)
CryptCreateHash(...)
CryptHashData(...)
CryptVerifySignature(...)
Под windows всё работает правильно. На Ubuntu не работает даже CryptAcquireContext
Поэтому и прошу подсказки, в чём может быть проблема
Отредактировано пользователем 31 августа 2020 г. 17:03:49(UTC)
| Причина: Не указана