dmitry          Thu Jan 20 01:08:04 2005 EDT

  Modified files:              
    /php-src/ext/soap   php_http.c soap.c 
  Log:
  Support for HTTPS with digital certificates.
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/php_http.c?r1=1.60&r2=1.61&ty=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.60 php-src/ext/soap/php_http.c:1.61
--- php-src/ext/soap/php_http.c:1.60    Wed Dec  1 13:22:40 2004
+++ php-src/ext/soap/php_http.c Thu Jan 20 01:08:04 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_http.c,v 1.60 2004/12/01 18:22:40 dmitry Exp $ */
+/* $Id: php_http.c,v 1.61 2005/01/20 06:08:04 dmitry Exp $ */
 
 #include "php_soap.h"
 #include "ext/standard/base64.h"
@@ -84,6 +84,7 @@
        zval **proxy_host, **proxy_port;
        char *host;
 #ifdef ZEND_ENGINE_2
+       php_stream_context *context = NULL;
        char *name;
        long namelen;
 #endif
@@ -107,12 +108,26 @@
 
 #ifdef ZEND_ENGINE_2
        namelen = spprintf(&name, 0, "%s://%s:%d", (use_ssl && !*use_proxy)? 
"ssl" : "tcp", host, port);
+       if (use_ssl) {
+               zval **tmp;
+
+               if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_local_cert", 
sizeof("_local_cert"), (void **) &tmp) == SUCCESS &&
+                   Z_TYPE_PP(tmp) == IS_STRING) {
+                       context = php_stream_context_alloc();
+                       php_stream_context_set_option(context, "ssl", 
"local_cert", *tmp);
+                       if (zend_hash_find(Z_OBJPROP_P(this_ptr), 
"_passphrase", sizeof("_passphrase"), (void **) &tmp) == SUCCESS &&
+                           Z_TYPE_PP(tmp) == IS_STRING) {
+                               php_stream_context_set_option(context, "ssl", 
"passphrase", *tmp);
+                       }
+               }
+       }
        stream = php_stream_xport_create(name, namelen,
                ENFORCE_SAFE_MODE | REPORT_ERRORS,
                STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT,
                NULL /*persistent_id*/,
                NULL /*timeout*/,
-               NULL, NULL, NULL);
+               context, 
+               NULL, NULL);
        efree(name);
 #else
        stream = php_stream_sock_open_host(host, port, SOCK_STREAM, NULL, NULL);
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.127&r2=1.128&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.127 php-src/ext/soap/soap.c:1.128
--- php-src/ext/soap/soap.c:1.127       Tue Dec 14 08:58:57 2004
+++ php-src/ext/soap/soap.c     Thu Jan 20 01:08:04 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: soap.c,v 1.127 2004/12/14 13:58:57 dmitry Exp $ */
+/* $Id: soap.c,v 1.128 2005/01/20 06:08:04 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1967,6 +1967,14 @@
                                }
                        }
                }
+               if (zend_hash_find(ht, "local_cert", sizeof("local_cert"), 
(void**)&tmp) == SUCCESS &&
+                   Z_TYPE_PP(tmp) == IS_STRING) {
+                       add_property_stringl(this_ptr, "_local_cert", 
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
+                       if (zend_hash_find(ht, "passphrase", 
sizeof("passphrase"), (void**)&tmp) == SUCCESS &&
+                           Z_TYPE_PP(tmp) == IS_STRING) {
+                               add_property_stringl(this_ptr, "_passphrase", 
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
+                       }
+               }
                if (zend_hash_find(ht, "trace", sizeof("trace"), (void**)&tmp) 
== SUCCESS &&
                    (Z_TYPE_PP(tmp) == IS_BOOL || Z_TYPE_PP(tmp) == IS_LONG) &&
                                Z_LVAL_PP(tmp) == 1) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to