Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 9  Откуда: Москва Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте. Наткнулся на странное поведение функции CryptDecodeObject начиная с CSP 5.0 R3 на Linux. Если перед выполнением функции CryptDecodeObject установлен не нулевой LastError (например SCARD_E_INVALID_CHV), то функция, в случае ошибки, его не сбрасывает и его же возвращает. В моем случае должна была вернуть CRYPT_E_ASN1_ERROR, но возвращает SCARD_E_INVALID_CHV. Отредактировано пользователем 23 июля 2025 г. 11:58:34(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,899   Сказал «Спасибо»: 594 раз Поблагодарили: 2326 раз в 1824 постах
|
Автор: anp_2k  Здравствуйте.
Наткнулся на странное поведение функции CryptDecodeObject начиная с CSP 5.0 R3 на Linux. Если перед выполнением функции CryptDecodeObject установлен не нулевой LastError (например SCARD_E_INVALID_CHV), то функция, в случае ошибки, его не сбрасывает и его же возвращает. В моем случае должна была вернуть CRYPT_E_ASN1_ERROR, но возвращает SCARD_E_INVALID_CHV. Здравствуйте. Т.е. в 5.0.13000 воспроизводится? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,899   Сказал «Спасибо»: 594 раз Поблагодарили: 2326 раз в 1824 постах
|
Информация передана разработчикам. Спасибо. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 9  Откуда: Москва Сказал(а) «Спасибо»: 2 раз
|
Автор: Андрей *  Здравствуйте. Т.е. в 5.0.13000 воспроизводится?
Да. Воспроизводиться на 5.0.13000 и на 5.0.13455
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 65  Сказал «Спасибо»: 12 раз Поблагодарили: 28 раз в 25 постах
|
Здравствуйте! Спасибо за жалобу! Обязательно исправим, только научите, пожалуйста, воспроизводить вашу проблему. Прям с пол-тычка не воспроизвелось: Код:
BYTE arr[1000] = { 0 };
DWORD cbData = 0;
SetLastError((DWORD)SCARD_E_INVALID_CHV);
CPPUNIT_ASSERT(!CryptDecodeObject(X509_ASN_ENCODING, X509_CERT, arr, sizeof(arr), 0, NULL, &cbData));
assertLastError(CRYPT_E_ASN1_BADTAG);
И на Windows, и на *nix код ошибки затирается на правильный. А у вас какой был случай, чтобы на него посмотреть под отладчиком? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 9  Откуда: Москва Сказал(а) «Спасибо»: 2 раз
|
Автор: Зубов Иван  Здравствуйте! Спасибо за жалобу! Обязательно исправим, только научите, пожалуйста, воспроизводить вашу проблему. Прям с пол-тычка не воспроизвелось: Код:
BYTE arr[1000] = { 0 };
DWORD cbData = 0;
SetLastError((DWORD)SCARD_E_INVALID_CHV);
CPPUNIT_ASSERT(!CryptDecodeObject(X509_ASN_ENCODING, X509_CERT, arr, sizeof(arr), 0, NULL, &cbData));
assertLastError(CRYPT_E_ASN1_BADTAG);
И на Windows, и на *nix код ошибки затирается на правильный. А у вас какой был случай, чтобы на него посмотреть под отладчиком? Сертификат с полем Subject, значение которого содержит спецсимвол и поле имеет тип TeletexString. Код:Сертификат в buff размера sz
PCCERT_CONTEXT ctx = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, buff, sz);
SetLastError((DWORD)SCARD_E_INVALID_CHV);
DWORD cbData = 0;
if(!CryptDecodeObject(X509_ASN_ENCODING, X509_NAME, ctx->pCertInfo->Subject.pbData, ctx->pCertInfo->Subject.cbData, 0, nullptr, &cbData))
{
assertLastError(CRYPT_E_ASN1_ERROR);
}
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 65  Сказал «Спасибо»: 12 раз Поблагодарили: 28 раз в 25 постах
|
Спасибо большое! А именем этим не поделитесь, пожалуйста? Это было бы совсем шикарно! Здесь или может в ЛС, если вам так будет удобно. Оригинальным или сокращённым до минимального примера, как вам удобно. Массивом байт. Отредактировано пользователем 23 июля 2025 г. 13:53:30(UTC)
| Причина: уточнил сообщение |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close