Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Ошибка "параметр задан неверно" при работе с com объектом CAdESCOM.CPSigner
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.01.2026(UTC) Сообщений: 3  Откуда: Красноярск
|
Пишу на Delphi 10.4.2 процедуру подписания документа. Пытаюсь к документу приписать атрибут даты и времени подписи. Код:
procedure test();
var
tempSigner: OleVariant;
tempSigningTimeAttr: OleVariant;
tempStore: OleVariant;
tempCertificate, tempCertificates: OleVariant;
const
CAPICOM_CURRENT_USER_STORE: integer = 2; // 2 - Искать сертификат в ветке "Личное" хранилища.
CAPICOM_MY_STORE: string = 'My'; // Указываем, что ветку "Личное" берем из хранилища текущего пользователя
CAPICOM_STORE_OPEN_READ_ONLY: integer = 0; // Открыть хранилище только на чтение
begin
tempStore:= System.Win.ComObj.CreateOleObject('CAdESCOM.Store'); // Объект описывает хранилище сертификатов
tempStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY); // Открыть хранилище сертификатов
tempCertificates:= tempStore.Certificates;
tempCertificate := tempCertificates.Item[1];
tempStore.Close;
//
tempSigner:= System.Win.ComObj.CreateOleObject('CAdESCOM.CPSigner'); // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи.
tempSigner.Certificate:= tempCertificate;
tempSigningTimeAttr:= System.Win.ComObj.CreateOleObject('CAdESCOM.CPAttribute');
tempSigningTimeAttr.Name:= 0;
tempSigningTimeAttr.Value:= VarFromDateTime(now());
tempSigner.AuthenticatedAttributes2.Add(tempSigningTimeAttr);
end.
На последней строчке при попытке добавить атрибут даты-времени(AuthenticatedAttributes2.Add()) выходит ошибка "Параметр задан неверно". Пробовал версии КриптоПро CSP 5.0.136 и 5.0.13003. Пробовал на Delphi XE4, та же ошибка. Пробовал метод создания com-объекта Vcl.OleAuto.CreateOleObject(), вместо System.Win.ComObj.CreateOleObject(). Не помогло. Пробовал типы переменных Variant, вместо OleVariant. Не помогло. Пробовал написать на 1С обработку, с теми же com объектами, теми же методами. Все работает без ошибок. Отредактировано пользователем 23 января 2026 г. 15:18:03(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.01.2026(UTC) Сообщений: 3  Откуда: Красноярск
|
Автор: sania198787  Пишу на Delphi 10.4.2 процедуру подписания документа. Пытаюсь к документу приписать атрибут даты и времени подписи. Код:
procedure test();
var
tempSigner: OleVariant;
tempSigningTimeAttr: OleVariant;
tempStore: OleVariant;
tempCertificate, tempCertificates: OleVariant;
const
CAPICOM_CURRENT_USER_STORE: integer = 2; // 2 - Искать сертификат в ветке "Личное" хранилища.
CAPICOM_MY_STORE: string = 'My'; // Указываем, что ветку "Личное" берем из хранилища текущего пользователя
CAPICOM_STORE_OPEN_READ_ONLY: integer = 0; // Открыть хранилище только на чтение
begin
tempStore:= System.Win.ComObj.CreateOleObject('CAdESCOM.Store'); // Объект описывает хранилище сертификатов
tempStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY); // Открыть хранилище сертификатов
tempCertificates:= tempStore.Certificates;
tempCertificate := tempCertificates.Item[1];
tempStore.Close;
//
tempSigner:= System.Win.ComObj.CreateOleObject('CAdESCOM.CPSigner'); // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи.
tempSigner.Certificate:= tempCertificate;
tempSigningTimeAttr:= System.Win.ComObj.CreateOleObject('CAdESCOM.CPAttribute');
tempSigningTimeAttr.Name:= 0;
tempSigningTimeAttr.Value:= VarFromDateTime(now());
tempSigner.AuthenticatedAttributes2.Add(tempSigningTimeAttr);
end.
На последней строчке при попытке добавить атрибут даты-времени(AuthenticatedAttributes2.Add()) выходит ошибка "Параметр задан неверно". Пробовал версии КриптоПро CSP 5.0.136 и 5.0.13003. Пробовал на Delphi XE4, та же ошибка. Пробовал метод создания com-объекта Vcl.OleAuto.CreateOleObject(), вместо System.Win.ComObj.CreateOleObject(). Не помогло. Пробовал типы переменных Variant, вместо OleVariant. Не помогло. Пробовал написать на 1С обработку, с теми же com объектами, теми же методами. Все работает без ошибок. Нашел решение. Нужно было просто использовать раннее связывание.
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Ошибка "параметр задан неверно" при работе с com объектом CAdESCOM.CPSigner
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close