| ||||
| ||||
1. как получить алгоритм хеширования при создании подписи ALG_ID или OID из существующего подписанного сообщения (тот алгоритм с помощью которого оно было подписано изначально функцией CryptSignMessage) 2. правильно ли я понимаю что это тот самый алгоритм который передается в эту функцию в параметр CRYPT_SIGN_MESSAGE_PARA SigParams.HashAlgorithm.pszObjId ? | ||||
Ответы: | ||||
| ||||
я имел в виду что есть подписанное сообщение и нужно достать из него алгоритм подписи )))) | ||||
| ||||
1. Через lowlevel CryptoAPI функции. CryptMsgGetParam(CMSG_HASH_ALGORITHM_PARAM) возвращает структуру CRYPT_ALGORITHM_IDENTIFIER. 2. Да, правильно. С алгоритмом подписи сложнее. Его можно получить комбинацией алгоритма хэша и алгоритма открытого ключа. | ||||
| ||||
Вот такой вот алгоритм получения параметров подписи: Получаешь информацию о подписчиках (структура CMSG_SIGNER_INFO). Тут не описываю как получить, думаю можно найти и самому. PCCRYPT_OID_INFO pHashOIDInfo=CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY,SignerInfo->HashAlgorithm.pszObjId,0); if(pHashOIDInfo) {szSignAlg=pHashOIDInfo->pwszName;} PCCRYPT_OID_INFO pEncOIDInfo=CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY,SignerInfo->HashEncryptionAlgorithm.pszObjId,0); if(pEncOIDInfo) {szEncAlg=pEncOIDInfo->pwszName;} | ||||