Статус: Участник
Группы: Участники
Зарегистрирован: 25.05.2012(UTC) Сообщений: 27   Откуда: Нижний Новгород Сказал «Спасибо»: 4 раз
|
Необходимо получить сертификат и дату подписания из сообщения подписи. С датой подписания все понятно, используем СryptMsgGetParam+CMSG_SIGNER_AUTH_ATTR_PARAM. При получении CERT_INFO, получаю не поностью заполненную структуру (СryptMsgGetParam+CMSG_SIGNER_CERT_INFO_PARAM), например отсутствует информация о расширениях сертификата. Вопрос, каким образом можно получить из подписи всю информацию о сертификате, т.к. CMSG_SIGNER_CERT_INFO_PARAM вероятно для данной задачи не подойдет. СryptMsgGetParam functionЦитата:Only the Issuer and SerialNumber fields in the CERT_INFO structure returned contain available, valid data Код:
FILE *file = fopen("/tmp/signature" , "rb");
fseek(file, 0, SEEK_END);
long buffer_len = ftell(file);
rewind(file);
char *buffer = (char*) malloc (sizeof(char) * buffer_len);
fread(buffer, 1, buffer_len, file);
fclose(file);
HCRYPTMSG msg = CryptMsgOpenToDecode(
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, 0, 0, NULL, NULL
);
DWORD data_len = 0;
CryptMsgUpdate(msg, (BYTE *) buffer, (DWORD) buffer_len, 1);
CryptMsgGetParam(msg, CMSG_SIGNER_CERT_INFO_PARAM, 0, NULL, &data_len);
void *data = malloc(data_len);
CryptMsgGetParam(msg, CMSG_SIGNER_CERT_INFO_PARAM, 0, data, &data_len);
PCERT_INFO cert_info = (PCERT_INFO) data;
printf("%d\n", cert_info->Subject.cbData); // >0
printf("%d\n", cert_info->Subject.cbData); // 0
printf("%d\n", cert_info->cExtension); // 0
Отредактировано пользователем 26 сентября 2014 г. 17:04:40(UTC)
| Причина: Не указана Вложение(я):  signature (2kb) загружен 5 раз(а). data (2kb) загружен 2 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Нужно искать среди сертификатов, которые в этом сообщении могут содержаться. Критерий поиска - полученная структура CERT_INFO. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.05.2012(UTC) Сообщений: 27   Откуда: Нижний Новгород Сказал «Спасибо»: 4 раз
|
Автор: Kirill Sobolev  Нужно искать среди сертификатов, которые в этом сообщении могут содержаться. Критерий поиска - полученная структура CERT_INFO. спасибо, подробнее функции для поиска можете подсказать?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close