Author: rfm
Date: Fri May 19 17:28:06 2017
New Revision: 40509

URL: http://svn.gna.org/viewcvs/gnustep?rev=40509&view=rev
Log:
Use newer SSL API from base to permit more options in 'secure' dictionary

Modified:
    libs/webserver/trunk/WebServer.m
    libs/webserver/trunk/WebServerConnection.m

Modified: libs/webserver/trunk/WebServer.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/WebServer.m?rev=40509&r1=40508&r2=40509&view=diff
==============================================================================
--- libs/webserver/trunk/WebServer.m    (original)
+++ libs/webserver/trunk/WebServer.m    Fri May 19 17:28:06 2017
@@ -2047,30 +2047,106 @@
        }
       else
        {
-         NSString      *address = [hdl socketLocalAddress];
-         NSDictionary  *primary = [_sslConfig objectForKey: address];
-         NSString      *certificateFile;
-         NSString      *keyFile;
-         NSString      *password;
-
-         certificateFile = [primary objectForKey: @"CertificateFile"];
-         if (certificateFile == nil)
-           {
-             certificateFile = [_sslConfig objectForKey: @"CertificateFile"];
-           }
-         keyFile = [primary objectForKey: @"KeyFile"];
-         if (keyFile == nil)
-           {
-             keyFile = [_sslConfig objectForKey: @"KeyFile"];
-           }
-         password = [primary objectForKey: @"Password"];
-         if (password == nil)
-           {
-             password = [_sslConfig objectForKey: @"Password"];
-           }
-         [hdl sslSetCertificate: certificateFile
-                     privateKey: keyFile
-                      PEMpasswd: password];
+          NSMutableDictionary   *options = [NSMutableDictionary dictionary];
+         NSString              *address = [hdl socketLocalAddress];
+         NSDictionary          *primary = [_sslConfig objectForKey: address];
+         NSString              *s;
+
+         if (nil == (s = [primary objectForKey: @"CAFile"]))
+            {
+              s = [_sslConfig objectForKey: @"CAFile"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSCAFile];
+            }
+
+         if (nil == (s = [primary objectForKey: @"CertificateFile"]))
+            {
+              s = [_sslConfig objectForKey: @"CertificateFile"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSCertificateFile];
+            }
+
+         if (nil == (s = [primary objectForKey: @"CertificateKeyFile"]))
+            {
+              if (nil == (s = [_sslConfig objectForKey: 
@"CertificateKeyFile"]))
+                {
+                  if (nil == (s = [primary objectForKey: @"KeyFile"]))
+                    {
+                      s = [_sslConfig objectForKey: @"KeyFile"];
+                    }
+                }
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSCertificateKeyFile];
+            }
+
+         if (nil == (s = [primary objectForKey: @"CertificateKeyPassword"]))
+            {
+              if (nil
+                == (s = [_sslConfig objectForKey: @"CertificateKeyPassword"]))
+                {
+                  if (nil == (s = [primary objectForKey: @"KeyPassword"]))
+                    {
+                      s = [_sslConfig objectForKey: @"KeyPassword"];
+                    }
+                }
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSCertificateKeyPassword];
+            }
+
+         if (nil == (s = [primary objectForKey: @"Debug"]))
+            {
+              s = [_sslConfig objectForKey: @"Debug"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSDebug];
+            }
+
+         if (nil == (s = [primary objectForKey: @"Priority"]))
+            {
+              s = [_sslConfig objectForKey: @"Priority"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSPriority];
+            }
+
+         if (nil == (s = [primary objectForKey: @"RemoteHosts"]))
+            {
+              s = [_sslConfig objectForKey: @"RemoteHosts"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSRemoteHosts];
+            }
+
+         if (nil == (s = [primary objectForKey: @"RevokeFile"]))
+            {
+              s = [_sslConfig objectForKey: @"RevokeFile"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSRevokeFile];
+            }
+
+         if (nil == (s = [primary objectForKey: @"Verify"]))
+            {
+              s = [_sslConfig objectForKey: @"Verify"];
+            }
+          if (nil != s)
+            {
+              [options setObject: s forKey: GSTLSVerify];
+            }
+
+         [hdl sslSetOptions: options];
          ssl = YES;
        }
 

Modified: libs/webserver/trunk/WebServerConnection.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/WebServerConnection.m?rev=40509&r1=40508&r2=40509&view=diff
==============================================================================
--- libs/webserver/trunk/WebServerConnection.m  (original)
+++ libs/webserver/trunk/WebServerConnection.m  Fri May 19 17:28:06 2017
@@ -1689,6 +1689,24 @@
                   value: version
              parameters: nil];
 
+          if (YES == ssl && [handle respondsToSelector: @selector(issuer)])
+            {
+              NSString  *s;
+
+              if (nil != (s = [handle performSelector: @selector(issuer)]))
+                {
+                  [doc setHeader: @"x-cert-issuer"
+                           value: s
+                      parameters: nil];
+                }
+              if (nil != (s = [handle performSelector: @selector(owner)]))
+                {
+                  [doc setHeader: @"x-cert-owner"
+                           value: s
+                      parameters: nil];
+                }
+            }
+
          if (pos >= length)
            {
              // Needs more data.


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to