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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? encrypt.c

?? 一個windows上的加解密程式 提供方便的介面讓使用者操作
?? C
?? 第 1 頁 / 共 4 頁
字號:
      if (strncmp(priv_key->digest, recv_key_sum, KEY_DIGEST_LENGTH) != 0) {      /*  Someone sent us a message, but didn't use our correct public key */      GE_send_key(gc->account, name, 1, 0);      gaim_debug(GAIM_DEBUG_WARNING, "gaim-encryption",                  "Digests aren't same: {%*s} and {%*s}\n",                 KEY_DIGEST_LENGTH, priv_key->digest,                 KEY_DIGEST_LENGTH, recv_key_sum);      conv = gaim_find_conversation_with_account(name, gc->account);      if (conv != 0) {         gaim_conversation_write(conv, 0,                                 _("Received message encrypted with wrong key"),                                 GAIM_MESSAGE_SYSTEM, time((time_t)NULL));         gaim_conv_window_flash(gaim_conversation_get_window(conv));      } else {         gaim_debug(GAIM_DEBUG_WARNING, "gaim-encryption",                    "Received msg with wrong key, "                    "but can't write err msg to conv: %s\n", name);      }      g_free(*message);      *message = NULL;      return;   }      if (pub_key && (strncmp(pub_key->digest, send_key_sum, KEY_DIGEST_LENGTH) != 0)) {      /* We have a key for this guy, but the digest didn't match.  Store the message */      /* and ask for a new key */      GE_del_key_from_ring(GE_buddy_ring, name, gc->account);      pub_key = GE_get_key(gc, name); /* will be 0 now */   }      if (pub_key == 0) {      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "g_e_m: Storing message on Show stack\n");      GE_store_msg(name, gc, *message, &first_inc_msg, &last_inc_msg);      g_free(*message);      *message = NULL;      return;   }      memmove(*message, *message + msg_pos, strlen(*message + msg_pos) + 1);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "attempting decrypt on '%s'\n", *message);   if (decrypt_msg(&tmp_msg, *message, name, priv_key, pub_key) < 0) {           gaim_debug(GAIM_DEBUG_ERROR, "gaim-encryption", "Error in decrypt\n");      conv = gaim_find_conversation_with_account(name, gc->account);      if (conv != 0) {         gaim_conversation_write(conv, 0,                                 _("Error in decryption- asking for resend..."),                                 GAIM_MESSAGE_SYSTEM, time((time_t)NULL));         gaim_conv_window_flash(gaim_conversation_get_window(conv));      } else {         gaim_debug(GAIM_DEBUG_WARNING, "gaim-encryption",                    "Asking for resend, but can't write err msg to conv: %s\n", name);      }      GE_send_key(gc->account, name, 1, tmp_msg);      g_free(*message);      if (tmp_msg) g_free(tmp_msg);      *message = NULL;           return;   }      /* Successful Decryption */   /* Note- we're feeding gaim an arbitrarily formed message, which could      potentially have lots of nasty control characters and stuff.  But, that      has been tested, and at present, at least, Gaim won't barf on any      characters that we give it.      As an aside- Gaim does now use g_convert() to convert to UTF-8 from      other character streams.  If we wanted to be all i18n, we could      do the same, and even include the encoding type with the message.      We're not all that, at least not yet.   */         /* Why the extra space (and the extra buffered copy)?  Well, the  *    * gaim server.c code does this, and having the extra space seems *    * to prevent at least one possible type of crash.  Pretty scary. */   g_free(*message);   *message = g_malloc(MAX(strlen(tmp_msg) + 1, BUF_LONG));   strcpy(*message, tmp_msg);}/* Get account-specific message size limit*/static int GE_get_msg_size_limit(GaimAccount *acct) {   const char* protocol_id = gaim_account_get_protocol_id(acct);   if (strcmp(protocol_id, "prpl-yahoo") == 0) {      return 945;   } else if (strcmp(protocol_id, "prpl-msn") == 0) {      return 1500; /* This may be too small... somewhere in the 1500-1600 (+ html on front/back) */   } else {      /* Well, ok, this isn't too exciting.  Someday we can actually check  */      /* to see what the real limits are.  For now, 2500 works for everyone */      /* but Yahoo.                                                         */      return 2500;   }}      static void GE_send_msg_cb(GaimAccount *acct, char *who, char **message, void* data) {   unsigned char *out_msg, *crypt_msg = 0;   char *dupname;   int msgsize;   const char msg_format[] = "%s: Msg:S%.10s:R%.10s: Len %d:%s%s";   GaimConversation *conv;   crypt_key *our_key, *his_key;   GSList *cur_msg;   GQueue *sent_msg_queue;   GE_SentMessage *sent_msg_item;   int unencrypted_size_limit, msg_size_limit;   int baggage_size;   char baggage[BUF_LONG];   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));   const gchar* notify = g_hash_table_lookup(notify_table, gaim_account_get_protocol_id(acct));   if (!header) header = header_default;   if (!footer) footer = "";   msg_size_limit = GE_get_msg_size_limit(acct);   /* who: name that you are sending to */   /* gc->username: your name           */   gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "send_msg: %s\n", who);   /* Since we don't have a periodic callback, we do some housekeeping here */   gaim_conversation_foreach(reap_old_sent_messages);   /* Message might have been eaten by another plugin: */   if ((message == NULL) || (*message == NULL)) {      return;   }   conv = gaim_find_conversation_with_account(who, acct);   if (conv == NULL) {      conv = gaim_conversation_new(GAIM_CONV_IM, acct, who);   }   if( GE_get_tx_encryption(acct, who) == FALSE) {      if (notify && gaim_prefs_get_bool("/plugins/gtk/encrypt/broadcast_notify")          && !GE_has_been_notified(acct, who)) {         GE_set_notified(acct, who, TRUE);         if (GE_msg_starts_with_link(*message) == TRUE) {            /* This is a hack- AOL's client has a bug in the html parsing               so that adjacent links (like <a href="a"></a><a href="b"></a>)               get concatenated (into <a href="ab"></a>).  So we insert a               space if the first thing in the message is a link.            */            out_msg = g_strconcat(notify, " ", *message, 0);         } else {            out_msg = g_strconcat(notify, *message, 0);         }         g_free(*message);         *message = out_msg;      }      gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "Outgoing Msg::%s::\n", *message);      return;   }   gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "send_msg B: %s, %p, %p, %p\n",              who, &GE_my_priv_ring, acct, conv);   our_key = GE_find_own_key_by_name(&GE_my_priv_ring, acct->username, acct, conv);      if (!our_key) {      message[0] = 0; /* Nuke message so it doesn't look like it was sent.       */                      /* find_own_key (above) will have displayed error messages */		gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption", "leaving\n");      return;   }   dupname = g_strdup(gaim_normalize(acct, who));   his_key = GE_get_key(acct->gc, dupname);   if (his_key == 0) { /* Don't have key for this guy yet */      /* GE_get_key will have sent the key request, just let user know */      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "requesting key\n");      gaim_conversation_write(conv, 0, _("Requesting key..."),                              GAIM_MESSAGE_SYSTEM, time((time_t)NULL));      gaim_conv_window_flash(gaim_conversation_get_window(conv));      GE_store_msg(who, acct->gc, *message, &first_out_msg, &last_out_msg);   } else {  /* We have a key.  Encrypt and send. */      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "has key\n", dupname);      baggage_size = sprintf(baggage, msg_format, header, our_key->digest,                             his_key->digest, 10000, "", footer);            /* Warning:  message_split keeps static copies, so if our */      /*   caller uses it, we're hosed.  Looks like nobody else */      /*   uses it now, though.                                 */      unencrypted_size_limit =         GE_calc_unencrypted_size(our_key, his_key, msg_size_limit - baggage_size);      cur_msg = GE_message_split(*message, unencrypted_size_limit);      while (cur_msg) {         gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "im_write: %s\n", dupname);         gaim_conv_im_write(GAIM_CONV_IM(conv), NULL, cur_msg->data,                            GAIM_MESSAGE_SEND, time((time_t)NULL));         /* Add message to stash of sent messages: in case a key or nonce is wrong, we */         /* can then re-send the message when asked.                                   */         sent_msg_queue = g_hash_table_lookup(conv->data, "sent messages");         sent_msg_item = g_malloc(sizeof(GE_SentMessage));         sent_msg_item->time = time(0);         sent_msg_item->id = GE_make_key_id(his_key);   /* current nonce value */         sent_msg_item->msg = g_strdup(cur_msg->data);         g_queue_push_head(sent_msg_queue, sent_msg_item);         GE_encrypt_signed(&crypt_msg, cur_msg->data, our_key, his_key);         msgsize = strlen(crypt_msg);         out_msg = g_malloc(msgsize + baggage_size + 1);               sprintf(out_msg, msg_format, header,                 our_key->digest, his_key->digest, msgsize, crypt_msg,                 footer);         serv_send_im(acct->gc, who, out_msg, 0);         gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption",                    "send_im: %s: %d\n", who, strlen(out_msg));         gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption",                    "outgoing:%s:\n", out_msg);         g_free(out_msg);         g_free(crypt_msg);         cur_msg = cur_msg->next;         /* if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) {            gaim_window_hide(gaim_conversation_get_window(conv));            } */      }   }   message[0] = 0;   g_free(dupname);	return;}void GE_resend_msg(GaimAccount* acct, const char* name, gchar *msg_id) {   unsigned char *out_msg, *crypt_msg = 0, *msg = 0;   GaimConversation* conv = gaim_find_conversation_with_account(name, acct);   int msgsize;   const char msg_format[] = "%s: Msg:S%.10s:R%.10s: Len %d:%s%s";   crypt_key *our_key, *his_key;   GQueue *sent_msg_queue;   GE_SentMessage *sent_msg_item;   int baggage_size;   char baggage[BUF_LONG];   const gchar *header, *footer;   if (msg_id == 0) {      gaim_debug(GAIM_DEBUG_ERROR, "gaim-encryption", "Bad call to resend_msg: %p %p\n", conv, msg_id);      return;   }   if (conv == 0) {      conv = gaim_conversation_new(GAIM_CONV_IM, acct, name);   }   header = g_hash_table_lookup(header_table, gaim_account_get_protocol_id(conv->account));   footer = g_hash_table_lookup(footer_table, gaim_account_get_protocol_id(conv->account));   if (!header) header = header_default;   if (!footer) footer = "";   /*Sometimes callers don't know whether there's a msg to send... */   if (msg_id == 0 || conv == 0) return;   gaim_debug(GAIM_DEBUG_MISC, "gaim-encryption",              "resend_encrypted_msg: %s:%s\n", conv->name, msg_id);   our_key = GE_find_key_by_name(GE_my_priv_ring, conv->account->username, conv->account);   his_key = GE_find_key_by_name(GE_buddy_ring, name, conv->account);   if (his_key == 0) { /* Don't have key for this guy */      gaim_conversation_write(conv, 0,                              _("No key to resend message.  Message lost."),                              GAIM_MESSAGE_SYSTEM, time((time_t)NULL));      gaim_conv_window_flash(gaim_conversation_get_window(conv));   } else {  /* We have a key.  Encrypt and send. */      sent_msg_queue = g_hash_table_lookup(conv->data, "sent messages");      /* Root through the queue looking for the right message.  Any that are older than this */      /* one we will throw out, since they would have already been asked for.                */      while (!g_queue_is_empty(sent_msg_queue)) {         sent_msg_item = g_queue_pop_tail(sent_msg_queue);         gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "Examining Message: %s\n",                    sent_msg_item->id);                  if (strcmp(sent_msg_item->id, msg_id) == 0) { /* This is the one to resend */            msg = sent_msg_item->msg;            g_free(sent_msg_item->id);            g_free(sent_msg_item);            break; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文成人av在线| 欧美久久久一区| 亚洲特级片在线| 日韩亚洲欧美在线观看| 成人黄色免费短视频| 青青草精品视频| 亚洲曰韩产成在线| 中文字幕精品在线不卡| 在线综合+亚洲+欧美中文字幕| 成人av午夜电影| av午夜一区麻豆| 国产中文字幕精品| 视频一区欧美精品| 一区二区三区日韩欧美| 国产精品美女久久久久久| 国产精品黄色在线观看| 久久久不卡网国产精品一区| 欧美一区二区三区视频免费 | 97se亚洲国产综合自在线观| 久久激情五月婷婷| 午夜精品久久久久久久99水蜜桃| 综合色中文字幕| 亚洲激情自拍视频| 亚洲色图视频免费播放| 一区二区三区四区在线免费观看| 亚洲国产精品视频| 亚洲精选视频在线| 婷婷综合另类小说色区| 激情综合色播五月| 日韩va欧美va亚洲va久久| 亚洲第一福利一区| 亚洲一二三四久久| 免费观看在线色综合| 国产精品一区在线| 国产成人一区二区精品非洲| 韩国女主播成人在线观看| 成人精品国产一区二区4080| 欧美这里有精品| 欧美羞羞免费网站| 欧美影院午夜播放| 久久综合一区二区| 国产视频在线观看一区二区三区| 久久伊99综合婷婷久久伊| 亚洲视频网在线直播| 日韩中文字幕一区二区三区| 国产精品99久久久久久久女警| av一区二区三区| 欧美一区国产二区| 最新国产精品久久精品| 最新国产成人在线观看| 免费高清在线视频一区·| av在线播放一区二区三区| 91麻豆精品国产91久久久更新时间 | 成人av网址在线| 在线综合视频播放| 日韩一区欧美一区| 久久91精品国产91久久小草| 99久久国产免费看| 日韩一区二区在线观看视频播放| 欧美韩国日本综合| 免费的成人av| 91九色最新地址| 欧美精品黑人性xxxx| 国产精品电影院| 久久精品国产一区二区三| 91亚洲国产成人精品一区二三| 色综合天天综合网天天看片| 69堂亚洲精品首页| 亚洲欧美日韩久久精品| 午夜精品久久久久久久久久| 成人av网站在线| 久久久久久9999| 日本v片在线高清不卡在线观看| 97久久超碰国产精品电影| 精品久久久久久最新网址| 国产精品视频yy9299一区| 蜜桃视频在线一区| 粉嫩在线一区二区三区视频| 日本高清视频一区二区| 久久久综合视频| 久久国产尿小便嘘嘘尿| 欧美视频日韩视频| 一区二区三区四区不卡在线 | 欧美r级电影在线观看| 亚洲国产日日夜夜| 91精品福利视频| 国产精品二区一区二区aⅴ污介绍| 国产一区三区三区| 色综合一区二区三区| 亚洲国产成人一区二区三区| 激情五月婷婷综合| 欧美成人video| 轻轻草成人在线| 日韩欧美一级二级| 亚洲精品成人少妇| 99精品视频一区| 亚洲欧美自拍偷拍色图| 成人美女视频在线看| 欧美一级一区二区| 肉色丝袜一区二区| 欧美军同video69gay| 视频一区国产视频| 91精品国产欧美一区二区| 首页国产丝袜综合| 欧美日韩mp4| 亚洲婷婷国产精品电影人久久| 国产丶欧美丶日本不卡视频| 久久九九久久九九| 国产69精品久久久久毛片| 亚洲国产精品成人综合色在线婷婷 | 《视频一区视频二区| 91影院在线观看| 亚洲日本一区二区| 欧美综合在线视频| 日本怡春院一区二区| 欧美一区二区二区| 国产真实乱偷精品视频免| 久久久91精品国产一区二区三区| 国产成人午夜视频| 亚洲欧洲性图库| 欧美亚洲国产怡红院影院| 天天综合日日夜夜精品| 欧美一区二区免费视频| 国产永久精品大片wwwapp| 日韩一区在线免费观看| 欧美日韩中文一区| 伊人婷婷欧美激情| 欧美美女网站色| 国产在线一区观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91浏览器在线视频| 日韩电影免费一区| 亚洲国产岛国毛片在线| 欧美中文字幕一区二区三区 | 欧美日韩精品欧美日韩精品一| 丝袜美腿亚洲综合| 久久精品人人做| 日本韩国一区二区| 韩国v欧美v亚洲v日本v| 中文字幕综合网| 91精品国产入口| aaa欧美日韩| 日韩不卡在线观看日韩不卡视频| 国产三级精品三级在线专区| 国内成人免费视频| 自拍偷拍亚洲欧美日韩| 欧美丰满一区二区免费视频| 国产精品一区在线观看你懂的| 亚洲激情av在线| 日韩欧美视频一区| 99国产精品久| 久久99国产精品麻豆| 亚洲码国产岛国毛片在线| 正在播放一区二区| 93久久精品日日躁夜夜躁欧美| 日韩专区欧美专区| 亚洲欧美在线视频| 精品电影一区二区三区| 国产成人免费xxxxxxxx| 亚洲妇熟xx妇色黄| 国产亚洲精品bt天堂精选| 欧美日韩一区三区四区| 丰满岳乱妇一区二区三区| 三级成人在线视频| 亚洲色图色小说| 久久久三级国产网站| 欧美日韩激情在线| av在线综合网| 国产综合一区二区| 首页综合国产亚洲丝袜| 亚洲男人的天堂一区二区| 久久欧美中文字幕| 日韩一区二区三区电影在线观看 | 日本一区二区综合亚洲| 8v天堂国产在线一区二区| 波多野结衣中文一区| 国产精品一区在线观看乱码| 蜜臀国产一区二区三区在线播放| 一区二区三区国产精品| 欧美国产成人在线| 2024国产精品视频| 777奇米成人网| 欧美色电影在线| 91丨九色丨蝌蚪丨老版| 粉嫩aⅴ一区二区三区四区五区| 奇米色一区二区| 日韩电影免费在线看| 亚洲v日本v欧美v久久精品| 亚洲免费在线看| 亚洲人精品一区| 日韩伦理电影网| 亚洲欧洲精品天堂一级| 国产日韩欧美精品电影三级在线| 精品欧美一区二区三区精品久久 | 久久久久久久久一| 精品久久久影院| 精品国产乱码久久久久久蜜臀 | 久久久久久一二三区| 欧美mv日韩mv国产网站app| 日韩视频一区二区三区在线播放 |