Вопрос по iolacom.EncryptData
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Вопрос по iolacom.EncryptData

Вопрос по iolacom.EncryptData 4 года, 9 мес. назад #1270

  • coldstar
  • Новый участник
  • Постов: 2
  • Репутация: 0
Добрый день.
Задача: подписанный хмл должен быть в кодировке base64. Если в функцию SignXML добавить флаг CF_OUT_BASE64 - игнорируется, на выходе обычный хмл. Посмотрел в примерах вызов EncryptData - в первые два параметра подается результат вызова
string uid = iolaCOM_.SelectKey("", "", "");

Что функция делает, не очень понятно - при попытке вызова приложение зависает. Вероятнее всего, она создает какой-то диалог, но проблема в том, что на сервере приложений отвечать на вопросы некому. Все должно работать "прозрачно" для конечных пользователей.

Если на вход EncryptData подать keyID (как для подписи) -
"Encrypt data - data for operation not exists"
Вроде бы сообщение об отсутствующих данных, но на входе точно они есть - только что подписанная хмл-ка.
Подскажите - где взять uid или вообще что я делаю не так?

Re: Вопрос по iolacom.EncryptData 4 года, 9 мес. назад #1273

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Здравствуйте!

Функция SelectKey(). Обеспечивает вызов диалогового окна выбора ключа. Функция возвращает имя выбранного ключевого контейнера (уникальный идентификатор ключа) и устанавливает значения свойств KeyType, KeyPath. На сервере приложений Вам нет необходимости использовать эту функцию.

Получение значения UID показано в следующем примере на Delphi (Вам необходимо будет вручную установить значения свойств KeyType, KeyPath):

  //--- Установим значение пути к ключу
  IolaTest.KeyPath := edtKeyPath.Text;
  IolaTest.CertPath := IolaTest.KeyPath;

  //--- Получить список ключей по указанному пути
  ComboBox1.Items.Clear;

  //--- Получим идентификаторы ключей в указанной папке
  KeyUIDs := IolaTest.GetKeyUids;
  if ((KeyUIDs = '') or (Length(KeyUIDs) = 0)) then Exit;

  //--- Разбиваем на части, т.к. между идентификаторами имеются разделители CRLF
  TS := TStringList.Create;
  TS.Text := KeyUIDs;
  for i := 0 to TS.Count-1 do
  begin
    ComboBox1.Items.Insert(i,TS.Strings[i]);
  end;


Для чего Вы хотите использовать EncryptData? Данная функция производит шифрование данных. На выходе этой функции Вы можете получить зашифрованные данные (файл), в том числе и в кодировке base64.
Для преобразования XML-файла в кодировку base64 Вам необходимо использовать сторонние решения.
Модератор

Re: Вопрос по iolacom.EncryptData 4 года, 9 мес. назад #1275

  • coldstar
  • Новый участник
  • Постов: 2
  • Репутация: 0
Вычисление keyID при помощи IolaTest.GetKeyUids я уже сделал, иначе бы и подписывание не работало. Однако при попытке подать keyID на вход функции Encryptdata - не проходит, не работает почему-то. Впрочем, судя по Вашему ответу, это все равно не то, что мне нужно. Буду искать сторонние библиотеки.
Спасибо за подробный ответ.
  • Страница:
  • 1
FaLang translation system by Faboba