SSPCPP-641 - add ability to set SOAP cipher suites
[shibboleth/cpp-sp.git] / shibsp / binding / impl / SOAPClient.cpp
index 46d7fe6..bbc214a 100644 (file)
@@ -38,6 +38,7 @@
 #include <xmltooling/signature/Signature.h>
 #include <xmltooling/soap/SOAP.h>
 #include <xmltooling/soap/HTTPSOAPTransport.h>
+#include <xmltooling/soap/OpenSSLSOAPTransport.h>
 #include <xmltooling/util/NDC.h>
 
 using namespace shibsp;
@@ -219,6 +220,14 @@ void SOAPClient::prepareTransport(SOAPTransport& transport)
         http->useChunkedEncoding(flag.first && flag.second);
         http->setRequestHeader(PACKAGE_NAME, PACKAGE_VERSION);
     }
+
+    OpenSSLSOAPTransport* openssl = dynamic_cast<OpenSSLSOAPTransport*>(&transport);
+    if (openssl) {
+        pair<bool, const char*> ciphers = m_relyingParty->getString("cipherSuites");
+        if (ciphers.first) {
+            openssl->setCipherSuites(ciphers.second);
+        }
+    }
 }
 
 void SOAPClient::reset()