Статус: Новичок
Группы: Участники
Зарегистрирован: 06.09.2016(UTC) Сообщений: 2 Откуда: Moscow
|
Добрый день.
Подскажите, как обстоит дело с поддержкой XAdES-BES в КриптоПро CSP 3.9 для С/С++? Сходу примеров на эту тему не нашёл.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
В данный момент реализация XADES-BES доступна только для Java и КриптоПро JCP. Для C/C++ планируем делать реализацию, но по срокам точно сказать не можем пока. Скорее всего это будет уже в следующем году. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Добавлю, что это довольно несложно сделать с помощью xmlsec\libxml2\mscrypto. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.09.2016(UTC) Сообщений: 2 Откуда: Moscow
|
Автор: maxdm Добавлю, что это довольно несложно сделать с помощью xmlsec\libxml2\mscrypto. Да, такое решение уже реализовано. Но там есть свои сложности - целевой софт должен быть кросплатформенным и при портировании xmlsec (в части mscrypto) приходится допиливать. Плюс появляются дополнительные зависимости как при разработке, так и в runtime. А хочется всё-таки иметь одну зависимость - от КриптоПро
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.11.2016(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 2 раз
|
Автор: maxdm Добавлю, что это довольно несложно сделать с помощью xmlsec\libxml2\mscrypto. Быть может тогда автор поделиться или Вы подскажите, на сколько это просто. А то вторую неделю уже не просто... xmlSecDSigCtxSign(dsigCtx, signNode) требует, чтобы в поле dsigCtx->signKey был помещен ключ, а вытащить его из хранилища нельзя по определению. В принципе получил верный дайджест простыми CryptAcquireContext, xmlC14NDocDumpMemory (libxml2), CryptCreateHash, CryptGetHashParam и т.п. но вот подпись что-то не валидная получается. Уж помогайте
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Порядок вызовов примерно такой: Код:dsigCtx = xmlSecDSigCtxCreate(NULL);
/* по сертификату и ссылке на ключ создаем контекст криптопровайцдера (внутри xmlsec) */
data = xmlSecMSCryptoCertAdopt(pCert, xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate);
/* создаем объект key и назначаем key data и x509 data */
key = xmlSecKeyCreate();
xmlSecKeySetValue(key, data);
/* проверяем всё ли сходится и запоминаем сертификат в контекст ключа */
if (xmlSecKeyIsValid(key)) {
xmlSecCryptoAppKeyCertLoadMemory(key, pCert->pbCertEncoded, pCert->cbCertEncoded, xmlSecKeyDataFormatDer);
xmlSecDSigCtxSetSignKey(dsigCtx, key);
key = NULL;
}
/* генерим подпись !!! */
xmlSecDSigCtxSign(dsigCtx, signNode);
|
|
1 пользователь поблагодарил Максим Коллегин за этот пост.
|
dosik оставлено 07.12.2016(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.11.2016(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 2 раз
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close