распечатать информацию о цифровой подписи

Как и в указанном заголовке, я хотел бы распечатать информацию о цифровой подписи на консоли. Вот код, который я написал:

bool CheckDigSig(const std::wstring& filepath)
{
bool rval = false;

DWORD dwEncoding = 0;
DWORD dwContentType = 0;
DWORD dwFormatType = 0;
HCERTSTORE hStore = NULL;
HCRYPTMSG hMsg = NULL;

// Get message handle and store handle from the signed file.
BOOL fResult = CryptQueryObject(CERT_QUERY_OBJECT_FILE,
filepath.c_str(),
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED,
CERT_QUERY_FORMAT_FLAG_BINARY,
0,
&dwEncoding,
&dwContentType,
&dwFormatType,
&hStore,
&hMsg,
NULL);
if (!fResult)
return false;

DWORD singer_info_size = 0;
// Get signer information size.
fResult = CryptMsgGetParam(hMsg, CMSG_SIGNER_INFO_PARAM, 0, NULL, &singer_info_size);
if (!fResult)
{
CryptMsgClose(hMsg);
CertCloseStore(hStore, 0);
return false;
}

// Allocate memory for signer information.
std::vector<byte> signer_info_data(singer_info_size);
PCMSG_SIGNER_INFO pSignerInfo = reinterpret_cast<PCMSG_SIGNER_INFO>(signer_info_data.data());

// Get Signer Information.
fResult = CryptMsgGetParam(hMsg, CMSG_SIGNER_INFO_PARAM, 0, (PVOID)pSignerInfo, &singer_info_size);
if (fResult)
{
//pSignerInfo->Issuer;
//pSignerInfo->SerialNumber;
}

CryptMsgClose(hMsg);
CertCloseStore(hStore, 0);
return rval;
}

Я хотел бы напечатать эти две переменные в конце (что сейчас заслуживает высокой оценки):
pSignerInfo-> Эмитент;
pSignerInfo-> SerialNumber;

Я понятия не имею, как я могу сделать его читаемым форматом, например, строкой, байтом или массивом символов. Не могли бы вы помочь мне с этим?

1

Решение

Эта статья http://support.microsoft.com/kb/323809 есть код, который вам нужен. Вот короткий фрагмент этого:

    // Get Issuer name.
if (!(CertGetNameString(pCertContext,
CERT_NAME_SIMPLE_DISPLAY_TYPE,
CERT_NAME_ISSUER_FLAG,
NULL,
szName,
dwData)))
// ...

Очевидно, там больше кода, охватывающего все аспекты этой задачи. Включая печать SerialNumber также

1

Другие решения


По вопросам рекламы [email protected]