Created a new mode (CAMEL_AUTHENTICATOR_ACCEPT) which is a Yes/No prompt
authorJeffrey Stedfast <fejj@ximian.com>
Sat, 10 Mar 2001 00:15:49 +0000 (00:15 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Sat, 10 Mar 2001 00:15:49 +0000 (00:15 +0000)
2001-03-09  Jeffrey Stedfast  <fejj@ximian.com>

* camel-session.c (camel_session_query_authenticator): Created a
new mode (CAMEL_AUTHENTICATOR_ACCEPT) which is a Yes/No prompt to
the user. This will be needed by the SSL/TLS code to come. Also
changed the return value to a gpointer rather than a char* to
allow the returning of TRUE/FALSE values.

* camel.c: Wrap stuff with HAVE_NSS

camel/ChangeLog
camel/camel-session.c
camel/camel-session.h
camel/camel.c

index 0e324f8..247986c 100644 (file)
@@ -1,3 +1,13 @@
+2001-03-09  Jeffrey Stedfast  <fejj@ximian.com>
+
+       * camel-session.c (camel_session_query_authenticator): Created a
+       new mode (CAMEL_AUTHENTICATOR_ACCEPT) which is a Yes/No prompt to
+       the user. This will be needed by the SSL/TLS code to come. Also
+       changed the return value to a gpointer rather than a char* to
+       allow the returning of TRUE/FALSE values.
+
+       * camel.c: Wrap stuff with HAVE_NSS
+
 2001-03-09  Dan Winship  <danw@ximian.com>
 
        * providers/sendmail/camel-sendmail-transport.c (sendmail_send,
index f8e27c3..6fed6bf 100644 (file)
@@ -151,7 +151,7 @@ camel_session_new (const char *storage_path,
        CamelSession *session = CAMEL_SESSION (camel_object_new (CAMEL_SESSION_TYPE));
 
        session->storage_path = g_strdup (storage_path);
-       session->authenticator = authenticator;
+       session->authenticator = authenticator; 
        session->registrar = registrar;
        session->remover = remover;
 
@@ -427,7 +427,7 @@ camel_session_get_storage_path (CamelSession *session, CamelService *service,
 /**
  * camel_session_query_authenticator: query the session authenticator
  * @session: session object
- * @mode: %CAMEL_AUTHENTICATOR_ASK or %CAMEL_AUTHENTICATOR_TELL
+ * @mode: %CAMEL_AUTHENTICATOR_ASK, %CAMEL_AUTHENTICATOR_TELL or CAMEL_AUTHENTICATOR_ACCEPT
  * @data: prompt to query user with, or data to cache
  * @secret: whether or not the data is secret (eg, a password)
  * @service: the service this query is being made by
@@ -453,9 +453,14 @@ camel_session_get_storage_path (CamelSession *session, CamelService *service,
  * caching anything about that datum (eg, because the data is a
  * password that turned out to be incorrect).
  *
+ * If @mode is %CAMEL_AUTHENTICATOR_ACCEPT, then @data is a YES/NO
+ * question to ask the user (if the application doesn't already have
+ * the answer cached). Return GINT_TO_POINTER(TRUE) on accept, or
+ * GINT_TO_POINTER(FALSE) to decline.
+ *
  * Return value: the authentication information or %NULL.
  **/
-char *
+gpointer
 camel_session_query_authenticator (CamelSession *session,
                                   CamelAuthCallbackMode mode,
                                   char *prompt, gboolean secret,
@@ -466,30 +471,6 @@ camel_session_query_authenticator (CamelSession *session,
                                       service, item, ex);
 }
 
-#ifdef U_CANT_TOUCH_THIS
-/**
- * camel_session_query_cert_authenticator:
- * @session: session object
- * @prompt: prompt to query user with
- *
- * This function is used by SSL to discuss certificate authentication
- * information with the application and/or user. Allows the user to
- * override the SSL certificate authenticator, which, at this point,
- * must have failed to authenticate the server.
- *
- * UI should be a Yes/No prompt probably defaulting to No.
- *
- * Return value: TRUE if the user decides that the SSL connection
- * should continue with the untrusted server or FALSE otherwise.
- **/
-gboolean
-camel_session_query_cert_authenticator (CamelSession *session,
-                                       char *prompt)
-{
-       return session->cert_authenticator (prompt);
-}
-#endif /* U_CANT_TOUCH_THIS */
-
 
 /**
  * camel_session_register_timeout: Register a timeout to be called
index c530c6f..39b65f7 100644 (file)
@@ -44,18 +44,15 @@ extern "C" {
 
 
 typedef enum {
-       CAMEL_AUTHENTICATOR_ASK, CAMEL_AUTHENTICATOR_TELL
+       CAMEL_AUTHENTICATOR_ASK,
+       CAMEL_AUTHENTICATOR_TELL,
+       CAMEL_AUTHENTICATOR_ACCEPT
 } CamelAuthCallbackMode;
 
-typedef char *(*CamelAuthCallback) (CamelAuthCallbackMode mode,
-                                   char *data, gboolean secret,
-                                   CamelService *service, char *item,
-                                   CamelException *ex);
-
-#ifdef U_CANT_TOUCH_THIS
-/* this is just a guess as to what we'll actually need */
-typedef gboolean (*CamelBadCertCallback) (char *data);
-#endif
+typedef gpointer (*CamelAuthCallback) (CamelAuthCallbackMode mode,
+                                      char *data, gboolean secret,
+                                      CamelService *service, char *item,
+                                      CamelException *ex);
 
 typedef gboolean (*CamelTimeoutCallback) (gpointer data);
 typedef guint (*CamelTimeoutRegisterCallback) (guint32 interval,
@@ -70,9 +67,6 @@ struct _CamelSession
 
        char *storage_path;
        CamelAuthCallback authenticator;
-#ifdef U_CANT_TOUCH_THIS
-       CamelBadCertCallback cert_authenticator;
-#endif
        CamelTimeoutRegisterCallback registrar;
        CamelTimeoutRemoveCallback remover;
 
@@ -119,7 +113,7 @@ char *          camel_session_get_storage_path (CamelSession *session,
                                                CamelService *service,
                                                CamelException *ex);
 
-char *          camel_session_query_authenticator (CamelSession *session,
+gpointer        camel_session_query_authenticator (CamelSession *session,
                                                   CamelAuthCallbackMode mode,
                                                   char *prompt,
                                                   gboolean secret,
@@ -127,11 +121,6 @@ char *          camel_session_query_authenticator (CamelSession *session,
                                                   char *item,
                                                   CamelException *ex);
 
-#ifdef U_CANT_TOUCH_THIS
-gboolean        camel_session_query_cert_authenticator (CamelSession *session,
-                                                       char *prompt);
-#endif
-
 guint           camel_session_register_timeout (CamelSession *session,
                                                guint32 interval,
                                                CamelTimeoutCallback callback,
index 5383c4d..c451045 100644 (file)
 #include <config.h>
 #include "camel.h"
 #include <unicode.h>
+#ifdef HAVE_NSS
+#include <mozilla/nspr.h>
+#include <nss.h>
+#include <ssl.h>
+#endif /* HAVE_NSS */
 
 gboolean camel_verbose_debug = FALSE;
 
 gint
-camel_init(void)
-{
-#ifdef ENABLE_THREADS
-#ifdef G_THREADS_ENABLED       
-       /*g_thread_init (NULL);*/
-#else  /* G_THREADS_ENABLED */
-       printf ("Threads are not supported by your version of glib\n");
-#endif /* G_THREADS_ENABLED */
-#endif /* ENABLE_THREADS */
-
-       if (getenv ("CAMEL_VERBOSE_DEBUG"))
-               camel_verbose_debug = TRUE;
-
-       unicode_init ();
-
-       return 0;
-}
-
-#ifdef U_CANT_TOUCH_THIS
-#include <ssl.h>
-#include <nss.h>
-
-gint
-camel_ssl_init (char *configdir, gboolean nss_init)
+camel_init (void)
 {
 #ifdef ENABLE_THREADS
 #ifdef G_THREADS_ENABLED       
        /*g_thread_init (NULL);*/
-#else  /* G_THREADS_ENABLED */
-       printf ("Threads are not supported by your version of glib\n");
+#else /* G_THREADS_ENABLED */
+       g_warning ("Threads are not supported by your version of glib\n");
 #endif /* G_THREADS_ENABLED */
 #endif /* ENABLE_THREADS */
        
@@ -68,21 +50,12 @@ camel_ssl_init (char *configdir, gboolean nss_init)
        
        unicode_init ();
        
-       if (nss_init) {
-               PR_init ();
-               
-               if (NSS_init (configdir) == SECFailure)
-                       return -1;
-               
-               /* FIXME: Erm, use appropriate policy? */
-               NSS_SetDomesticPolicy ();
-       }
-       
+#ifdef HAVE_NSS
        SSL_OptionSetDefault (SSL_ENABLE_SSL2, PR_TRUE);
        SSL_OptionSetDefault (SSL_ENABLE_SSL3, PR_TRUE);
        SSL_OptionSetDefault (SSL_ENABLE_TLS, PR_TRUE);
        SSL_OptionSetDefault (SSL_V2_COMPATIBLE_HELLO, PR_TRUE /* maybe? */);
+#endif /* HAVE_NSS */
        
        return 0;
 }
-#endif