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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline prosoft  
#11 Оставлено : 22 февраля 2014 г. 18:27:51(UTC)
prosoft

Статус: Новичок

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

Автор: cross Перейти к цитате
1) По поводу перечисления контейнеров. В первом посте логически неверный код. После того как вы получили имя контейнера в перечислении, вам нужно перевызвать CryptAcquireContext с этим именем и без флага CRYPT_VERIFYCONTEXT. После этого полученный хендл провайдера использовать в функции GetUserKey.


Ага, понял.

Автор: cross Перейти к цитате

2) Код примера и команда certmgr выполняется от одного и того же пользователя?


Да. Получилось открыть хранилище вот так


Далее пытаюсь собрать аналог примера CryptMsgSign, но падаю на функции CryptMsgOpenToEncode.


//External: SIGSEGV В файле '../sysdeps/x86_64/multiarch/../strchr.S' на строке 33
Offline prosoft  
#12 Оставлено : 24 февраля 2014 г. 14:23:08(UTC)
prosoft

Статус: Новичок

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

Какой размер структур CMSG_SIGNER_ENCODE_INFO и CMSG_SIGNED_ENCODE_INFO под x64 Linux должен получиться? У меня 88 и 48 байт соответственно. Это правильно? Если да, тогда я не понимаю что делаю не так. Структуры все проверил еще раз

Код:

type
  PCMSG_SIGNER_ENCODE_INFO = ^CMSG_SIGNER_ENCODE_INFO;
  _CMSG_SIGNER_ENCODE_INFO = record
    cbSize: DWORD;   // 4
    pCertInfo: PCERT_INFO; // 4
    hCryptProv: HCRYPTOPROV; // 4
    dwKeySpec: DWORD; // 4
    HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; // 8
    pvHashAuxInfo: Pointer; // 4
    cAuthAttr: DWORD; //4
    rgAuthAttr: PCRYPT_ATTRIBUTE; //4
    cUnauthAttr: DWORD; //4
    rgUnauthAttr: PCRYPT_ATTRIBUTE; //4
    {$IFDEF CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS}
    SignerId: CERT_ID;
    HashEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER;
    pvHashEncryptionAuxInfo: Pointer;
    {$ENDIF CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS}
  end;

  CMSG_SIGNER_ENCODE_INFO = _CMSG_SIGNER_ENCODE_INFO;
  PCMSG_SIGNED_ENCODE_INFO = ^CMSG_SIGNED_ENCODE_INFO;
  _CMSG_SIGNED_ENCODE_INFO = record
    cbSize: DWORD;    // 4
    cSigners: DWORD;  // 4
    rgSigners: PCMSG_SIGNER_ENCODE_INFO;
    cCertEncoded: DWORD; // 4
    rgCertEncoded: PCRYPT_CERT_BLOB;
    cCrlEncoded: DWORD; //4
    rgCrlEncoded: PCRYPT_CRL_BLOB;
    {$IFDEF CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS}
    cAttrCertEncoded: DWORD;
    rgAttrCertEncoded: PCRYPT_CERT_BLOB;
    {$ENDIF CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS}
  end;
  CMSG_SIGNED_ENCODE_INFO = _CMSG_SIGNED_ENCODE_INFO;

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.