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

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

?? 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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线成人av网站| bt欧美亚洲午夜电影天堂| 在线成人免费视频| 午夜影院久久久| 91麻豆精品国产91久久久使用方法 | 夜夜爽夜夜爽精品视频| 在线一区二区观看| 亚洲成人一区在线| 欧美一级夜夜爽| 看片网站欧美日韩| 久久久久久电影| 99久久久久久99| 亚洲国产另类精品专区| 日韩欧美一级二级| 成人免费视频一区| 亚洲伊人伊色伊影伊综合网| 欧美日韩国产影片| 久国产精品韩国三级视频| 国产欧美日韩精品在线| 日本精品裸体写真集在线观看| 午夜精品福利久久久| 精品卡一卡二卡三卡四在线| 成人av资源网站| 性做久久久久久免费观看欧美| 日韩欧美卡一卡二| av在线综合网| 亚洲第一二三四区| 久久精品网站免费观看| 欧美中文字幕一区二区三区亚洲| 免费成人av资源网| 中文字幕字幕中文在线中不卡视频| 在线影视一区二区三区| 久久99精品久久久久婷婷| 亚洲欧美日韩一区二区 | 美女视频黄 久久| 国产精品你懂的在线欣赏| 欧美日韩视频不卡| 懂色av一区二区三区免费看| 五月综合激情网| 国产精品系列在线| 4438x亚洲最大成人网| heyzo一本久久综合| 视频一区二区中文字幕| ...av二区三区久久精品| 日韩免费高清av| 在线这里只有精品| 成人av网址在线观看| 蜜臀91精品一区二区三区| 亚洲精品久久久蜜桃| 久久久久久久久99精品| 51精品视频一区二区三区| 色综合久久久久网| 国产精选一区二区三区| 日韩高清中文字幕一区| 亚洲美女免费视频| 久久精子c满五个校花| 欧美高清一级片在线| 色综合激情久久| 国产v日产∨综合v精品视频| 美女网站一区二区| 性做久久久久久久免费看| 亚洲欧美日韩国产中文在线| 中文字幕精品综合| 久久午夜色播影院免费高清| 日韩欧美另类在线| 欧美精品电影在线播放| 欧美视频一区二区三区四区| 91在线你懂得| 国产成人小视频| 国产麻豆精品一区二区| 久久99国产精品久久99果冻传媒| 日本不卡视频在线观看| 亚洲大片精品永久免费| 亚洲高清免费视频| 亚洲综合色区另类av| 一区二区三区日本| 亚洲色图丝袜美腿| 亚洲精品成人悠悠色影视| 亚洲免费av观看| 一区二区三区视频在线观看| 亚洲美女免费视频| 亚洲一区二区三区免费视频| 一区二区三区日韩在线观看| 亚洲影院在线观看| 亚洲午夜免费电影| 日韩精品一二三| 美国av一区二区| 国产精品99久久不卡二区| 成人激情视频网站| 不卡视频一二三| 91国偷自产一区二区开放时间 | 青娱乐精品视频| 久久国产剧场电影| 国产福利一区二区三区视频在线 | 欧美一区二区性放荡片| 日韩精品一区二区三区swag| 久久无码av三级| 欧美韩国日本一区| 亚洲精品欧美专区| 日韩精品三区四区| 久久99精品久久久久久| 国产电影一区在线| 99久久免费国产| 欧美日韩久久久一区| 欧美电影免费观看完整版| 欧美激情综合五月色丁香| 综合久久一区二区三区| 午夜精品在线看| 极品少妇xxxx偷拍精品少妇| 风间由美性色一区二区三区| 成人av资源网站| 国产91色综合久久免费分享| 亚洲婷婷国产精品电影人久久| 亚洲精选一二三| 日韩黄色小视频| 欧美高清视频不卡网| 国产欧美精品国产国产专区| 亚洲成人午夜电影| 国产精品主播直播| 欧美电影免费观看高清完整版在| 一区二区三区日本| 成人免费va视频| 久久免费国产精品| 久久电影国产免费久久电影| 在线观看91精品国产麻豆| 亚洲一区在线播放| 色婷婷狠狠综合| 亚洲欧洲日韩女同| 高清国产一区二区| 久久日韩精品一区二区五区| 日韩不卡一二三区| 欧美日韩电影在线| 午夜欧美在线一二页| 欧美丝袜丝交足nylons| 中文字幕一区二区三区不卡| 国产91精品一区二区麻豆网站| 久久久亚洲精品石原莉奈| 国模一区二区三区白浆| 亚洲精品一区二区精华| 国产真实乱对白精彩久久| 久久午夜羞羞影院免费观看| 国内精品国产成人国产三级粉色| 久久综合视频网| 国产91精品入口| 国产精品美女久久福利网站| 不卡的电视剧免费网站有什么| 国产精品乱人伦一区二区| 波多野结衣91| 亚洲精品免费在线观看| 在线观看91视频| 日韩影院免费视频| 久久综合色婷婷| va亚洲va日韩不卡在线观看| 亚洲精品美国一| 欧美精品久久天天躁| 精品一二三四区| 国产精品沙发午睡系列990531| 91视频一区二区| 天天综合色天天综合色h| 日韩视频免费观看高清完整版| 精久久久久久久久久久| 国产欧美日韩精品一区| 色香蕉久久蜜桃| 天天色 色综合| 久久亚洲一级片| 日本乱人伦一区| 老司机免费视频一区二区三区| 国产亚洲污的网站| 在线观看网站黄不卡| 久久国产精品99久久人人澡| 亚洲国产岛国毛片在线| 91在线一区二区| 午夜精品久久久久久久久久久| 欧美伊人久久大香线蕉综合69| 美女看a上一区| 久久精品一区二区三区四区| 成人黄页毛片网站| 日韩成人av影视| 久久婷婷成人综合色| 成人精品视频.| 久久午夜老司机| 99久久精品国产一区二区三区 | 亚洲一区二三区| 欧美精品日日鲁夜夜添| 麻豆91精品91久久久的内涵| 欧美男人的天堂一二区| 风间由美一区二区三区在线观看| 亚洲视频网在线直播| 欧美群妇大交群的观看方式| 激情综合色丁香一区二区| 国产精品乱子久久久久| 欧美无乱码久久久免费午夜一区| 日产精品久久久久久久性色| 最新中文字幕一区二区三区| 91碰在线视频| 美女视频黄频大全不卡视频在线播放| 中文字幕日韩一区| 69久久99精品久久久久婷婷 | 中文字幕在线不卡一区二区三区| 色综合久久久久综合体|