亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? encrypt.c

?? 一個windows上的加解密程式 提供方便的介面讓使用者操作
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*                    Gaim encryption plugin                              *//*             Copyright (C) 2001-2003 William Tompkins                   *//* This plugin is free software, distributed under the GNU General Public *//* License.                                                               *//* Please see the file "COPYING" distributed with the Gaim source code    *//* for more details                                                       *//*                                                                        *//*                                                                        *//*    This software is distributed in the hope that it will be useful,    *//*   but WITHOUT ANY WARRANTY; without even the implied warranty of       *//*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    *//*   General Public License for more details.                             *//*   To compile and use:                                                  *//*     See INSTALL file.                                                  */#include "gaim-encryption-config.h"#include <gdk/gdk.h>#include <gtk/gtkplug.h>#include <config.h>#include <debug.h>#include <gaim.h>#include <core.h>#include <gtkutils.h>#include <gtkplugin.h>#include <gtkconv.h>#include <gtkdialogs.h>#include <gtkprefs.h>#include <blist.h>#include <gtkblist.h>#include <signals.h>#include <util.h>#include <version.h>#include <internal.h>#include "cryptproto.h"#include "cryptutil.h"#include "state.h"#include "state_ui.h"#include "keys.h"#include "nonce.h"#include "prefs.h"#include "config_ui.h"#include "ge_blist.h"#include "encrypt.h"#include "nls.h"#include <time.h>#include <sys/types.h>#include <sys/time.h>#include <string.h>#include <unistd.h>#include <math.h>#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#ifdef HAVE_ALLOCA_H#include <alloca.h>#endif#ifdef _WIN32#include "win32dep.h"#endif/* from Gaim's internal.h, but it isn't critical that it is in sync: *//* #define BUF_LONG 4096 */G_MODULE_IMPORT GSList *gaim_accounts;G_MODULE_IMPORT guint im_options;#define ENCRYPT_PLUGIN_ID "gtk-obobo-gaim-encryption"/* Types */struct msg_node {   char who[64];   time_t time;   GaimConnection* gc;   struct msg_node* next;   unsigned char msg[1];};typedef struct msg_node msg_node;GaimPlugin *GE_plugin_handle;/* Outgoing message queue (waiting on a public key to encrypt) */static msg_node* first_out_msg = 0;static msg_node* last_out_msg = 0;/* Incoming message queue (waiting on a public key to verify) */static msg_node* first_inc_msg = 0;static msg_node* last_inc_msg = 0;static int GE_get_msg_size_limit(GaimAccount*);static void GE_send_key(GaimAccount *, const char *name, int, char*);static crypt_key * GE_get_key(GaimConnection *, const char *name);static int decrypt_msg(unsigned char **decrypted, unsigned char *msg,                       const unsigned char *name, crypt_key *, crypt_key *);static void GE_store_msg(const char *name, GaimConnection*, char *,                         msg_node**, msg_node**);static void got_encrypted_msg(GaimConnection *, const char *name, char **);static void reap_all_sent_messages(GaimConversation*);static void reap_old_sent_messages(GaimConversation*);/* Function pointers exported to Gaim */static gboolean GE_got_msg_cb(GaimAccount *, char **, char **, GaimConvImFlags flags, void *);static void GE_send_msg_cb(GaimAccount *, char *, char **, void *);static void GE_new_conv_cb(GaimConversation *, void *);static void GE_del_conv_cb(GaimConversation *, void *);static GHashTable *header_table, *footer_table, *notify_table;static gchar* header_default;/* #define CRYPT_HEADER "*** Encrypted with the Gaim-Encryption plugin <A HREF=\"" *//* #define CRYPT_FOOTER "\"></A>" *//* #define CRYPT_NOTIFY_HEADER "<A HREF=\"Gaim-Encryption Capable\"></A>" */// Jabber seems to turn our double quotes into single quotes at times, so define// the same headers, only with single quotes.  Lengths MUST be the same as above/* #define CRYPT_HEADER_MANGLED "*** Encrypted with the Gaim-Encryption plugin <A HREF='" *//* #define CRYPT_NOTIFY_HEADER_MANGLED "<A HREF='Gaim-Encryption Capable'></A>" *//* Send key to other side.  If msg_id is non-null, we include a request to re-send *//* a certain message, as well.                                                     */static void GE_send_key(GaimAccount *acct, const char *name, int asError, gchar *msg_id) {   /* load key somehow */   char *msg;   GString *key_str;   crypt_key *pub_key;   GaimConversation *conv;   int header_size, footer_size;   const gchar* header = g_hash_table_lookup(header_table, gaim_account_get_protocol_id(acct));   const gchar* footer = g_hash_table_lookup(footer_table, gaim_account_get_protocol_id(acct));   if (!header) header = header_default;   if (!footer) footer = "";   header_size = strlen(header);   footer_size = strlen(footer);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "send_key: %s\n", acct->username);      conv = gaim_find_conversation_with_account(name, acct);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "send_key: %s, %p, %s\n", name, conv, acct->username);   pub_key = GE_find_own_key_by_name(&GE_my_pub_ring, acct->username, acct, conv);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "send_key2: %s\n", acct->username);   if (!pub_key) return;   key_str = GE_make_sendable_key(pub_key, name);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "send_key3: %s\n", acct->username);   msg = alloca(header_size + footer_size + key_str->len + 100);   if (msg == 0) return;   if (asError) {      if (msg_id) {         sprintf(msg, "%s: ErrKey: Prot %s: Len %d:%sResend:%s:%s", header,                 pub_key->proto->name, (int)key_str->len, key_str->str, msg_id, footer);      } else {         sprintf(msg, "%s: ErrKey: Prot %s: Len %d:%s%s", header,                 pub_key->proto->name, (int)key_str->len, key_str->str, footer);      }   } else {      sprintf(msg, "%s: Key: Prot %s: Len %d:%s%s", header,              pub_key->proto->name, (int)key_str->len, key_str->str, footer);   }   if (strlen(msg) > GE_get_msg_size_limit(acct)) {      g_free(msg);      gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "Key too big to send in message\n");      conv = gaim_find_conversation_with_account(name, acct);      if (conv == NULL) {         conv = gaim_conversation_new(GAIM_CONV_IM, acct, name);      }      gaim_conversation_write(conv, 0,                              _("This account key is too large for this protocol. "                                "Unable to send."),                              GAIM_MESSAGE_SYSTEM, time((time_t)NULL));      return;   }   serv_send_im(acct->gc, name, msg, GAIM_CONNECTION_AUTO_RESP);   g_string_free(key_str, TRUE);}static crypt_key *GE_get_key(GaimConnection *gc, const char *name) {   crypt_key *bkey;   unsigned char* tmpmsg;   int header_size, footer_size;   const gchar* header = g_hash_table_lookup(header_table, gaim_account_get_protocol_id(gc->account));   const gchar* footer = g_hash_table_lookup(footer_table, gaim_account_get_protocol_id(gc->account));   if (!header) header = header_default;   if (!footer) footer = "";   header_size = strlen(header);   footer_size = strlen(footer);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "get_key: %s\n", name);   bkey = GE_find_key_by_name(GE_buddy_ring, name, gc->account);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "got key: %p\n", bkey);   if( bkey == 0 ) {      tmpmsg = alloca(header_size + footer_size +                      sizeof (": Send Key")); // sizeof() gets the trailing null too      sprintf(tmpmsg, "%s%s%s", header, ": Send Key", footer);      gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "Sending: %s\n", tmpmsg);      serv_send_im(gc, name, tmpmsg, GAIM_CONNECTION_AUTO_RESP);      return 0;   }   return bkey;}static int decrypt_msg(unsigned char **decrypted, unsigned char *msg, const unsigned char *name,                        crypt_key *priv_key, crypt_key *pub_key) {   int realstart = 0;	unsigned int length;   int retval;   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "decrypt_msg\n");   if ( (sscanf(msg, ": Len %u:%n", &length, &realstart) < 1) || (realstart == 0)) {      gaim_debug(GAIM_DEBUG_ERROR, "gaim-encryption", "Garbled length in decrypt\n");      return -1;   }   msg += realstart;   if (strlen(msg) < length) {      gaim_debug(GAIM_DEBUG_ERROR, "gaim-encryption", "Length doesn't match in decrypt\n");      return -1;   }   msg[length] = 0;      retval = GE_decrypt_signed(decrypted, msg, priv_key, pub_key, name);      return retval;}static void GE_store_msg(const char *who, GaimConnection *gc, char *msg, msg_node** first_node,               msg_node** last_node) {   msg_node* newnode;      newnode = g_malloc(sizeof(msg_node) + strlen(msg));      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "store_msg: %p : %s\n", newnode, who);   strncpy(newnode->who, gaim_normalize(gc->account, who), sizeof(newnode->who));   newnode->who[sizeof(newnode->who)-1] = 0;   newnode->gc = gc;   newnode->time = time((time_t)NULL);   strcpy(newnode->msg, msg);   newnode->next = 0;      if (*first_node == 0) {      *last_node = newnode;      *first_node = newnode;   } else {      (*last_node)->next = newnode;      *last_node = newnode;   }   for (newnode = *first_node; newnode != *last_node; newnode = newnode->next) {      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "   In store stack: %p\n",                 newnode, newnode->who);   }   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "   In store stack: %p\n",              *last_node, (*last_node)->who);}void GE_send_stored_msgs(GaimAccount* acct, const char* who) {   msg_node* node = first_out_msg;   msg_node* prev = 0;   char *tmp_msg;   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "send_stored_msgs\n");   while (node != 0) {      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption",                 "Looking for stored msg:%s:%s\n",node->who, who);      if ((strcmp(node->who, who) == 0) && (node->gc->account == acct)) {         tmp_msg = g_strdup(node->msg);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1区2区| 亚洲成a人片综合在线| 国产激情精品久久久第一区二区| 日韩你懂的在线播放| 黄色日韩网站视频| 国产午夜精品久久久久久久| 9人人澡人人爽人人精品| 亚洲人午夜精品天堂一二香蕉| 欧美性大战xxxxx久久久| 天天操天天综合网| 精品国产成人系列| 本田岬高潮一区二区三区| 亚洲女人的天堂| 在线播放一区二区三区| 国产精品一区二区三区四区 | 成人a级免费电影| 亚洲欧美日韩小说| 7777女厕盗摄久久久| 国产一二精品视频| 一区二区视频免费在线观看| 欧美肥妇bbw| 成人涩涩免费视频| 亚洲成人av在线电影| 久久尤物电影视频在线观看| 99久久久国产精品免费蜜臀| 免费视频最近日韩| 亚洲欧洲精品一区二区三区不卡| 欧美日韩精品欧美日韩精品一综合| 毛片不卡一区二区| 中文字幕日本乱码精品影院| 91精品麻豆日日躁夜夜躁| 国产91精品在线观看| 一区二区三区四区中文字幕| 精品日本一线二线三线不卡| 色综合久久99| 免费成人美女在线观看| 亚洲欧美另类综合偷拍| 日韩你懂的在线播放| 日本精品视频一区二区三区| 国产精品一二一区| 无码av中文一区二区三区桃花岛| 久久奇米777| 555www色欧美视频| 色综合久久中文综合久久97| 极品美女销魂一区二区三区 | 日韩精品一区二区三区在线观看 | 中文字幕在线不卡| 日韩免费一区二区三区在线播放| 99国产精品一区| 国产在线精品一区二区不卡了| 亚洲va中文字幕| 亚洲欧美综合网| 国产午夜精品久久久久久久| 日韩免费视频一区二区| 欧美日韩中字一区| 91首页免费视频| 国产乱人伦精品一区二区在线观看 | av午夜一区麻豆| 国产一区91精品张津瑜| 久久99国内精品| 无码av免费一区二区三区试看| 一区二区三区欧美激情| 中文字幕日韩一区| 中文字幕一区二区不卡| 中文字幕人成不卡一区| 亚洲国产精品黑人久久久| 久久久久国产精品麻豆| 精品99久久久久久| 欧美va天堂va视频va在线| 欧美一区二区三区四区久久| 欧美日韩三级在线| 欧美日韩视频在线第一区| 欧洲精品中文字幕| 欧美性受极品xxxx喷水| 欧美性色黄大片| 欧美日韩精品欧美日韩精品一综合| 在线欧美日韩精品| 欧美日免费三级在线| 欧美日韩久久一区| 欧美精品v日韩精品v韩国精品v| 欧美猛男男办公室激情| 欧美久久婷婷综合色| 欧美精品18+| 日韩精品一区二区三区四区视频| 欧美电影免费观看高清完整版在线| 日韩三级精品电影久久久| 欧美一个色资源| 久久一日本道色综合| 国产精品网站在线观看| 国产精品第四页| 一区二区三区毛片| 亚洲成人精品在线观看| 日韩高清在线一区| 久久激五月天综合精品| 国产精品1区2区3区| 91丝袜国产在线播放| 欧美丝袜丝交足nylons| 91精品国产91久久久久久最新毛片 | 高清shemale亚洲人妖| 不卡的电视剧免费网站有什么| 99久久久精品| 91精品一区二区三区在线观看| 精品国产一区二区国模嫣然| 国产女同性恋一区二区| 综合在线观看色| 日日嗨av一区二区三区四区| 国产一本一道久久香蕉| 91丝袜国产在线播放| 欧美精品一卡二卡| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99久久伊人网影院| 欧美日韩成人高清| 久久久亚洲国产美女国产盗摄| 亚洲同性gay激情无套| 日韩高清在线电影| 成人综合婷婷国产精品久久蜜臀| 欧美亚洲一区二区三区四区| 精品毛片乱码1区2区3区| 国产精品国产a| 日韩精品亚洲一区二区三区免费| 国产精品一区二区免费不卡| 欧美午夜理伦三级在线观看| 国产亚洲欧洲997久久综合| 亚洲精选一二三| 免费看欧美美女黄的网站| 99久久精品国产精品久久| 日韩精品一区二区三区四区视频| 亚洲欧洲精品一区二区精品久久久 | 日韩天堂在线观看| 亚洲黄色尤物视频| 国产高清不卡一区| 91精品一区二区三区久久久久久 | 成人av电影在线观看| 91精品国产色综合久久不卡蜜臀| 国产精品久久久久久久蜜臀| 秋霞成人午夜伦在线观看| 91国偷自产一区二区三区成为亚洲经典 | 久久老女人爱爱| 三级不卡在线观看| 欧美性感一区二区三区| 国产精品毛片高清在线完整版| 男女男精品网站| 在线免费观看不卡av| 国产精品欧美一级免费| 狠狠色狠狠色合久久伊人| 在线播放视频一区| 亚洲图片欧美综合| 色综合夜色一区| 国产精品人成在线观看免费| 国产一区二区三区四 | 精品国产精品网麻豆系列| 天堂在线一区二区| 欧美性受xxxx黑人xyx性爽| ㊣最新国产の精品bt伙计久久| 国产精品99久久久| 久久久久亚洲蜜桃| 久久99精品久久久久久 | 久久精品欧美一区二区三区不卡 | 久久精品国产亚洲一区二区三区| 欧美午夜不卡视频| 一区二区三区日韩精品视频| 91小视频免费看| 亚洲视频在线一区观看| 成人一级片在线观看| 国产午夜亚洲精品羞羞网站| 狠狠色狠狠色合久久伊人| 精品国产乱码久久久久久夜甘婷婷| 日韩1区2区日韩1区2区| 91麻豆精品国产91久久久久久久久 | 成人午夜大片免费观看| 精品福利在线导航| 美女国产一区二区三区| 日韩三级高清在线| 精品制服美女久久| 久久精品人人做人人综合| 成人精品小蝌蚪| 亚洲少妇屁股交4| 欧美日韩精品欧美日韩精品一 | 日韩一区二区精品| 看国产成人h片视频| 精品久久人人做人人爰| 国产一区二区精品久久| 国产亚洲一区二区三区在线观看| 懂色av噜噜一区二区三区av| 国产精品久久看| 欧美偷拍一区二区| 蜜乳av一区二区| 国产欧美日韩综合精品一区二区| 成人动漫一区二区三区| 一区二区三区色| 欧美一区二区视频观看视频| 久久99国内精品| 亚洲欧洲日韩一区二区三区| 欧美日韩亚洲综合在线| 精品一区二区三区在线观看| 国产精品久久午夜| 欧美高清你懂得| 国产在线播放一区三区四| 亚洲免费电影在线| 日韩午夜在线观看|