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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline krink  
#1 Оставлено : 27 марта 2023 г. 19:26:57(UTC)
krink

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

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

Пробую создать подпись:
Код:

procedure Sign(hCertContext:PCCERT_CONTEXT; buf:pointer; buf_len:dword; var result:pointer);
Var sigParams:CRYPT_SIGN_MESSAGE_PARA;
    res_len:dword;
begin
  ZeroMemory(@sigParams, sizeof(CRYPT_SIGN_MESSAGE_PARA));
  sigParams.cbSize:=SizeOf(CRYPT_SIGN_MESSAGE_PARA);
  sigParams.dwMsgEncodingType:=X509_ASN_ENCODING or PKCS_7_ASN_ENCODING;
  sigParams.pSigningCert:=hCertContext;
  sigParams.HashAlgorithm.pszObjID:='1.2.643.7.1.1.2.2';
  sigParams.HashEncryptionAlgorithm.pszObjId:='1.2.643.7.1.1.1.1';
  sigParams.cMsgCert:=1;
  sigParams.rgpMsgCert:=@hCertContext;
//  buf_len:=0;
  if(CryptSignMessage(@sigParams, true, 1, buf, @buf_len, nil, res_len))then
  begin
    GetMem(result, res_len);
    if(CryptSignMessage(@sigParams, true, 1, buf, @buf_len, result, res_len))then
    begin
    end;
  end;
end;


При формировании подписи ошибка - "External: SIGSEGV. В файле ../sysdeps/x86_64/multiarch../multiarch/memmove-vec-unaligned.erms.S на строке 267.
Если buf_len присвоить 0, то проходит без ошибок, и в result попадают данные.
Offline Андрей *  
#2 Оставлено : 27 марта 2023 г. 20:04:31(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,666
Мужчина
Российская Федерация

Сказал «Спасибо»: 571 раз
Поблагодарили: 2298 раз в 1799 постах
Здравствуйте.

...

опишите, какие библиотеки используются и как описаны cryptoapi-функции.

Отредактировано пользователем 27 марта 2023 г. 20:05:50(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline krink  
#3 Оставлено : 27 марта 2023 г. 20:40:35(UTC)
krink

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

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

/opt/cprocsp/lib/amd64/libcapi20.so

TCryptSignMessage=function(pSignPara: PCRYPT_SIGN_MESSAGE_PARA; fDetachSignature: BOOL; cToBeSigned: DWORD; rgpbToBeSigned: LPBYTE; rgcbToBeSigned: LPDWORD; pbSignedBlob:LPBYTE; var pcbSignedBlob: DWORD): BOOL; stdcall;

Типы взяты с JwaWinCrypt, JwaWinType
Online Русев Андрей  
#4 Оставлено : 28 марта 2023 г. 10:44:28(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 42 раз
Поблагодарили: 607 раз в 420 постах
Автор: krink Перейти к цитате
При формировании подписи ошибка - "External: SIGSEGV. В файле ../sysdeps/x86_64/multiarch../multiarch/memmove-vec-unaligned.erms.S на строке 267.
Если buf_len присвоить 0, то проходит без ошибок, и в result попадают данные.
Скорее всего, вы неверно заполняете rgpbToBeSigned и поэтому же неправильно назвали эту переменную buf. https://learn.microsoft....incrypt-cryptsignmessage
Официальная техподдержка. Официальная база знаний.
Offline krink  
#5 Оставлено : 28 марта 2023 г. 11:10:55(UTC)
krink

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

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

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