Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline makar751  
#1 Оставлено : 12 мая 2017 г. 19:34:33(UTC)
makar751

Статус: Участник

Группы: Участники
Зарегистрирован: 16.03.2017(UTC)
Сообщений: 10
Российская Федерация

В Linux x64 константа NTE_BAD_SIGNATURE имеет значение 18446744071562661895 (FFFFFFFF80091007), в то время как в Linux x32 и Windows данная константа имеет значение 2148077575 (80091007). С остальными константами из CSP_WinError.h наблюдается такая же проблема.

Используется КриптоПро версии: CSP (Type:75) v3.9.8010 KC1 Release Ver:3.9.8495
Offline basid  
#2 Оставлено : 13 мая 2017 г. 15:35:54(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,042

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 141 раз в 127 постах
0x8... - отрицательное (знаковое) 32-разрядное целое.
0xF... - знаковое расширение с 32 до 64 разрядов.
С чего вдруг они стали разными, если, конечно, используются корректные типы?
Offline makar751  
#3 Оставлено : 26 мая 2017 г. 14:31:17(UTC)
makar751

Статус: Участник

Группы: Участники
Зарегистрирован: 16.03.2017(UTC)
Сообщений: 10
Российская Федерация

Запрашиваю код ошибки с помощью GetLastError() из CSP_WinDef.h, в ответ получаю число 18446744071562661895 (0xFFFFFFFF80091007), которое уж никак не равно константе NTE_BAD_SIGNATURE (2148077575 или 0x80091007).
Offline makar751  
#4 Оставлено : 31 июля 2017 г. 16:00:20(UTC)
makar751

Статус: Участник

Группы: Участники
Зарегистрирован: 16.03.2017(UTC)
Сообщений: 10
Российская Федерация

Так никто и не ответит?

Код:

  unsigned long capi_error = GetLastError(); // здесь получаю 2148073478, что соответствует NTE_BAD_SIGNATURE
  unsigned long capi_error1 = NTE_BAD_SIGNATURE; // 18446744071562657798
  if (capi_error1 == capi_error) // соотвественно if не срабатывает
Offline basid  
#5 Оставлено : 1 августа 2017 г. 5:04:09(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,042

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 141 раз в 127 постах
unsigned уберите.
Offline Максим Коллегин  
#6 Оставлено : 1 августа 2017 г. 8:44:42(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
У нас в провайдере GetLastError везде определен как DWORD, который на самом деле unsigned int на Linux, поскольку long часто 64-битный.
typedef unsigned int DWORD;
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.