Перемещение кода SOAP 2007 C ++ Builder с обработкой сертификатов в Delphi2018-Indy10 - PullRequest
0 голосов
/ 29 июня 2018

У меня есть .dll, написанная на C ++ / Builder 2007, которая использует GSOAP для своих подключений к веб-сервису. Кажется, требуется местоположение файла .PEM и его пароля (Этот файл создается из файла .pfx доставлено сервисной организацией для аутентификации и шифрования). Помимо gsoap, он использует версию openSSL 0.9.8

Теперь мне нужно обновить SSL до TLS1.2, и это не покрыто openSSL 0.9.8, и обновление до версии 1.0.2 (последней, которую я мог использовать) невозможно, потому что я получаю кучу ошибок в код OpenSSL на компиляцию.

Перевод на Delphi 2007 не очень помог - поскольку в Indy также отсутствуют необходимые средства (кажется, SOAP1.2 не поддерживается).

Однако, переход к Ddelphi2018 находится в моем списке TODO, поэтому я переместил код этого процесса в отдельную программу (на данный момент) в Delphi. Все выглядит хорошо, за исключением одного:

в файле gsoap stdsoap2.h, есть:

struct SOAP_STD_API soap
…
  unsigned short ssl_flags;
  const char *keyfile;
  const char *password;
…

и код C ++ использует это

  struct soap soap;
  memset(&soap, 0, sizeof(soap));
  ...
  soap.keyfile = Parms->pCERTIFICAAT;    // is .pem bestand, including path
  soap.password = "(Certww)";            // hardcoded in deze code....
  ...

Однако в Delphi / Indy я не вижу способа добавить эти данные; Поиски в интернете приводят примеры имени пользователя и пароля, но поиск по ключевому файлу не показывает никаких совпадений ...

Что это делает в gsoap и как сделать то же самое в Delphi (2018) / Indy10?

1 Ответ

0 голосов
/ 09 июля 2018

Действительно - 10,2 Токио .. Мы нашли решение в повторном импорте WSDL в Delphi и используем код, который у нас уже был для доступа к сертификатам.

...