Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
Уважаемые помогите, пожалуйста! Из .net импортом Win32 CryptoApi выполняю вызов функции создания контекста сертификата. Код:
internal sealed class SspiProvider {
private SspiProvider() {}
[DllImport(@"crypt32.dll", SetLastError=true)]
internal static extern IntPtr CertCreateCertificateContext(int dwCertEncodingType, byte[] pbCertEncoded, int cbCertEncoded);
...
}
public bool CertTrustVerify(byte[] CertData, byte[] CertIssuerData)
{
IntPtr hCertIssuer = IntPtr.Zero;
// Создание контекста сертификата издателя
hCertIssuer = SspiProvider.CertCreateCertificateContext(SecurityConstants.X509_ASN_ENCODING | SecurityConstants.PKCS_7_ASN_ENCODING, CertIssuerData, CertIssuerData.Length);
if (hCertIssuer == IntPtr.Zero)
throw new CryptographicException(Marshal.GetLastWin32Error());
...
}
Для некоторых внешне вроде нормальных сертификатов получаю следующую ошибку: "Встречено неверное значение тега ASN1." Подскажите, пожалуйста, в какую сторону копать. Во вложении один такой сертификат. Отредактировано пользователем 22 июля 2009 г. 23:14:29(UTC)
| Причина: Не указана Вложение(я):  kontur-ur-2007.cer (2kb) загружен 12 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
X509Certificate/X509Certificate2 класс не удобнее? |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Конретно этот сертификат - base64 кодированный - а функция хочет DER |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
Я потом этот контекст передаю в функцию проверки подписи: Код:
SspiProvider.CryptVerifyCertificateSignatureEx( IntPtr.Zero// 75 КриптоПро Провайдер
, SecurityConstants.X509_ASN_ENCODING // Тип кодировки
, SecurityConstants.CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB //SecurityConstants.CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT
, ref db //hCert // Проверяемый сертификат
, SecurityConstants.CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
, hCertIssuer
, 0
, IntPtr.Zero)
Или может подскажете, можно ли как-то другим способом проверить подпись сертификата?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
Да, точно, действительно. Спасибо большое! А как можно проверить в какой кодировке сертификат? И для того, чтобы получить DER можно просто его сконвертить из base64?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
Это Вы по поводу альтернативного метода проверки подписи сертификата?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
Дело в том, что в архитектуре нашего приложения сертификаты находятся в БД, а не в хранилище сертификатов и к тому же проверка подписи сертификата должна производиться даже без наличия интернет. Поэтому ещё раз хочу поднять вопрос - можно ли программно проверить в какой кодировке сертификат?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.07.2009(UTC) Сообщений: 18
|
:) Насколько я понимаю, для того, чтобы построить цепочку сертификатов, необходимо либо иметь всю цепочку в системном хранилище сертификатов либо иметь доступ к интернет для того, чтобы метод X509Chain.Build мог сам осуществить поиск сертификатов для построения цепочки. В нашей же архитектуре ни первое ни второе условия не выполняются. :(
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close