Как преобразовать OID алгоритма подписи кода из CRYPT_ALGORITHM_IDENTIFIER в удобочитаемую строку?

Когда я получение подписи кода из исполняемого файла в Windows, CERT_CONTEXT сертификата указывает на CERT_INFO, который имеет CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm член, содержащий алгоритм, используемый для подписи.

Как мне преобразовать это в удобочитаемую форму?

введите описание изображения здесь

Например, SignatureAlgorithm.pszObjId может быть установлен на "1.2.840.113549.1.1.11" строка, которая szOID_RSA_SHA256RSA в соответствии с этот длинный список. Я думаю, что могу сделать очень длинное заявление о переключении и связать его с "sha256", но я бы предпочел этого избежать, так как я не знаю, каковы большинство из этих значений. Есть ли API, который может сделать все это для меня?

0

Решение

использование CryptFindOIDInfo чтобы получить информацию об OID, включая отображаемое имя и строку идентификатора алгоритма CNG:

void PrintSigAlgoName(CRYPT_ALGORITHM_IDENTIFIER* pSigAlgo)
{
if(pSigAlgo && pSigAlgo->pszObjId)
{
PCCRYPT_OID_INFO pCOI = CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY, pSigAlgo->pszObjId, 0);
if(pCOI && pCOI->pwszName)
{
_tprintf(_T("%ls"), pCOI->pwszName);
}
else
{
_tprintf(_T("%hs"), pSigAlgo->pszObjId);
}
}
}
1

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

Других решений пока нет …

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