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

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

?? cryptif.c

?? Linux下的飛鴿傳書
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *  Copyright (C) 2006 Takeharu KATO * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <gnome.h>#include <glib.h>#include <gconf/gconf-client.h>#include "callbacks.h"#include "interface.h"#include "support.h"#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include "common.h"static char *hexstr = "0123456789abcdef";static int get_hexstr_index(const char ch,char *index){  char *found=NULL;  char ind = 0;  int search_ch = 0;  search_ch = tolower((int)ch);  found=strchr(hexstr,(int)search_ch);  if (found == NULL) {    err_out("Character %c(%c in original message) can not be found.\n",	    search_ch, ch);    return -ESRCH;  }  ind=(char)(found - hexstr);#if 0  dbg_out("%c is %d th\n", ch, ind);#endif  *index = ind;  return 0;}intprint_hex(const char *buff,size_t len){  int i;  dbg_out("decode-in-hex:");  for (i=0;i<len;++i) {    dbg_out("%x",buff[i]>>4);    dbg_out("%x",buff[i]&0xf);  }  dbg_out("\n");}static intparse_encoded_message(const unsigned char *message,		      unsigned long *this_cap_p,		      unsigned char **hex_skey_p,		      unsigned char **enc_message_p,		      unsigned char **hex_sign_p){  int rc;  char *sp,*ep;  unsigned long this_cap;  unsigned char *hex_skey=NULL;  unsigned char *enc_message=NULL;  unsigned char *hex_sign=NULL;  char *buff=NULL;  if ( (!message) || (!this_cap_p) || (!hex_skey_p) || (!enc_message_p) )    return -EINVAL;  rc=-ENOMEM;  buff=g_strdup(message);  if (!buff)    goto error_out;  /*   *鍵情報   */  sp=buff;  ep=strchr(sp,':');  if (!ep) {    rc=-EINVAL;    err_out("Error : No cap\n");    goto free_buff_out;  }  *ep='\0';  ++ep;  errno=0;  this_cap=strtoul(sp, (char **)NULL, 16);  dbg_out("Cap:0x%x\n",this_cap);  /*   *暗號鍵   */  sp=ep;  ep=strchr(sp,':');  if (!ep) {    rc=-EINVAL;    err_out("Error : crypt key\n");    goto free_buff_out;  }  *ep='\0';  ++ep;  rc=-ENOMEM;  hex_skey=g_strdup(sp);  if (!hex_skey)    goto free_buff_out;  dbg_out("hex secret key:%s\n",hex_skey);  /*   *暗號化本文   */  sp=ep;  ep=strchr(sp,':');  if (ep) { /* これで最後の可能性もある  */    *ep='\0';    ++ep;  }  rc=-ENOMEM;  enc_message=g_strdup(sp);  if (!enc_message)    goto free_hex_skey_out;  dbg_out("hex secret body:%s\n",enc_message);  /*   *署名   */  if (ep) {    sp=ep;    rc=-ENOMEM;    hex_sign=g_strdup(sp);    if (!hex_sign)      goto free_enc_message_out;    dbg_out("hex sign:%s\n",hex_sign);  }  *this_cap_p=this_cap;  *hex_skey_p=hex_skey;  *enc_message_p=enc_message;  *hex_sign_p=hex_sign;  if (buff)    g_free(buff);  return 0; free_enc_message_out:  if (enc_message)    g_free(enc_message); free_hex_skey_out:  if (hex_skey)    g_free(hex_skey); free_buff_out:  if (buff)    g_free(buff); error_out:  return rc;}static intstring_bin2hex(const u_int8_t *bindata, int len,unsigned char **ret_p){  int rc;  int i;  size_t buf_len;  unsigned char *buff=NULL;  unsigned char *buff_p=NULL;  if ( (!bindata) || (!ret_p) )    return -EINVAL;  buf_len=len*2+1;  rc=-ENOMEM;  buff=g_malloc(buf_len);  if (!buff)    goto error_out;  memset(buff,0,buf_len);    for (i=0,buff_p=buff; i < len; ++i)    {      *buff_p++ = hexstr[bindata[i] >> 4];      *buff_p++ = hexstr[bindata[i] & 0x0f];    }  *buff_p = 0;  rc=0;  *ret_p=buff; error_out:  return rc;}static intstring_hex2bin(const char *hexdata, int *len,unsigned char **ret_p){  int rc;  int i;  size_t data_len;  size_t buf_len;  unsigned char *buff=NULL;  unsigned char *buff_p=NULL;  char low,high;  data_len=strlen(hexdata);  buf_len=data_len/2;  rc=-ENOMEM;  buff=g_malloc(buf_len);  if (!buff)    goto error_out;  memset(buff,0,buf_len);  for (i=0,buff_p=buff; (((i+1) < data_len)&&(hexdata[i]) && (hexdata[i+1])); )    {      rc=get_hexstr_index(hexdata[i++],&high);      if (rc)	goto error_out;      rc=get_hexstr_index(hexdata[i++],&low);      if (rc)	goto error_out;      *buff_p++ = ( ( (high << 4) & 0xf0)|(low & 0xf));    }    *ret_p=buff;  *len=buf_len;  return 0; error_out:  if (buff)    g_free(buff);  return rc;}intipmsg_encrypt_message(const char *peer_addr,const char *message,unsigned char **ret_str,size_t *len){  int rc;  int retry;  unsigned long peer_cap;  unsigned long skey_type,akey_type;  char *session_key=NULL;  char *enc_skey=NULL;  size_t skey_len;  char *key_e=NULL,*key_n=NULL;  char *raw_enc_body=NULL;  unsigned char *enc_body=NULL;  size_t enc_len;  unsigned char *encrypted_message=NULL;  size_t total_len;  unsigned char *sign=NULL;  unsigned long sign_type;  if ( (!peer_addr) || (!message) || (!ret_str) || (!len) )    return -EINVAL;  /*  相手の暗號化能力を取得  */  retry=PUBKEY_MAX_RETRY;  do{    rc=userdb_wait_public_key(peer_addr,&peer_cap,&key_e,&key_n);    if ( (rc<0) && (rc != -EINTR) )      return rc; /* 明示的なエラー */    if (!rc) {      /* 見付けた */      dbg_out("Found: \n\taddr=%s\ncap=%x\tpubkey-e=%s\n\tpubkey-n=%s\n",	      peer_addr,	      peer_cap,	      key_e,	      key_n);      break;     }    --retry;  }while(retry);    if ( (rc) && (!retry) )    goto free_peer_key_out;  /*   *暗號化アルゴリズムを選択   */  rc=select_symmetric_key(peer_cap,			  &skey_type,			  hostinfo_refer_ipmsg_crypt_policy_is_speed());  if (rc)    goto free_peer_key_out;    /*   * セッションキー作成と本文の暗號化   */  rc=symcrypt_encrypt_message(skey_type,message,&session_key,			      &skey_len,&raw_enc_body,&enc_len);  if (rc)    goto free_peer_key_out;  rc=string_bin2hex((const u_int8_t *)raw_enc_body, enc_len,&enc_body);  if (rc)    goto free_session_key_out;      /*   * セッションキーを暗號化   */  rc=pcrypt_encrypt_message(peer_cap,key_e,key_n,session_key,skey_len,&enc_skey,&akey_type);  if (rc)    goto free_enc_body_out;  total_len=sizeof(unsigned long)*2+strlen(enc_skey)+strlen(enc_body)+3;  rc=-ENOMEM;  encrypted_message=g_malloc(total_len);  if (!encrypted_message)    goto free_encoded_session_key;  /*    *署名を選択する   */  if (peer_cap & SIGN_CAPS) {    if (peer_cap & IPMSG_SIGN_MD5)      sign_type=IPMSG_SIGN_MD5;    if (peer_cap & IPMSG_SIGN_SHA1)      sign_type=IPMSG_SIGN_SHA1;  }else{    sign_type=0; /*  署名を使用しない  */  }  snprintf(encrypted_message,total_len,"%x:%s:%s",(skey_type|akey_type|sign_type),enc_skey,enc_body);  dbg_out("Encrypted body:%s\n",encrypted_message);  /*  FIXME 署名を選ぶ処理を分離すること  */  if (peer_cap & SIGN_CAPS) {    rc=pcrypt_sign(akey_type,sign_type,encrypted_message, &sign);    if (rc)      goto free_sign_out;    /*  本文を再作成  */    g_free(encrypted_message);    total_len += (strlen(sign)+3);    encrypted_message=g_malloc(total_len);    if (!encrypted_message)      goto free_sign_out;    snprintf(encrypted_message,total_len,"%x:%s:%s:%s",	     (skey_type|akey_type|sign_type),	     enc_skey,	     enc_body,	     sign);    dbg_out("Signed body:%s\n",encrypted_message);  }  *ret_str=encrypted_message;  *len=strlen(encrypted_message);  rc=0; free_sign_out:  if (sign)    g_free(sign); free_enc_body_out:  if (enc_body)    g_free(enc_body); free_encoded_session_key:  if (enc_skey)    g_free(enc_skey); free_session_key_out:  if (session_key)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片一区二区三区| 国产精品国产自产拍在线| 亚洲一区精品在线| 欧美中文字幕一区二区三区亚洲| 亚洲丝袜美腿综合| 色94色欧美sute亚洲13| 亚洲第一精品在线| 日韩你懂的电影在线观看| 精品无人码麻豆乱码1区2区 | 青草av.久久免费一区| 日韩一区二区免费电影| 美日韩一级片在线观看| 久久久久国色av免费看影院| 99久久99久久综合| 亚洲超碰精品一区二区| xfplay精品久久| 99re视频精品| 日日嗨av一区二区三区四区| 久久久亚洲高清| 一本大道av伊人久久综合| 日韩高清国产一区在线| 国产欧美中文在线| 色婷婷国产精品| 久久se精品一区精品二区| 国产精品久久久久久久久免费桃花 | 美女在线一区二区| 中文字幕不卡一区| 欧美区在线观看| 国产大片一区二区| 五月婷婷色综合| 久久精品人人爽人人爽| 日本精品一区二区三区四区的功能| 日日夜夜一区二区| 国产精品久久久久aaaa| 日韩欧美一级二级| 色欧美88888久久久久久影院| 毛片av一区二区| 亚洲美女在线国产| 久久婷婷国产综合精品青草 | 亚洲综合色丁香婷婷六月图片| 精品捆绑美女sm三区| 91免费观看视频| 国产麻豆日韩欧美久久| 天天影视网天天综合色在线播放| 国产精品久久久久久久久免费丝袜| 69av一区二区三区| 色综合天天视频在线观看 | 国产精品系列在线| 欧美一区二区网站| 在线观看免费视频综合| 大胆欧美人体老妇| 激情久久久久久久久久久久久久久久| 一区二区三区久久| 国产精品福利电影一区二区三区四区| 日韩女优电影在线观看| 在线观看91精品国产麻豆| 日本韩国一区二区三区| 成人av电影在线播放| 国产激情一区二区三区四区| 麻豆免费精品视频| 视频一区中文字幕国产| 亚洲地区一二三色| 亚洲综合在线免费观看| 中文字幕亚洲一区二区av在线 | 制服丝袜激情欧洲亚洲| 欧美午夜精品一区二区三区| 99在线精品一区二区三区| 韩国中文字幕2020精品| 精品一区在线看| 看电视剧不卡顿的网站| 日韩av电影天堂| 爽好多水快深点欧美视频| 亚洲va国产天堂va久久en| 亚洲国产一区二区视频| 亚洲一本大道在线| 亚洲国产人成综合网站| 亚洲v中文字幕| 日韩电影一区二区三区四区| 青青国产91久久久久久| 日产精品久久久久久久性色| 青青草原综合久久大伊人精品优势| 天堂一区二区在线| 美国三级日本三级久久99| 美女在线视频一区| 韩国三级在线一区| 福利一区福利二区| 成人美女视频在线看| av在线不卡免费看| 色狠狠色狠狠综合| 欧美三电影在线| 日韩欧美国产精品| 国产午夜精品理论片a级大结局| 亚洲国产成人一区二区三区| ●精品国产综合乱码久久久久| 亚洲欧美色图小说| 午夜视频一区在线观看| 日本强好片久久久久久aaa| 狠狠色丁香久久婷婷综| 国产高清亚洲一区| 色婷婷综合久久久中文一区二区| 欧美网站大全在线观看| 日韩精品一区二区在线| 国产精品欧美久久久久无广告 | 中文字幕二三区不卡| 亚洲精品v日韩精品| 亚洲妇女屁股眼交7| 蜜桃久久av一区| 成人美女视频在线看| 欧美视频完全免费看| 精品国产1区2区3区| 日韩美女精品在线| 日精品一区二区三区| 成人一区二区三区在线观看| 欧洲另类一二三四区| 欧美va亚洲va香蕉在线| 亚洲欧美一区二区久久| 蜜桃久久av一区| 91网站视频在线观看| 日韩一级片在线观看| 国产精品电影一区二区| 日韩精品亚洲一区二区三区免费| 国产91精品入口| 欧美一区国产二区| 亚洲欧洲精品一区二区精品久久久 | 国产成人三级在线观看| 欧美中文一区二区三区| 久久久不卡影院| 亚洲不卡av一区二区三区| 丰满白嫩尤物一区二区| 91精品国产品国语在线不卡| 亚洲欧美偷拍另类a∨色屁股| 六月丁香婷婷久久| 欧美日韩在线直播| 中文字幕不卡一区| 韩国一区二区三区| 欧美精品粉嫩高潮一区二区| 中文字幕中文乱码欧美一区二区| 日本一区中文字幕| 日本精品免费观看高清观看| 日本一区免费视频| 精品无人区卡一卡二卡三乱码免费卡| 色94色欧美sute亚洲13| 国产精品入口麻豆原神| 国产美女主播视频一区| 91精品国产综合久久精品性色 | 亚洲一区二区三区精品在线| 成人伦理片在线| 久久蜜桃香蕉精品一区二区三区| 日本伊人精品一区二区三区观看方式| 91视频精品在这里| 国产精品久久久久久久第一福利 | 国产999精品久久久久久绿帽| 欧美久久久久中文字幕| 亚洲免费大片在线观看| www.亚洲激情.com| 国产精品麻豆久久久| 国产成人亚洲综合a∨猫咪| 337p粉嫩大胆噜噜噜噜噜91av | 国产在线观看一区二区| 日韩午夜精品视频| 日韩精品国产欧美| 欧美日韩国产综合一区二区| 亚洲自拍偷拍av| 欧美中文字幕一二三区视频| 一区二区高清在线| 色综合久久综合网欧美综合网| 国产精品传媒入口麻豆| 9人人澡人人爽人人精品| 国产精品国产自产拍在线| 成a人片国产精品| 亚洲视频免费观看| 在线视频国内自拍亚洲视频| 亚洲精品视频免费观看| 91福利在线导航| 丝袜亚洲另类丝袜在线| 欧美久久免费观看| 老司机午夜精品| 精品国产乱码久久久久久牛牛| 精品中文av资源站在线观看| 久久五月婷婷丁香社区| 成人高清视频在线观看| 中文字幕一区二区三区蜜月| 色欧美片视频在线观看| 性做久久久久久| 日韩欧美一级片| 国产成人亚洲综合a∨婷婷图片| 国产精品国产三级国产aⅴ中文| 91蜜桃婷婷狠狠久久综合9色| 亚洲永久精品大片| 日韩欧美精品在线| 粉嫩av一区二区三区| 亚洲综合色区另类av| 日韩三级免费观看| 成人精品国产免费网站| 亚洲综合在线免费观看| 精品久久久久久久久久久久久久久久久| 国产一区二区三区免费播放| 亚洲免费成人av| 日韩精品中文字幕在线一区| k8久久久一区二区三区|