                     SecureTransport notes
                       14 Feb 2002 dmitch

-- Server-side cert usage and configuration is highly application dependent. 

   -- Although the use of server-initiated key exchange is optional under
      the SSL3 spec, Netscape browsers (4.61 through 4.75) will not tolerate
	  this operation unless an exportable cipher is selected. The current 
	  configuration of the library will attempt to perform server-initiated
	  key exchange if and only if the app has specified an encryption 
	  certificate via SSLSetEncryptionCertificate(). Thus, in a config
	  which is required to work with Netscape browsers, if non-export
	  (i.e., strong) ciphers are to be supported, encryption certs
	  must NOT be specified, and the server cert specified in SSLSetCertificate()
	  must be capable of both signing and encryption. This applies to the underlying
	  keys as well. 
	  
   -- On top of that, even in a situation where Netscape will allow a server-
      initiated key exchange (export cipher, app specifies both kinds of certs),
	  Netscape will abort if the *signing-only* cert (specified in 
	  SSLSetCertificate()) is not capable of encryption! In this case that cert
	  is never even used for encryption. But that is the real world. 
	
	  Thus, to work with Netscape browsers with export-grade ciphers, the main
	  signing cert still has to be capable of encryption, even if the app specifies
	  a separate encryption cert. 
	  
   -- The SSL_SERVER_KEYEXCH_HACK flag, in sslBuildFlags.h, was previously used
      to work around the above-mentioned Netscape bug; when this flag is true,
	  server-initiated key exchange is only performed if an encrypting cert is
	  specified AND an export-grade cipher is selected. The current config has
	  this flag set false. 
	  
   -- SSL2 server-side operation requires the presence of a cert and key which is 
      capable of encryption (not signing). One cert, specified in SSLSetCertificate(),
	  can support both SSL2 and SSL3 if and only if it is capable of both signing
	  and encryption.
	  
-- Server mode operation with IE is fully functional and reliable. There is a 
   bug in IE which is worked around in SSLEncodeServerHello(), in hdskhelo.c.
   See comments there. Tested with IE 5.0 on OS 9 and 5.1.3 on OS X.  
   
-- Server untested with Windows clients. 

-- Client authentication is not tested. 

