Еще раз, для тех кто в танке ... пример рабочий, проверил еще раз только что. значит, что неверно подставляешь нужные параметры. поехали ...
1. модуль fmMain - функция GetNewLNNum. тут заполняется req.ogrn := 'ОГРН твоей организации';
2. модуль fmMain - ePoviderContainer.text = 'Имя контейнера пользователя который будет подписывать сообщение'. имя контейнера смотри через КриптоПро - сервис - посмотреть сертификат в контейнере. копируешь имя ключевого контейнер и вставляешь в это поле
3. т.к. все работает через объявленные фсс сервисы, то идет их перехват перед отправкой (для создания подписанного+шифрованного сообщения) и после получения (для расшифровки). смотрим что бы среда проходила эти события
т.к. в примере подпись и подпись+шифрование разделены. проверь что обработчик идет именно в модуль с шифрованием "WSLnCryptoV20"
RIO.OnBeforeExecute := TCrypto.FssOnBeforeExecute;
RIO.OnAfterExecute := TCrypto.FssOnAfterExecute;
4. процедура FssOnBeforeExecute - EncryptSOAPRequest(hCryptoProvider, 'FSS_TEST_CERT_2021.cer', signEnvelopeDoc);- тут надо передать сертификаты фсс. он должен лежать в корне с программой (НЕ С ПРОЕКТОМ). там где компилируется экзешник.
5. процедура EncryptSOAPRequest - заполняем переменные сертификатами:
CertUser := GetCertificate(FCryptoProvider, 'твойже сертификат открытый ключ'); - тут передаем открытый ключ своего сертификата из КОНТЕЙНЕРА. для примера он файловый (как от фсс) нужно его сохранить в DER формате из хранилища
// Получение отправителя. нам нужно для получения сертификата который вставим в запрос
CertFSS := GetCertificate(FCryptoProvider, ARemoteCertPath); - тут получаем сам сертификат acc который передавали шагом выше.
6. процедура расшифровки FssOnAfterExecute - тут в инициализации криптопровайдера проверь что бы былла ссылка на имя контейнера из FssOnBeforeExecute.
7. ну и по шагово пройди через все строки. с подфункций. должно работать. Если сертификаты верные
8. проверил еще раз на всякий. Успех.
Удачи. больше помочь нечем
Отредактировано пользователем 21 июля 2021 г. 11:48:40(UTC)
| Причина: Не указана