Шифрование на уровне сообщений перед использованием soapCall с использованием PHP - PullRequest
0 голосов
/ 22 марта 2019

Мой PHP-файл находится на веб-сервере, который выполняет HTTPS-вызов к конечной точке, которая требует шифрования как на транспортном уровне, так и на уровне сообщений.Шифрование на транспортном уровне уже реализовано, но у меня возникают проблемы при попытке реализовать шифрование на уровне сообщений.

Одним из решений, которое я рассмотрел, является использование openssl_sign и openssl_encrypt для подписи и шифрования данных на уровне сообщений.Проблема в том, что __soapCall принимает только полезную нагрузку запроса в формате массива, а openssl_sign и openssl_encrypt принимают только шифруемое сообщение в строковом формате.

Таким образом, в приведенном ниже коде оптимальным способом было бы сломать функцию __soapCall, чтобы я мог по-прежнему передавать параметры в формате массива, ожидаемого __soapCall, и иметь возможность подписывать и шифровать запроссообщение один раз __soapCall преобразует формат массива в формат строки XML перед передачей его конечной точке.

Если есть лучший способ сделать это, где я могу зашифровать слой сообщений, пожалуйста, дайте мне знать.Если есть способ разбить __soapCall, чтобы я мог зашифровать сообщение в формате строки XML, это было бы оптимально.Но я открыт для любых решений.

Заранее спасибо.

$params = array(
    'ReturnRequest' => array(
        'source' => $source_id,
        'key' => $key_id
    )
);

try {
    $response = $client -> __soapCall("ReturnOperation", $params);
} catch (SoapFAULT $fault) {
    trigger_error("SOAP Fault: (faultcode: {$fault -> faultcode}, faultstring: {$fault -> faultstring})", E_USER_ERROR);
}
...