aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-25 08:04:32 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-25 08:04:32 +0000
commit050ce4e2bc694290e771574a4d48e723b7a8488f (patch)
treeb495ca994de5a866620b97c099e293803c2e9262
parentb97348552b942705b8d15f89f19265709ee36e74 (diff)
src/sslmanager.c: display issued and expire date. Refined text format.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2354 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog5
-rw-r--r--po/ja.po162
-rw-r--r--src/sslmanager.c67
3 files changed, 135 insertions, 99 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e7506cc..0c4b6103 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-11-25
+
+ * src/sslmanager.c: display issued and expire date. Refined text
+ format.
+
2009-11-24
* src/addressbook.c: re-enabled sort order change because the bug
diff --git a/po/ja.po b/po/ja.po
index 4a4bc8b6..65918886 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sylpheed\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-13 18:07+0900\n"
+"POT-Creation-Date: 2009-11-25 16:52+0900\n"
"PO-Revision-Date: 1999-10-12\n"
"Last-Translator: Hiroyuki Yamamoto <hiro-y@kcn.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n"
@@ -575,16 +575,16 @@ msgstr "ssl コンテキスト生成中にエラー発生\n"
msgid "SSL connection using %s\n"
msgstr "%s を用いて SSL 接続\n"
-#: libsylph/ssl.c:278
+#: libsylph/ssl.c:282
msgid "Server certificate:\n"
msgstr "サーバ証明書:\n"
-#: libsylph/ssl.c:281
+#: libsylph/ssl.c:285
#, c-format
msgid " Subject: %s\n"
msgstr " 所有者: %s\n"
-#: libsylph/ssl.c:286
+#: libsylph/ssl.c:290
#, c-format
msgid " Issuer: %s\n"
msgstr " 発行者: %s\n"
@@ -680,7 +680,7 @@ msgstr ""
"新着メッセージはこの順番でチェックされます。「全受信」によるメッセージ\n"
"の取得を有効にするには、「G」カラムのボックスをチェックしてください。"
-#: src/account_dialog.c:374 src/addressadd.c:177 src/addressbook.c:702
+#: src/account_dialog.c:374 src/addressadd.c:177 src/addressbook.c:701
#: src/compose.c:5110 src/editaddress.c:777 src/editaddress.c:826
#: src/editbook.c:198 src/editgroup.c:266 src/editjpilot.c:270
#: src/editldap.c:307 src/editvcard.c:183 src/mimeview.c:226
@@ -821,7 +821,7 @@ msgstr "アドレスをアドレス帳に追加"
msgid "Address"
msgstr "アドレス"
-#: src/addressadd.c:197 src/addressbook.c:734 src/editaddress.c:629
+#: src/addressadd.c:197 src/addressbook.c:744 src/editaddress.c:629
#: src/editaddress.c:695 src/editgroup.c:268 src/importcsv.c:125
msgid "Remarks"
msgstr "備考"
@@ -982,68 +982,68 @@ msgid "Address book"
msgstr "アドレス帳"
#. special folder setting (maybe these options are redundant)
-#: src/addressbook.c:628 src/addressbook.c:3734 src/folderview.c:385
+#: src/addressbook.c:628 src/addressbook.c:3744 src/folderview.c:385
#: src/prefs_account_dialog.c:1835 src/query_search.c:400
msgid "Folder"
msgstr "フォルダ"
-#: src/addressbook.c:726
+#: src/addressbook.c:730
msgid "E-Mail address"
msgstr "電子メール アドレス"
-#: src/addressbook.c:760 src/prefs_filter_edit.c:251
+#: src/addressbook.c:770 src/prefs_filter_edit.c:251
#: src/prefs_search_folder.c:187
msgid "Name:"
msgstr "名前:"
-#: src/addressbook.c:797 src/compose.c:3153 src/headerview.c:55
+#: src/addressbook.c:807 src/compose.c:3153 src/headerview.c:55
#: src/prefs_folder_item.c:339 src/prefs_template.c:179
msgid "To:"
msgstr "宛先:"
-#: src/addressbook.c:801 src/compose.c:3170 src/headerview.c:56
+#: src/addressbook.c:811 src/compose.c:3170 src/headerview.c:56
#: src/prefs_folder_item.c:356 src/prefs_template.c:181
msgid "Cc:"
msgstr "Cc:"
-#: src/addressbook.c:805 src/compose.c:3187 src/prefs_folder_item.c:367
+#: src/addressbook.c:815 src/compose.c:3187 src/prefs_folder_item.c:367
#: src/prefs_template.c:183
msgid "Bcc:"
msgstr "Bcc:"
#. Buttons
-#: src/addressbook.c:826 src/addressbook.c:1904 src/editaddress.c:719
+#: src/addressbook.c:836 src/addressbook.c:1914 src/editaddress.c:719
#: src/editaddress.c:853 src/prefs_actions.c:266
#: src/prefs_display_header.c:280 src/prefs_display_header.c:336
#: src/prefs_template.c:239 src/prefs_toolbar.c:65
msgid "Delete"
msgstr "削除"
-#: src/addressbook.c:829 src/editaddress.c:725 src/editaddress.c:859
+#: src/addressbook.c:839 src/editaddress.c:725 src/editaddress.c:859
#: src/prefs_actions.c:254 src/prefs_customheader.c:232
#: src/prefs_display_header.c:274 src/prefs_display_header.c:330
#: src/prefs_filter_edit.c:1560
msgid "Add"
msgstr "追加"
-#: src/addressbook.c:833
+#: src/addressbook.c:843
msgid "Lookup"
msgstr "検索"
-#: src/addressbook.c:837
+#: src/addressbook.c:847
msgid "_Close"
msgstr "閉じる(_C)"
#. Confirm deletion
-#: src/addressbook.c:1044
+#: src/addressbook.c:1054
msgid "Delete address(es)"
msgstr "アドレスの削除"
-#: src/addressbook.c:1045
+#: src/addressbook.c:1055
msgid "Really delete the address(es)?"
msgstr "本当にこのアドレスを削除しますか?"
-#: src/addressbook.c:1895
+#: src/addressbook.c:1905
#, c-format
msgid ""
"Do you want to delete the folder AND all addresses in `%s' ?\n"
@@ -1052,36 +1052,36 @@ msgstr ""
"`%s' 内のすべてのフォルダとアドレスを削除してもいいですか?\n"
"フォルダのみを削除する場合、アドレスは親フォルダに移動します。"
-#: src/addressbook.c:1898 src/folderview.c:2546
+#: src/addressbook.c:1908 src/folderview.c:2546
msgid "Delete folder"
msgstr "フォルダの削除"
-#: src/addressbook.c:1898
+#: src/addressbook.c:1908
msgid "_Folder only"
msgstr "フォルダのみ(_F)"
-#: src/addressbook.c:1898
+#: src/addressbook.c:1908
msgid "Folder and _addresses"
msgstr "フォルダとアドレス(_A)"
-#: src/addressbook.c:1903
+#: src/addressbook.c:1913
#, c-format
msgid "Really delete `%s' ?"
msgstr "本当に `%s' を削除しますか?"
-#: src/addressbook.c:2791 src/addressbook.c:2927
+#: src/addressbook.c:2801 src/addressbook.c:2937
msgid "New user, could not save index file."
msgstr "新規ユーザ、インデックスファイルを保存できません。"
-#: src/addressbook.c:2795 src/addressbook.c:2931
+#: src/addressbook.c:2805 src/addressbook.c:2941
msgid "New user, could not save address book files."
msgstr "新規ユーザ、アドレス帳ファイルを保存できません。"
-#: src/addressbook.c:2805 src/addressbook.c:2941
+#: src/addressbook.c:2815 src/addressbook.c:2951
msgid "Old address book converted successfully."
msgstr "旧形式のアドレス帳は正しく変換されました。"
-#: src/addressbook.c:2810
+#: src/addressbook.c:2820
msgid ""
"Old address book converted,\n"
"could not save new address index file"
@@ -1089,7 +1089,7 @@ msgstr ""
"旧形式のアドレス帳は変換されました。\n"
"新規アドレスインデックスファイルに保存できません"
-#: src/addressbook.c:2823
+#: src/addressbook.c:2833
msgid ""
"Could not convert address book,\n"
"but created empty new address book files."
@@ -1097,7 +1097,7 @@ msgstr ""
"アドレス帳を変換できません。\n"
"しかし空の新規アドレス帳ファイルが作成されました。"
-#: src/addressbook.c:2829
+#: src/addressbook.c:2839
msgid ""
"Could not convert address book,\n"
"could not create new address book files."
@@ -1105,7 +1105,7 @@ msgstr ""
"アドレス帳を変換できません。\n"
"新規アドレス帳ファイルを作成できません。"
-#: src/addressbook.c:2834
+#: src/addressbook.c:2844
msgid ""
"Could not convert address book\n"
"and could not create new address book files."
@@ -1113,15 +1113,15 @@ msgstr ""
"アドレス帳を変換できません。\n"
"新規アドレス帳ファイルを作成できません。"
-#: src/addressbook.c:2841
+#: src/addressbook.c:2851
msgid "Address book conversion error"
msgstr "アドレス帳の変換エラー"
-#: src/addressbook.c:2845
+#: src/addressbook.c:2855
msgid "Address book conversion"
msgstr "アドレス帳の変換"
-#: src/addressbook.c:2882
+#: src/addressbook.c:2892
#, c-format
msgid ""
"Could not read address index:\n"
@@ -1132,76 +1132,76 @@ msgstr ""
"\n"
"%s%c%s"
-#: src/addressbook.c:2885
+#: src/addressbook.c:2895
msgid "Address Book Error"
msgstr "アドレス帳のエラー"
-#: src/addressbook.c:2946
+#: src/addressbook.c:2956
msgid "Old address book converted, could not save new address index file"
msgstr ""
"旧形式のアドレス帳は変換されましたが、新規アドレスインデックスファイルを保存"
"できません"
-#: src/addressbook.c:2960
+#: src/addressbook.c:2970
msgid ""
"Could not convert address book, but created empty new address book files."
msgstr ""
"アドレス帳を変換できませんでしたが、空の新規アドレス帳ファイルが作成されまし"
"た。"
-#: src/addressbook.c:2966
+#: src/addressbook.c:2976
msgid ""
"Could not convert address book, could not create new address book files."
msgstr ""
"アドレス帳を変換できません。新規アドレス帳ファイルを作成できませんでした。"
-#: src/addressbook.c:2972
+#: src/addressbook.c:2982
msgid ""
"Could not convert address book and could not create new address book files."
msgstr ""
"アドレス帳を変換できません。新規アドレス帳ファイルを作成できませんでした。"
-#: src/addressbook.c:2984
+#: src/addressbook.c:2994
msgid "Could not read address index"
msgstr "アドレスインデックスを読み込めません"
-#: src/addressbook.c:2990
+#: src/addressbook.c:3000
msgid "Address Book Conversion Error"
msgstr "アドレス帳変換エラー"
-#: src/addressbook.c:2996
+#: src/addressbook.c:3006
msgid "Address Book Conversion"
msgstr "アドレス帳変換"
-#: src/addressbook.c:3664 src/prefs_common_dialog.c:2198
+#: src/addressbook.c:3674 src/prefs_common_dialog.c:2198
msgid "Interface"
msgstr "インタフェース"
-#: src/addressbook.c:3678 src/importcsv.c:671 src/importldif.c:478
+#: src/addressbook.c:3688 src/importcsv.c:671 src/importldif.c:478
msgid "Address Book"
msgstr "アドレス帳"
-#: src/addressbook.c:3692
+#: src/addressbook.c:3702
msgid "Person"
msgstr "人物"
-#: src/addressbook.c:3706
+#: src/addressbook.c:3716
msgid "EMail Address"
msgstr "電子メール アドレス"
-#: src/addressbook.c:3720
+#: src/addressbook.c:3730
msgid "Group"
msgstr "グループ"
-#: src/addressbook.c:3748
+#: src/addressbook.c:3758
msgid "vCard"
msgstr "vCard"
-#: src/addressbook.c:3762 src/addressbook.c:3776
+#: src/addressbook.c:3772 src/addressbook.c:3786
msgid "JPilot"
msgstr "JPilot"
-#: src/addressbook.c:3790
+#: src/addressbook.c:3800
msgid "LDAP Server"
msgstr "LDAPサーバ"
@@ -6812,40 +6812,58 @@ msgstr "%s のソースを表示しています...\n"
msgid "%s - Source"
msgstr "%s - ソース"
-#: src/sslmanager.c:59
+#: src/sslmanager.c:66
msgid "SSL certificate verify failed"
msgstr "SSL 証明書を検証できません"
-#: src/sslmanager.c:65
+#: src/sslmanager.c:99
#, c-format
-msgid ""
-"The SSL certificate of %s cannot be verified by the following reason:\n"
-" %s\n"
-"\n"
-"Server certificate:\n"
-" Subject: %s\n"
-" Issuer: %s\n"
-"\n"
-"Do you accept this certificate?"
-msgstr ""
-"%s の SSL 証明書を以下の理由で検証できません:\n"
-" %s\n"
-"\n"
-"サーバ証明書:\n"
-" 所有者: %s\n"
-" 発行者: %s\n"
-"\n"
-"この証明書を受け入れますか?"
+msgid "The SSL certificate of %s cannot be verified by the following reason:"
+msgstr "%s の SSL 証明書を以下の理由で検証できません:"
+
+#: src/sslmanager.c:101
+#, c-format
+msgid "Subject: %s\n"
+msgstr "所有者: %s\n"
+
+#: src/sslmanager.c:102
+#, c-format
+msgid "Issuer: %s\n"
+msgstr "発行者: %s\n"
+
+#: src/sslmanager.c:103
+#, c-format
+msgid "Issued date: %s\n"
+msgstr "発行日: %s\n"
+
+#: src/sslmanager.c:104
+#, c-format
+msgid "Expire date: %s\n"
+msgstr "有効期限: %s\n"
+
+#: src/sslmanager.c:106
+#, c-format
+msgid "SHA1 fingerprint: %s\n"
+msgstr "SHA1 フィンガープリント: %s\n"
+
+#: src/sslmanager.c:107
+#, c-format
+msgid "MD5 fingerprint: %s\n"
+msgstr "MD5 フィンガープリント: %s\n"
+
+#: src/sslmanager.c:109
+msgid "Do you accept this certificate?"
+msgstr "この証明書を受け入れますか?"
-#: src/sslmanager.c:142 src/sslmanager.c:150
+#: src/sslmanager.c:180 src/sslmanager.c:188
msgid "_Reject"
msgstr "拒否する(_R)"
-#: src/sslmanager.c:143 src/sslmanager.c:149
+#: src/sslmanager.c:181 src/sslmanager.c:187
msgid "_Temporarily accept"
msgstr "一時的に受け入れる(_T)"
-#: src/sslmanager.c:144 src/sslmanager.c:148
+#: src/sslmanager.c:182 src/sslmanager.c:186
msgid "Always _accept"
msgstr "常に受け入れる(_A)"
diff --git a/src/sslmanager.c b/src/sslmanager.c
index 8459cdf3..b303960d 100644
--- a/src/sslmanager.c
+++ b/src/sslmanager.c
@@ -1,6 +1,6 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2008 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2009 Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -49,12 +49,14 @@ gint ssl_manager_verify_cert(SockInfo *sockinfo, const gchar *hostname,
GtkWidget *vbox;
GtkWidget *label;
const gchar *title;
- gchar *message;
+ GString *message;
gchar *subject, *issuer;
guchar keyid[EVP_MAX_MD_SIZE];
- gchar sha1_keyidstr[EVP_MAX_MD_SIZE * 3 + 1] = "";
- gchar md5_keyidstr[EVP_MAX_MD_SIZE * 3 + 1] = "";
+ gchar keyidstr[EVP_MAX_MD_SIZE * 3 + 1] = "";
guint keyidlen = 0;
+ gchar *sha1_keyidstr, *md5_keyidstr;
+ BIO *bio;
+ gchar not_before[64] = "", not_after[64] = "";
gint i;
gint result;
@@ -66,35 +68,46 @@ gint ssl_manager_verify_cert(SockInfo *sockinfo, const gchar *hostname,
subject = X509_NAME_oneline(X509_get_subject_name(server_cert),
NULL, 0);
issuer = X509_NAME_oneline(X509_get_issuer_name(server_cert), NULL, 0);
+
+ bio = BIO_new(BIO_s_mem());
+ ASN1_TIME_print(bio, X509_get_notBefore(server_cert));
+ BIO_gets(bio, not_before, sizeof(not_before));
+ BIO_reset(bio);
+ ASN1_TIME_print(bio, X509_get_notAfter(server_cert));
+ BIO_gets(bio, not_after, sizeof(not_after));
+ BIO_free(bio);
+
if (X509_digest(server_cert, EVP_sha1(), keyid, &keyidlen)) {
for (i = 0; i < keyidlen; i++)
- g_snprintf(sha1_keyidstr + i * 3, 4, "%02x:", keyid[i]);
- sha1_keyidstr[keyidlen * 3 - 1] = '\0';
+ g_snprintf(keyidstr + i * 3, 4, "%02x:", keyid[i]);
+ keyidstr[keyidlen * 3 - 1] = '\0';
+ sha1_keyidstr = g_ascii_strup(keyidstr, -1);
} else {
- g_snprintf(sha1_keyidstr, sizeof(sha1_keyidstr),
- "(cannot calculate digest)");
+ sha1_keyidstr = g_strdup("(cannot calculate digest)");
}
if (X509_digest(server_cert, EVP_md5(), keyid, &keyidlen)) {
for (i = 0; i < keyidlen; i++)
- g_snprintf(md5_keyidstr + i * 3, 4, "%02x:", keyid[i]);
- md5_keyidstr[keyidlen * 3 - 1] = '\0';
+ g_snprintf(keyidstr + i * 3, 4, "%02x:", keyid[i]);
+ keyidstr[keyidlen * 3 - 1] = '\0';
+ md5_keyidstr = g_ascii_strup(keyidstr, -1);
} else {
- g_snprintf(md5_keyidstr, sizeof(md5_keyidstr),
- "(cannot calculate digest)");
+ md5_keyidstr = g_strdup("(cannot calculate digest)");
}
- message = g_strdup_printf
- (_("The SSL certificate of %s cannot be verified by the following reason:\n"
- " %s\n\n"
- "Server certificate:\n"
- " Subject: %s\n"
- " Issuer: %s\n\n"
- " SHA1 fingerprint: %s\n"
- " MD5 fingerprint: %s\n\n"
- "Do you accept this certificate?"),
- hostname, X509_verify_cert_error_string(verify_result),
- subject ? subject : "(unknown)",
- issuer ? issuer : "(unknown)",
- sha1_keyidstr, md5_keyidstr);
+
+ message = g_string_new("");
+ g_string_append_printf(message, _("The SSL certificate of %s cannot be verified by the following reason:"), hostname);
+ g_string_append_printf(message, "\n %s\n\n", X509_verify_cert_error_string(verify_result));
+ g_string_append_printf(message, _("Subject: %s\n"), subject ? subject : "(unknown)");
+ g_string_append_printf(message, _("Issuer: %s\n"), issuer ? issuer : "(unknown)");
+ g_string_append_printf(message, _("Issued date: %s\n"), not_before);
+ g_string_append_printf(message, _("Expire date: %s\n"), not_after);
+ g_string_append(message, "\n");
+ g_string_append_printf(message, _("SHA1 fingerprint: %s\n"), sha1_keyidstr);
+ g_string_append_printf(message, _("MD5 fingerprint: %s\n"), md5_keyidstr);
+ g_string_append(message, "\n");
+ g_string_append(message, _("Do you accept this certificate?"));
+ g_free(md5_keyidstr);
+ g_free(sha1_keyidstr);
if (issuer)
OPENSSL_free(issuer);
if (subject)
@@ -143,8 +156,8 @@ gint ssl_manager_verify_cert(SockInfo *sockinfo, const gchar *hostname,
if (font_desc)
gtk_widget_modify_font(label, font_desc);
- label = gtk_label_new(message);
- g_free(message);
+ label = gtk_label_new(message->str);
+ g_string_free(message, TRUE);
gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);