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

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

?? ssl_client.c

?? cas 客戶端文件
?? C
字號:
/*  * OpenSSL-based CAS ticket validator by Shawn Bayern, based on  * OpenSSL demonstration code. */#include <stdio.h>#include <memory.h>#include <errno.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <openssl/crypto.h>#include <openssl/x509.h>#include <openssl/pem.h>#include <openssl/ssl.h>#include <openssl/err.h>#include "cas.h"#define END(x) { ret = (x); goto end; }#define FAIL END(0)#define FAIL_BAD_CERT END(BAD_CERT)#define SUCCEED END(1)/* * TODO: This really ought to be configurable at runtime.  At least you * can declare multiple CA certificates easily (at compile time) through * this array. */static char *trusted_ca[] = {    "/usr/local/etc/verisignserverca.pem",    NULL};int CAS_validate(char *ticket, char *service, char *outbuf, int outbuflen);static X509 *get_cert_from_file(char *filename);static int valid_cert(X509 *cert, char *hostname);/** Returns status of certification:  0 for invalid, 1 for valid. */static int valid_cert(X509 *cert, char *hostname){  int i;  char buf[4096];  X509_STORE *store = X509_STORE_new();  X509_STORE_CTX *ctx = X509_STORE_CTX_new();  for (i = 0; trusted_ca[i] != NULL; i++) {    X509 *cacert = get_cert_from_file(trusted_ca[i]);    if (cacert)      X509_STORE_add_cert(store, cacert);  }  X509_STORE_CTX_init(ctx, store, cert, sk_X509_new_null());  if (X509_verify_cert(ctx) == 0)    return 0;  X509_NAME_get_text_by_NID(X509_get_subject_name(cert), NID_commonName,    buf, sizeof(buf) - 1);  // anal-retentive:  make sure the hostname isn't as long as the  // buffer, since we don't want to match only because of truncation  if (strlen(hostname) >= sizeof(buf) - 1)    return 0;  return (!strcmp(buf, hostname));}/** Returns status of ticket by filling 'buf' with a NetID if the ticket *  is valid and buf is large enough and returning 1.  If not, 0 is *  returned. */int CAS_validate(char *ticket, char *service, char *outbuf, int outbuflen){  int err, b, ret, total;  int s = 0;  struct sockaddr_in sa;  struct hostent h, *hp2;  SSL_CTX *ctx = NULL;  SSL *ssl = NULL;  X509 *s_cert = NULL;  char buf[4096];  SSL_METHOD *method;  char *full_request, *str, *tmp;  SSLeay_add_ssl_algorithms();  method = SSLv23_client_method();  SSL_load_error_strings();  ctx = SSL_CTX_new(method);  if (!ctx)    FAIL;  if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1)    FAIL;  memset(&sa, 0, sizeof(sa));  sa.sin_family = AF_INET;  hp2 = gethostbyname(CAS_HOST);  memcpy(&h, hp2, sizeof(h));//  gethostbyname_r(CAS_HOST, &h, buf, sizeof(buf), &hp2, &b);  memcpy(&(sa.sin_addr.s_addr), h.h_addr_list[0], sizeof(long));  sa.sin_port = htons(CAS_PORT);  if (connect(s, (struct sockaddr*) &sa, sizeof(sa)) == -1)    FAIL;  if (!(ssl = SSL_new(ctx)))    FAIL;  SSL_set_fd(ssl, s);  if (!SSL_connect(ssl))    FAIL;  if (!(s_cert = SSL_get_peer_certificate(ssl)))    FAIL_BAD_CERT;  if (!valid_cert(s_cert, CAS_HOST))    FAIL_BAD_CERT;  X509_free(s_cert);  full_request = malloc(strlen(CAS_METHOD) + strlen(" ")    + strlen(CAS_VALIDATE) + strlen("?ticket=") + strlen(ticket) +     + strlen("&service=") + strlen(service) + strlen(" ")     + strlen(CAS_PROT) + strlen("\n\n") + 1);  sprintf(full_request, "%s %s?ticket=%s&service=%s %s\n\n",    CAS_METHOD, CAS_VALIDATE, ticket, service, CAS_PROT);  if (!SSL_write(ssl, full_request, strlen(full_request)))    FAIL;  total = 0;  do {    b = SSL_read(ssl, buf + total, (sizeof(buf) - 1) - total);    total += b;  } while (b > 0);  buf[total] = '\0';  if (b != 0 || total >= sizeof(buf) - 1)    FAIL;		// unexpected read error or response too large  /*   * The following segment of code is spelled out in excruciating detail   * since it's worth the extra care.   */  str = strstr(buf, "\r\n\r\n");  // find the end of the header  if (!str)    FAIL;			// no header  str += 4;			// safe because we just found "\r\n\r\n"  if (strncmp(str, "yes", 3))    FAIL;			// no affirmative response  str = strchr(str, '\n');	// find the end of the current line  if (!str) {    str = strchr(str, '\r');    // possibly ended in CR (ok by RFC-2616)    if (!str)      FAIL;			// unexpectedly short body  }  str++;			// safe because we just found "\n" or "\r"    // now, we've got the NetID and a bunch of crap after it.  Find the next  // '[\r]\n' and end the string there  {    char *str2 = strchr(str, '\r');    if (!str2) {      str2 = strchr(str, '\n');	if (!str2)	  FAIL;			// unexpectedly short body    }    *str2 = '\0';		// remove [\r]\n  }  /*   * without enough space, fail entirely, since a partial NetID could   * be dangerous   */  if (outbuflen < strlen(str) + 1)    FAIL;  strcpy(outbuf, str);  SUCCEED;   /* cleanup and return */end:  if (ssl)    SSL_shutdown(ssl);  if (s > 0)    close(s);  if (ssl)    SSL_free(ssl);  if (ctx)    SSL_CTX_free(ctx);  return ret;}static X509 *get_cert_from_file(char *filename) {    FILE *f = fopen(filename, "r");    if (f) {	X509 *c = PEM_read_X509(f, NULL, NULL, NULL);	fclose(f);	return c;    } else {	return NULL;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p粉嫩大胆色噜噜噜噜亚洲| 欧美性猛交一区二区三区精品| 欧美一区二区美女| 激情av综合网| 亚洲伊人伊色伊影伊综合网| 欧美一区二区精品| 日韩午夜av电影| 91麻豆福利精品推荐| 玖玖九九国产精品| 亚洲综合免费观看高清完整版在线 | 欧美三级电影在线看| 亚洲电影中文字幕在线观看| 精品欧美久久久| 欧美午夜电影网| 欧美精品三级日韩久久| 激情综合网天天干| 午夜精品一区二区三区免费视频| 中国色在线观看另类| 日韩一区二区三免费高清| 日韩精品中文字幕在线一区| 欧美三级中文字| 欧美一区二区视频观看视频| 欧美xxxx老人做受| 国产精品午夜久久| 亚洲一区av在线| 美女脱光内衣内裤视频久久影院| 亚洲一区二区三区视频在线| 美女脱光内衣内裤视频久久影院| 国产黄色成人av| 国产一区二区主播在线| 日韩二区三区在线观看| 一区二区三区色| 亚洲伦理在线精品| 一区二区三区在线观看视频| 日本在线不卡一区| 99在线视频精品| 91在线高清观看| 日韩免费视频线观看| 国产欧美日韩视频一区二区| 国产日韩在线不卡| 亚洲成人av资源| 天堂资源在线中文精品| 最好看的中文字幕久久| 亚洲视频综合在线| 精品一区二区三区影院在线午夜| av不卡免费电影| 欧美本精品男人aⅴ天堂| 亚洲精选在线视频| 国产麻豆91精品| 91精品欧美一区二区三区综合在| 日韩一区二区三区视频在线| 亚洲免费av高清| 午夜久久久久久| 99在线精品一区二区三区| 日韩精品中午字幕| 亚洲成人午夜影院| 91香蕉视频在线| 国产日本亚洲高清| 精品一区二区国语对白| 欧美唯美清纯偷拍| 亚洲精品久久久蜜桃| 国产91丝袜在线观看| 日韩一级在线观看| 亚洲欧美另类图片小说| 国产精品一级二级三级| 丰满放荡岳乱妇91ww| 欧美变态tickling挠脚心| 免费视频一区二区| 成人黄色小视频| 欧美日本在线看| 久久精品人人做人人综合| 亚洲欧美一区二区三区久本道91| 国产精品99久久久久久久女警 | 中文字幕制服丝袜一区二区三区| 国产精品久久一级| 高清beeg欧美| 国产欧美日韩在线| 成人白浆超碰人人人人| 国产精品女上位| a亚洲天堂av| 亚洲精品欧美激情| 欧美亚洲一区二区在线观看| 一区二区三区日韩在线观看| 欧美亚洲国产bt| 日韩国产一二三区| 日韩精品自拍偷拍| 国产成人在线影院| 中文字幕一区av| 经典三级视频一区| 国产亚洲一区二区在线观看| 成人免费视频app| 欧美哺乳videos| 国产精品一卡二卡在线观看| 中文字幕乱码一区二区免费| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美电影在线| 盗摄精品av一区二区三区| 亚洲视频在线一区观看| 欧美另类videos死尸| 久久疯狂做爰流白浆xx| 国产精品免费视频网站| 日本高清无吗v一区| 亚洲国产高清不卡| 欧美最新大片在线看| 亚洲日本在线观看| 7777女厕盗摄久久久| 国产精品一区二区在线播放| 亚洲日韩欧美一区二区在线| 欧美丰满一区二区免费视频| 国产成人自拍网| 亚洲国产美女搞黄色| 久久九九影视网| 欧美日韩中文一区| 国产精品99久久久久| 亚洲国产色一区| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩三级视频| 成人午夜视频网站| 青青草97国产精品免费观看无弹窗版| 国产欧美精品日韩区二区麻豆天美| 91九色02白丝porn| 粉嫩aⅴ一区二区三区四区五区 | 美女视频黄 久久| 一区视频在线播放| 精品88久久久久88久久久| 精品制服美女久久| 亚洲一二三四在线观看| 欧美激情中文不卡| 日韩午夜精品视频| 欧美日韩精品系列| 99久久久无码国产精品| 亚洲精品水蜜桃| 国产视频一区二区在线观看| 4438x成人网最大色成网站| 91亚洲大成网污www| 国产成人精品一区二区三区四区| 视频一区二区三区入口| 一级日本不卡的影视| 国产精品狼人久久影院观看方式| 久久综合一区二区| 日韩欧美一级片| 91精品国产入口| 欧美精品久久天天躁| 欧美视频中文一区二区三区在线观看| 国产精品1区2区3区在线观看| 另类中文字幕网| 青青草91视频| 日韩av一区二区三区| 男女男精品视频网| 青青草国产成人99久久| 日本伊人色综合网| 蜜臀av一区二区在线免费观看| 午夜精品123| 日韩成人免费电影| 首页国产欧美日韩丝袜| 人人超碰91尤物精品国产| 爽好多水快深点欧美视频| 秋霞午夜鲁丝一区二区老狼| 午夜欧美视频在线观看| 日韩电影免费在线看| 麻豆精品在线视频| 国产另类ts人妖一区二区| 国产福利一区二区三区视频| 国产馆精品极品| 99r国产精品| 在线观看亚洲a| 91精品久久久久久久99蜜桃| 日韩视频一区二区三区| 久久久精品国产免大香伊| 欧美日韩高清一区二区三区| 在线成人av影院| 欧美成人午夜电影| 国产清纯白嫩初高生在线观看91| 中文字幕第一区综合| 亚洲欧美激情插| 日本成人在线电影网| 韩国av一区二区三区| 99麻豆久久久国产精品免费优播| 在线看不卡av| 日韩免费一区二区三区在线播放| 欧美极品xxx| 亚洲午夜在线观看视频在线| 七七婷婷婷婷精品国产| 成人综合激情网| 91精品国产综合久久精品图片 | 91精品午夜视频| 久久久国产午夜精品| 一区二区三区美女| 精品一区二区三区视频| 色综合久久久久综合体| jizz一区二区| 欧美一区在线视频| 国产精品久久久久影院| 日日夜夜免费精品视频| 国产成人av资源| 欧美肥妇free| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 天堂蜜桃91精品| 99国产麻豆精品| 久久无码av三级|