[EFL] Add API to manage root X.509 CA certificates.
authorkubo@profusion.mobi <kubo@profusion.mobi@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 Dec 2011 18:18:07 +0000 (18:18 +0000)
committerkubo@profusion.mobi <kubo@profusion.mobi@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 Dec 2011 18:18:07 +0000 (18:18 +0000)
https://bugs.webkit.org/show_bug.cgi?id=74300

Reviewed by Martin Robinson.

* ewk/ewk_network.cpp:
(ewk_network_tls_ca_certificates_path_get):
(ewk_network_tls_ca_certificates_path_set):
* ewk/ewk_network.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@102599 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/efl/ChangeLog
Source/WebKit/efl/ewk/ewk_network.cpp
Source/WebKit/efl/ewk/ewk_network.h

index 5f12e8d54f4d5793952d762328d65b169cd19f5e..2b3156f04fa08f3e92a913a09c316a023574b70c 100644 (file)
@@ -1,3 +1,15 @@
+2011-12-12  Raphael Kubo da Costa  <kubo@profusion.mobi>
+
+        [EFL] Add API to manage root X.509 CA certificates.
+        https://bugs.webkit.org/show_bug.cgi?id=74300
+
+        Reviewed by Martin Robinson.
+
+        * ewk/ewk_network.cpp:
+        (ewk_network_tls_ca_certificates_path_get):
+        (ewk_network_tls_ca_certificates_path_set):
+        * ewk/ewk_network.h:
+
 2011-12-12  Raphael Kubo da Costa  <kubo@profusion.mobi>
 
         [EFL] Add API to control whether SSL certificates should be checked.
index d50689dfb8b368095b46ee3177e15401e03c20d2..0ca5bd1bbf83283da5aa3613074fd7ee7bfedf04 100644 (file)
@@ -95,6 +95,26 @@ void ewk_network_tls_certificate_check_set(Eina_Bool checkCertificates)
 #endif
 }
 
+const char* ewk_network_tls_ca_certificates_path_get()
+{
+    const char* bundlePath = 0;
+
+#if USE(SOUP)
+    SoupSession* defaultSession = WebCore::ResourceHandle::defaultSession();
+    g_object_get(defaultSession, "ssl-ca-file", &bundlePath, NULL);
+#endif
+
+    return bundlePath;
+}
+
+void ewk_network_tls_ca_certificates_path_set(const char* bundlePath)
+{
+#if USE(SOUP)
+    SoupSession* defaultSession = WebCore::ResourceHandle::defaultSession();
+    g_object_set(defaultSession, "ssl-ca-file", bundlePath, NULL);
+#endif
+}
+
 SoupSession* ewk_network_default_soup_session_get()
 {
 #if USE(SOUP)
index ec8e6905d51f370f61fd028d8a28d3c6003c2739..612c2f7ce315adf348e69ee275adce3ea34edbb1 100644 (file)
@@ -60,6 +60,8 @@ EAPI void             ewk_network_state_notifier_online_set(Eina_Bool online);
  * Returns whether HTTPS connections should check the received certificate and error out if it is invalid.
  *
  * By default, HTTPS connections are performed regardless of the validity of the certificate provided.
+ *
+ * @sa ewk_network_tls_ca_certificates_path_set
  */
 EAPI Eina_Bool        ewk_network_tls_certificate_check_get(void);
 
@@ -69,9 +71,45 @@ EAPI Eina_Bool        ewk_network_tls_certificate_check_get(void);
  * By default, HTTPS connections are performed regardless of the validity of the certificate provided.
  *
  * @param enable Whether to check the provided certificates or not.
+ *
+ * @sa ewk_network_tls_ca_certificates_path_set
  */
 EAPI void             ewk_network_tls_certificate_check_set(Eina_Bool enable);
 
+/**
+ * Returns the path to a file containing the platform's root X.509 CA certificates.
+ *
+ * The file is a list of concatenated PEM-format X.509 certificates used as root CA certificates.
+ * They are used to validate all the certificates received when a TLS connection (such as an HTTPS one) is made.
+ *
+ * If @c ewk_network_tls_certificate_check_get() returns @c EINA_TRUE, the certificates set by this function
+ * will be used to decide whether a certificate provided by a web site is invalid and the request should then
+ * be cancelled.
+ *
+ * By default, the path is not set, so all certificates are considered as not signed by a trusted root CA.
+ *
+ * @sa ewk_network_tls_certificate_check_set
+ */
+EAPI const char      *ewk_network_tls_ca_certificates_path_get(void);
+
+/**
+ * Sets the path to a file containing the platform's root X.509 CA certificates.
+ *
+ * The file is a list of concatenated PEM-format X.509 certificates used as root CA certificates.
+ * They are used to validate all the certificates received when a TLS connection (such as an HTTPS one) is made.
+ *
+ * If @c ewk_network_tls_certificate_check_get() returns @c EINA_TRUE, the certificates set by this function
+ * will be used to decide whether a certificate provided by a web site is invalid and the request should then
+ * be cancelled.
+ *
+ * By default, the path is not set, so all certificates are considered as not signed by a trusted root CA.
+ *
+ * @param path The path to the certificate bundle.
+ *
+ * @sa ewk_network_tls_certificate_check_set
+ */
+EAPI void             ewk_network_tls_ca_certificates_path_set(const char *path);
+
 /**
  * Returns the default @c SoupSession used by all views.
  *