changeset 31368:29b4f2c52533

merged from im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 19 Nov 2010 07:13:04 +0900
parents ccd6a1da0d59 (current diff) 02c0a2640fc2 (diff)
children 193cbfcfc935
files libpurple/protocols/jabber/si.c libpurple/protocols/oscar/oscar.c libpurple/util.c
diffstat 13 files changed, 188 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Nov 18 23:07:34 2010 +0900
+++ b/ChangeLog	Fri Nov 19 07:13:04 2010 +0900
@@ -10,6 +10,10 @@
 	  (http://developer.pidgin.im/wiki/SlpArchitecture)
 	* Lots of little changes.
 
+	XMPP:
+	* Avoid a double-free in the Google Relay (V/V) code.
+	* Avoid double error message when failing a file transfer. (#12757)
+
 version 2.7.5 (10/31/2010):
 	General:
 	* Added Verisign Class 3 Public CA - G2 root CA.
--- a/libpurple/protocols/jabber/google/google_session.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/libpurple/protocols/jabber/google/google_session.c	Fri Nov 19 07:13:04 2010 +0900
@@ -372,7 +372,7 @@
 	params =
 		jabber_google_session_get_params(js, relay_ip, relay_udp, relay_tcp,
 			relay_ssltcp, relay_username, relay_password, &num_params);
-	
+
 	if (purple_media_add_stream(session_data->media, "google-voice",
 			session->remote_jid, PURPLE_MEDIA_AUDIO,
 			TRUE, "nice", num_params, params) == FALSE ||
@@ -382,12 +382,11 @@
 			TRUE, "nice", num_params, params) == FALSE)) {
 		purple_media_error(session_data->media, "Error adding stream.");
 		purple_media_end(session_data->media, NULL, NULL);
-		g_free(params);
 	} else {
 		session_data->added_streams = TRUE;
 	}
 
-	g_free(params);	
+	g_free(params);
 }
 
 
--- a/libpurple/protocols/jabber/si.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/libpurple/protocols/jabber/si.c	Fri Nov 19 07:13:04 2010 +0900
@@ -985,14 +985,8 @@
 jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess)
 {
 	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
-	JabberStream *js = jabber_ibb_session_get_js(sess);
-	PurpleConnection *gc = js->gc;
-	PurpleAccount *account = purple_connection_get_account(gc);
 
 	purple_debug_error("jabber", "an error occurred during IBB file transfer\n");
-	purple_xfer_error(purple_xfer_get_type(xfer), account,
-		jabber_ibb_session_get_who(sess),
-			_("An error occurred on the in-band bytestream transfer\n"));
 	purple_xfer_cancel_remote(xfer);
 }
 
@@ -1000,14 +994,9 @@
 jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess)
 {
 	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
-	JabberStream *js = jabber_ibb_session_get_js(sess);
-	PurpleConnection *gc = js->gc;
-	PurpleAccount *account = purple_connection_get_account(gc);
 
 	purple_debug_info("jabber", "the remote user closed the transfer\n");
 	if (purple_xfer_get_bytes_remaining(xfer) > 0) {
-		purple_xfer_error(purple_xfer_get_type(xfer), account,
-			jabber_ibb_session_get_who(sess), _("Transfer was closed."));
 		purple_xfer_cancel_remote(xfer);
 	} else {
 		purple_xfer_set_completed(xfer, TRUE);
@@ -1139,18 +1128,12 @@
 jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess)
 {
 	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
-	JabberStream *js = jabber_ibb_session_get_js(sess);
-	PurpleConnection *gc = js->gc;
-	PurpleAccount *account = purple_connection_get_account(gc);
 
 	if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
 		purple_xfer_start(xfer, -1, NULL, 0);
 		purple_xfer_prpl_ready(xfer);
 	} else {
 		/* error */
-		purple_xfer_error(purple_xfer_get_type(xfer), account,
-			jabber_ibb_session_get_who(sess),
-			_("Failed to open in-band bytestream"));
 		purple_xfer_end(xfer);
 	}
 }
--- a/libpurple/protocols/msn/user.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/libpurple/protocols/msn/user.c	Fri Nov 19 07:13:04 2010 +0900
@@ -742,7 +742,18 @@
 	str = purple_normalize_nocase(NULL, msn_user_get_passport(user));
 	pass = g_strdup(str);
 
+#if GLIB_CHECK_VERSION(2,16,0)
 	result = g_strcmp0(pass, purple_normalize_nocase(NULL, passport));
+#else
+	str = purple_normalize_nocase(NULL, passport);
+	if (!pass)
+		result = -(pass != str);
+	else if (!str)
+		result = pass != str;
+	else
+		result = strcmp(pass, str);
+#endif /* GLIB < 2.16.0 */
+
 	g_free(pass);
 
 	return result;
--- a/libpurple/protocols/oscar/oscar.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/libpurple/protocols/oscar/oscar.c	Fri Nov 19 07:13:04 2010 +0900
@@ -637,6 +637,15 @@
 	return subtype1 - subtype2;
 }
 
+#if !GLIB_CHECK_VERSION(2,14,0)
+static void hash_table_get_list_of_keys(gpointer key, gpointer value, gpointer user_data)
+{
+	GList **handlers = (GList **)user_data;
+
+	*handlers = g_list_prepend(*handlers, key);
+}
+#endif /* GLIB < 2.14.0 */
+
 void
 oscar_login(PurpleAccount *account)
 {
@@ -706,7 +715,12 @@
 	oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, 0x0003, purple_parse_searchreply, 0);
 
 	g_string_append(msg, "Registered handlers: ");
+#if GLIB_CHECK_VERSION(2,14,0)
 	handlers = g_hash_table_get_keys(od->handlerlist);
+#else
+	handlers = NULL;
+	g_hash_table_foreach(od->handlerlist, hash_table_get_list_of_keys, &handlers);
+#endif /* GLIB < 2.14.0 */
 	sorted_handlers = g_list_sort(g_list_copy(handlers), compare_handlers);
 	for (cur = sorted_handlers; cur; cur = cur->next) {
 		guint x = GPOINTER_TO_UINT(cur->data);
@@ -5722,7 +5736,7 @@
 
 	for (i = 0; encryption_keys[i]; i++) {
 		PurpleKeyValuePair *kvp = g_new0(PurpleKeyValuePair, 1);
-		kvp->key = g_strdup(encryption_keys[i]);
+		kvp->key = g_strdup(_(encryption_keys[i]));
 		kvp->value = g_strdup(encryption_values[i]);
 		encryption_options = g_list_append(encryption_options, kvp);
 	}
--- a/libpurple/util.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/libpurple/util.c	Fri Nov 19 07:13:04 2010 +0900
@@ -3826,12 +3826,13 @@
 		gfud->webdata[gfud->len] = '\0';
 
 		if(!gfud->got_headers) {
-			char *tmp;
+			char *end_of_headers;
 
 			/* See if we've reached the end of the headers yet */
-			if((tmp = strstr(gfud->webdata, "\r\n\r\n"))) {
-				char * new_data;
-				guint header_len = (tmp + 4 - gfud->webdata);
+			end_of_headers = strstr(gfud->webdata, "\r\n\r\n");
+			if (end_of_headers) {
+				char *new_data;
+				guint header_len = (end_of_headers + 4 - gfud->webdata);
 				size_t content_len;
 
 				purple_debug_misc("util", "Response headers: '%.*s'\n",
@@ -3847,7 +3848,7 @@
 				content_len = parse_content_len(gfud->webdata, header_len);
 				gfud->chunked = content_is_chunked(gfud->webdata, header_len);
 
-				if(content_len == 0) {
+				if (content_len == 0) {
 					/* We'll stick with an initial 8192 */
 					content_len = 8192;
 				} else {
@@ -3856,19 +3857,16 @@
 
 
 				/* If we're returning the headers too, we don't need to clean them out */
-				if(gfud->include_headers) {
+				if (gfud->include_headers) {
 					gfud->data_len = content_len + header_len;
 					gfud->webdata = g_realloc(gfud->webdata, gfud->data_len);
 				} else {
-					size_t body_len = 0;
-
-					if(gfud->len > (header_len + 1))
-						body_len = (gfud->len - header_len);
+					size_t body_len = gfud->len - header_len;
 
 					content_len = MAX(content_len, body_len);
 
 					new_data = g_try_malloc(content_len);
-					if(new_data == NULL) {
+					if (new_data == NULL) {
 						purple_debug_error("util",
 								"Failed to allocate %" G_GSIZE_FORMAT " bytes: %s\n",
 								content_len, g_strerror(errno));
@@ -3882,9 +3880,8 @@
 					}
 
 					/* We may have read part of the body when reading the headers, don't lose it */
-					if(body_len > 0) {
-						tmp += 4;
-						memcpy(new_data, tmp, body_len);
+					if (body_len > 0) {
+						memcpy(new_data, end_of_headers + 4, body_len);
 					}
 
 					/* Out with the old... */
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Thu Nov 18 23:07:34 2010 +0900
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Fri Nov 19 07:13:04 2010 +0900
@@ -541,7 +541,9 @@
     Delete "$INSTDIR\ca-certs\Go_Daddy_Class_2_CA.pem"
     Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem"
     Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority.pem"
+    Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority_2010.pem"
     Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem"
+    Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority_2010.pem"
     Delete "$INSTDIR\ca-certs\StartCom_Certification_Authority.pem"
     Delete "$INSTDIR\ca-certs\StartCom_Free_SSL_CA.pem"
     Delete "$INSTDIR\ca-certs\Thawte_Premium_Server_CA.pem"
--- a/pidgin/win32/untar.c	Thu Nov 18 23:07:34 2010 +0900
+++ b/pidgin/win32/untar.c	Fri Nov 19 07:13:04 2010 +0900
@@ -578,7 +578,8 @@
  */
 int untar(const char *filename, const char* destdir, untar_opt options) {
 	int ret=1;
-	char curdir[_MAX_PATH];
+	wchar_t curdir[_MAX_PATH];
+	wchar_t *w_destdir;
 	untarops = options;
 	/* open the archive */
 	inname = filename;
@@ -589,13 +590,15 @@
 		return 0;
 	}
 
+	w_destdir = g_utf8_to_utf16(destdir, -1, NULL, NULL, NULL);
+
 	/* Set current directory */
-	if(!GetCurrentDirectory(_MAX_PATH, curdir)) {
+	if(!GetCurrentDirectoryW(_MAX_PATH, curdir)) {
 		untar_error("Could not get current directory (error %lu).\n", GetLastError());
 		fclose(infp);
 		return 0;
 	}
-	if(!SetCurrentDirectory(destdir)) {
+	if(!SetCurrentDirectoryW(w_destdir)) {
 		untar_error("Could not set current directory to (error %lu): %s\n", GetLastError(), destdir);
 		fclose(infp);
 		return 0;
@@ -614,12 +617,14 @@
 			fclose(outfp);
 			outfp = NULL;
 		}
-		if(!SetCurrentDirectory(curdir)) {
+		if(!SetCurrentDirectoryW(curdir)) {
 			untar_error("Could not set current dir back to original (error %lu).\n", GetLastError());
 			ret=0;
 		}
 	}
 
+	g_free(w_destdir);
+
 	/* close the archive file. */
 	fclose(infp);
 
--- a/po/POTFILES.in	Thu Nov 18 23:07:34 2010 +0900
+++ b/po/POTFILES.in	Fri Nov 19 07:13:04 2010 +0900
@@ -116,6 +116,7 @@
 libpurple/protocols/msn/servconn.c
 libpurple/protocols/msn/session.c
 libpurple/protocols/msn/slp.c
+libpurple/protocols/msn/slpcall.c
 libpurple/protocols/msn/state.c
 libpurple/protocols/msn/switchboard.c
 libpurple/protocols/msn/userlist.c
--- a/po/de.po	Thu Nov 18 23:07:34 2010 +0900
+++ b/po/de.po	Fri Nov 19 07:13:04 2010 +0900
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-28 19:57+0200\n"
-"PO-Revision-Date: 2010-10-28 19:50+0200\n"
+"POT-Creation-Date: 2010-11-17 09:26+0100\n"
+"PO-Revision-Date: 2010-11-17 09:19+0100\n"
 "Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
 "Language-Team: German <de@li.org>\n"
 "Language: de\n"
@@ -4891,15 +4891,6 @@
 msgid "Unknown Error in presence"
 msgstr "Unbekannter Fehlercode"
 
-msgid "An error occurred on the in-band bytestream transfer\n"
-msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n"
-
-msgid "Transfer was closed."
-msgstr "Übertragung wurde geschlossen."
-
-msgid "Failed to open in-band bytestream"
-msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen"
-
 #, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
 msgstr ""
@@ -5219,26 +5210,6 @@
 msgid "The username specified does not exist."
 msgstr "Der angegebene Benutzername existiert nicht."
 
-#, c-format
-msgid "Buddy list synchronization issue in %s (%s)"
-msgstr "Fehler bei der Buddy-Listen-Synchronisation bei %s (%s)"
-
-#, c-format
-msgid ""
-"%s on the local list is inside the group \"%s\" but not on the server list. "
-"Do you want this buddy to be added?"
-msgstr ""
-"%s auf der lokalen Liste ist in der Gruppe „%s“, aber nicht auf der "
-"Serverliste. Möchten Sie, dass der Buddy hinzugefügt wird?"
-
-#, c-format
-msgid ""
-"%s is on the local list but not on the server list. Do you want this buddy "
-"to be added?"
-msgstr ""
-"%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, "
-"dass der Buddy hinzugefügt wird?"
-
 msgid "Unable to parse message"
 msgstr "Kann die Nachricht nicht parsen"
 
@@ -5410,6 +5381,26 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN-Fehler: %s\n"
 
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr "Fehler bei der Buddy-Listen-Synchronisation bei %s (%s)"
+
+#, c-format
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s auf der lokalen Liste ist in der Gruppe „%s“, aber nicht auf der "
+"Serverliste. Möchten Sie, dass der Buddy hinzugefügt wird?"
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, "
+"dass der Buddy hinzugefügt wird?"
+
 msgid "Other Contacts"
 msgstr "Andere Kontakte"
 
@@ -5464,12 +5455,24 @@
 msgid "Set friendly name for %s."
 msgstr "Setze Spitznamen für %s."
 
-msgid "Set your friendly name."
-msgstr "Setze Ihren Spitznamen."
+msgid "Set Friendly Name"
+msgstr "Setze Spitznamen"
 
 msgid "This is the name that other MSN buddies will see you as."
 msgstr "Das ist der Name, den andere MSN-Buddys von Ihren sehen."
 
+msgid "This Location"
+msgstr "Dieser Ort"
+
+msgid "This is the name that identifies this location"
+msgstr "Das ist der Name, der diesen Ort identifiziert"
+
+msgid "Other Locations"
+msgstr "Andere Orte"
+
+msgid "You can sign out from other locations here"
+msgstr "Sie können andere Orte von hier abmelden"
+
 msgid "Set your home phone number."
 msgstr "Setze Ihre private Telefonnummer."
 
@@ -5556,6 +5559,9 @@
 msgid "Set Friendly Name..."
 msgstr "Setze Spitzname..."
 
+msgid "View Locations..."
+msgstr "Orte betrachten..."
+
 msgid "Set Home Phone Number..."
 msgstr "Setze private Telefonnummer..."
 
@@ -6999,6 +7005,13 @@
 "versuchen Sie es noch einmal. Wenn Sie es weiter versuchen, müssen Sie sogar "
 "noch länger warten."
 
+msgid ""
+"You required encryption in your account settings, but one of the servers "
+"doesn't support it."
+msgstr ""
+"Sie haben Verschlüsselung in Ihren Kontoeinstellungen gefordert, aber einer "
+"der Server unterstützt keine Verschlüsselung."
+
 #. Note to translators: The first %s is a URL, the second is an
 #. error message.
 #, c-format
@@ -7314,6 +7327,13 @@
 "Buchstaben beginnen und nur Buchstaben, Ziffern und Leerzeichen enthalten "
 "oder nur aus Ziffern bestehen."
 
+msgid ""
+"You required encryption in your account settings, but encryption is not "
+"supported by your system."
+msgstr ""
+"Sie haben Verschlüsselung in Ihren Kontoeinstellungen gefordert, aber Ihr "
+"System unterstützt keine Verschlüsselung."
+
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
 msgstr ""
@@ -7864,6 +7884,9 @@
 msgid "Search for Buddy by Email Address..."
 msgstr "Suche Buddys nach E-Mail-Adresse..."
 
+msgid "Don't use encryption"
+msgstr "Keine Verschlüsselung benutzen"
+
 msgid "Use clientLogin"
 msgstr "clientLogin benutzen"
 
@@ -8062,7 +8085,7 @@
 msgstr "Persönliche Webseite"
 
 #. aim_userinfo_t
-#. strip_html_tags
+#. use_html_status
 msgid "Additional Information"
 msgstr "Zusätzliche Informationen"
 
@@ -15600,3 +15623,12 @@
 
 msgid "You do not have permission to uninstall this application."
 msgstr "Sie haben keine Berechtigung, diese Anwendung zu deinstallieren."
+
+#~ msgid "An error occurred on the in-band bytestream transfer\n"
+#~ msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n"
+
+#~ msgid "Transfer was closed."
+#~ msgstr "Übertragung wurde geschlossen."
+
+#~ msgid "Failed to open in-band bytestream"
+#~ msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen"
--- a/share/ca-certs/Makefile.am	Thu Nov 18 23:07:34 2010 +0900
+++ b/share/ca-certs/Makefile.am	Fri Nov 19 07:13:04 2010 +0900
@@ -22,7 +22,9 @@
 EXTRA_CERTS = \
 		AOL_Member_CA.pem \
 		Microsoft_Internet_Authority.pem \
+		Microsoft_Internet_Authority_2010.pem \
 		Microsoft_Secure_Server_Authority.pem \
+		Microsoft_Secure_Server_Authority_2010.pem \
 		VeriSign_Class3_Extended_Validation_CA.pem \
 		VeriSign_International_Server_Class_3_CA.pem
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/Microsoft_Internet_Authority_2010.pem	Fri Nov 19 07:13:04 2010 +0900
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFEjCCBHugAwIBAgIEBydiAjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
+cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
+b2JhbCBSb290MB4XDTEwMDQxNDE4MTIyNloXDTE4MDQxNDE4MTIxNFowJzElMCMG
+A1UEAxMcTWljcm9zb2Z0IEludGVybmV0IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAL30zSelStiQGduyCntgpE6PDpijnHxQduuzSoyf
+GLDnmsUrgoYJKKwREjIm9Rnq8LhnaMUG/fQZrtkToNCBJwimeZwE9UgyLjYfq2sm
+7KFDtJ2AsEkD6oJJXwUTxaCDX+Eq9AQZS37I2oi8tV0DvHhWoel/xWrvtv8dAVm3
+H1NaX8b4kW3FfUOTGHRF7RW6snzIOjQUHqpj9+XUS8gjK4dplROZCRTvegEgTrfG
+SEGuyYcBKdnChzh/tkKk8LLOLf20TFfwqNbLTvpfXf25+wncFoVk5XGc1fEzlzhn
+Lpu8FzYFfhA2f37rmFpbHK2l5wkQfflKL7OPNxXWb7lbN9y3n3+OZn8jXO0Sf4wH
+8P4Z+bg0Q3uy6oX7jKmq3/2RDSz1+6+XifEGiq9J9jwuI/ZEFiWREeIjw8qFVUkq
+yCGvfREmhrAoRbqH7jYTgdVLRxqO2wnx0ZcpUBQymQnj8sDnU49r9PoTXDyN7lSZ
+DydHTjwS848SF0bwiWpFs7U8DHdFBC+9vrWemDwFO7tBOYQgvHkE1kLNPonp53o3
+SRC0zJ8kXCOmSG7749TuISmT5P2AGhs6bMH369nUTb7xEfaijkIkoU9ptdJoFInZ
+n5DYH54b5m1kJSm2NEOkW/UN63QGfp/xY9xFp3w6mlxrc9jDWASOiG8T0ObQ383E
+Cg4HAgMBAAGjggF3MIIBczASBgNVHRMBAf8ECDAGAQH/AgEBMFsGA1UdIARUMFIw
+SAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly9jeWJlcnRydXN0Lm9t
+bmlyb290LmNvbS9yZXBvc2l0b3J5LmNmbTAGBgRVHSAAMA4GA1UdDwEB/wQEAwIB
+hjCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
+Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywg
+SW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUG
+A1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0LmNvbS9jZ2kt
+YmluL0NSTC8yMDE4L2NkcC5jcmwwHQYDVR0OBBYEFDMh8Mv+oqBEkt72OzPYXwFL
+l3hdMA0GCSqGSIb3DQEBBQUAA4GBACtI85T7RMWTatZN/rQTThImF8qyWqsJuVak
+b39XnmSy9eTTNe9jZcvlLBWc7874KsWSZCtJPjw2bL0Ym2Rnlz/taNAWwRM88lGg
+V94kzjWraZBOKww6+bTxgPptAHmmOpaZTjpuVNCjWW6LHZVJu5XYdbjhEjOsXCe7
+y1Vx1frt
+-----END CERTIFICATE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/Microsoft_Secure_Server_Authority_2010.pem	Fri Nov 19 07:13:04 2010 +0900
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGEzCCA/ugAwIBAgIKYQMzNgAFAAAAMDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
+VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTEwMDUxOTIyMTMz
+MFoXDTE0MDUxOTIyMjMzMFowgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ
+kiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/IsZAEZFgRjb3JwMRcwFQYK
+CZImiZPyLGQBGRYHcmVkbW9uZDEqMCgGA1UEAxMhTWljcm9zb2Z0IFNlY3VyZSBT
+ZXJ2ZXIgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+6p9fkQvNGYJfkeqr9Yso2Iv1HOCRybzNAhBQIrc4ClzPcQxYLYhsqLg8M2P5c508
+6cN57fL+ycvDbiTiPEJw2F+3W/ebX/Unb3gA65Zdt2/P5EEE8LtDvW9fJg+3jjdB
+E1RnG5AAJzi4GsOWbRwxNTVJxUYe53OkygMReUGBr9OORqLFvgBTBbk4nLdgKbPK
+UpqSxVMntkENQPgvm+eBSRpaaqhPccfobYG+J+/J1saSKxDkNjVACNBNcP1wmyAc
+s7nfdZ0rd9DEzWpx71pYC/lwhYgFiW1mkjCrr4g519QtC5aceCSvAKvPCT4TrmvD
+4OHPYH+LU9wC0POwhhHevQIDAQABo4IB2jCCAdYwEgYDVR0TAQH/BAgwBgEB/wIB
+ADAdBgNVHQ4EFgQUCELj204RZvO1CMVA21V8M0YRgzgwCwYDVR0PBAQDAgGGMBIG
+CSsGAQQBgjcVAQQFAgMIAAgwIwYJKwYBBAGCNxUCBBYEFH6KwpxaMozCcaLZT3Vw
+96kb9pQFMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFDMh
+8Mv+oqBEkt72OzPYXwFLl3hdMIGjBgNVHR8EgZswgZgwgZWggZKggY+GNmh0dHA6
+Ly9tc2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3KDUpLmNy
+bIY0aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3
+KDUpLmNybIYfaHR0cDovL2NvcnBwa2kvY3JsL21zd3d3KDUpLmNybDB5BggrBgEF
+BQcBAQRtMGswPAYIKwYBBQUHMAKGMGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
+a2kvbXNjb3JwL21zd3d3KDUpLmNydDArBggrBgEFBQcwAoYfaHR0cDovL2NvcnBw
+a2kvYWlhL21zd3d3KDUpLmNydDANBgkqhkiG9w0BAQUFAAOCAgEAj8LRXO8UEXcX
+Ywc8THxo2v6GSuIgzD+wJz3R4qzIi0im5Fn3OgatfVLx9mVhliEirmi+L3reswz1
+6cXd+GWCXctsPgw3EXQVCXhVvSYSu9aVdNO89XYJKmrfNsSOVtUfIN9/gjDXQ6to
+IotqWsWb0J2NCwxQhX7MWoAHiwNOv71fbFYPBaniVMOl01JcX00L3QX4URIDIW+c
+bJeYKsHBEby9G67741dfTx8AnuKkUdP3rAk3WKUJIdFy0LLBi9tN3BPRVFhNK8Ct
++lMZNbEVqEJkt+3HH6V5qA041FC/9Fr/L+m/P3045fsgDNRO4C8dRXr7KC8xSG/M
+blxoQvrqyAsBMOwQJkI4I6nDGbjZcBpoLJLLn3PmzP8zI+7bXrV/BVg/UMUcCBj0
+6y9iqlP3oc3e4+uCHBpna6FMp2hxQNFlO0EYnEnjcfvrTYOT00fmZELLtjUc+zQO
+oSj7jKGnHwEoUeVxlDec3EFbfH7pLCNnlJ1z319AeaONlTDMUxcIvFCG8/wQGYH8
+9Fpu89yimnV7w6ygUe0ytljfT46RU2rSqhtd5lO4iaOeiaHjKeCzbOsazG9aqsLi
+9h5FKe/WwkOxO60+JvyBl1xI/WJZNJLJ+7mh10IF+xn2fjL7KTTVh2blBB3IPhD6
+pnj1Hn3eGjp4fNwqcQajLW8FVSOLkO8=
+-----END CERTIFICATE-----