Статус: Новичок
Группы: Участники
Зарегистрирован: 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 попадают данные.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,666   Сказал «Спасибо»: 571 раз Поблагодарили: 2298 раз в 1799 постах
|
Здравствуйте. ... опишите, какие библиотеки используются и как описаны cryptoapi-функции. Отредактировано пользователем 27 марта 2023 г. 20:05:50(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 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 |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.03.2023(UTC) Сообщений: 3
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close