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

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

?? simpleca.c

?? simpleca 比起正式的CA來說功能簡單
?? C
?? 第 1 頁 / 共 4 頁
字號:
void print_semicolon_list(struct stringlist *lst){  printf("%s\n", semicolon_list(lst));}/* Given a certificate, read key usage information from the certificate   and print it as a list of usages separated by semicolons. */char *dump_usage(CRYPT_CERTIFICATE cert){  struct stringlist *lst;  int i, res, val;  lst = NULL;  res = cryptGetAttribute(cert, CRYPT_CERTINFO_KEYUSAGE, &val);  if(res) die("Could not retrieve key usage information.");  for(i=0; i<NUM_USAGE; i++) {    if(val & usagetable[i].code)      stringlist_append(&lst, usagetable[i].txt);  }  return(semicolon_list(lst));}/* Given a certificate, read key usage information from the certificate   and print it as a list of usages separated by semicolons. */char *dump_ext_usage(CRYPT_CERTIFICATE cert){  struct stringlist *lst;  int i, res, val;  lst = NULL;  for(i=0; i<NUM_EXTUSAGE; i++) {    res = cryptGetAttribute(cert, extusagetable[i].code, &val);    if(!res)      stringlist_append(&lst, extusagetable[i].txt);  }  return(semicolon_list(lst));}/* Given a number of seconds since 1970, print it as a nice   local time (human readable). */void print_time(long t) {  struct tm *time;  time = localtime(&t);  printf("%s", asctime(time));}/* Given data in global variables, try to interpret   and show the user the contents of a file.  The file   may be a key, a certificate, a certificate request,   or a CRL. */void view(void){  int res;  int isakeyset, length, selfsigned, ca;  char buffer[MAXBUF];  char *tmp;  CRYPT_KEYSET keyset;  CRYPT_CONTEXT pubkey;  CRYPT_CERTIFICATE cert;  int type, version;  isakeyset=FALSE;  /* Try to open it as a keyset */  res = cryptKeysetOpen(&keyset, 			CRYPT_UNUSED, 			CRYPT_KEYSET_FILE, 			inputfile, 			CRYPT_KEYOPT_READONLY);  if(!res) isakeyset=TRUE;  if(isakeyset) {    printf("KEY\n");    res = cryptGetPublicKey(keyset, &pubkey, CRYPT_KEYID_NAME, "private");    if(res) die("Could not retrieve public key from keyset.");    res = cryptGetAttributeString(pubkey, CRYPT_CTXINFO_NAME_ALGO, buffer, &length);    if(res) die("Could not get algorithm name.");    buffer[length]=0;    printf("Algorithm = %s\n", buffer);    res = cryptGetAttribute(pubkey, CRYPT_CTXINFO_KEYSIZE, &length);    if(res) die("Could not get key size.");    printf("Key size = %d\n", length*8);    res = cryptGetAttribute(pubkey, CRYPT_CERTINFO_CA, &length);    if(!res && length>0)      printf("CA = true\n");    else      printf("CA = false\n");    res = cryptKeysetClose(keyset);    if(res) die("Could not close keyset.");    res = cryptDestroyContext(pubkey);    if(res) die("Could not free public key.");    return;  } else {    /* It is not a keyset. */    /* Now try to import it as some sort of certificate. */    cert = import_cert(inputfile);    /* Determine which of certificate/request/crl it is. */    res = cryptGetAttribute(cert, CRYPT_CERTINFO_CERTTYPE, &type);    if(res) die("Could not determine certificate type.");    switch(type) {    case CRYPT_CERTTYPE_CERTREQUEST: printf("CERTIFICATE REQUEST\n"); break;    case CRYPT_CERTTYPE_CERTIFICATE: printf("CERTIFICATE\n"); break;    case CRYPT_CERTTYPE_CRL: printf("CERTIFICATE REVOCATION LIST\n"); break;    }    /* Depending on the type, extract and display different information. */    if(type==CRYPT_CERTTYPE_CERTIFICATE) {      res = cryptGetAttribute(cert, CRYPT_CERTINFO_VERSION, &version);      if(res) die("Could not determine certificate version.");      printf("Version = X509v%d\n", version);      res = cryptGetAttributeString(cert, CRYPT_CERTINFO_SERIALNUMBER, buffer, &length);      if(res) die("Could not retrieve certificate serial number.");      printf("Serial number = %s\n", sn_to_string((unsigned char *)buffer));    }    if(type==CRYPT_CERTTYPE_CERTIFICATE || type==CRYPT_CERTTYPE_CERTREQUEST) {      res=cryptGetAttributeString(cert, CRYPT_CTXINFO_NAME_ALGO, buffer, &length);      if(res) die("Could not get algorithm name.");      buffer[length]=0;      printf("Algorithm = %s\n", buffer);      res=cryptGetAttribute(cert, CRYPT_CTXINFO_KEYSIZE, &length);      if(res) die("Could not get key size.");      printf("Key size (bits) = %d\n", length*8);    }    if(type==CRYPT_CERTTYPE_CERTIFICATE || type==CRYPT_CERTTYPE_CERTREQUEST) {      strcpy(buffer, get_dn(cert));      printf("Subject = %s\n", buffer);            res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_EXTENSION, CRYPT_CERTINFO_SUBJECTALTNAME);      if(!res) {	strcpy(buffer, get_gn(cert));	if(strcmp(buffer, ""))	  printf("Subject alternate name = %s\n", buffer);      }    }    if(type==CRYPT_CERTTYPE_CERTIFICATE) {      res=cryptSetAttribute(cert, CRYPT_CERTINFO_ISSUERNAME, CRYPT_UNUSED);      if(res) die("Could not switch to certificate issuer.");      strcpy(buffer, get_dn(cert));      printf("Issuer = %s\n", buffer);      res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_EXTENSION, CRYPT_CERTINFO_ISSUERALTNAME);      if(!res) {	strcpy(buffer, get_gn(cert));	if(strcmp(buffer, ""))	  printf("Issuer alternate name = %s\n", buffer);      }      /* THIS CODE DOES NOT WORK, it just gets the subject algorithm      res=cryptGetAttributeString(cert, CRYPT_CTXINFO_NAME_ALGO, buffer, &length);      if(res) die("Could not get algorithm name.");      buffer[length]=0;      printf("Signature algorithm = %s\n", buffer);      */      res=cryptGetAttributeString(cert, CRYPT_CERTINFO_VALIDFROM, buffer, &length);      if(res) die("Could not get valid-from date in certificate.");      printf("Start-date = ");      print_time(*((int *)buffer));            res=cryptGetAttributeString(cert, CRYPT_CERTINFO_VALIDTO, buffer, &length);      if(res) die("Could not get valid-to date in certificate.");      printf("End-date = ");      print_time(*((int *)buffer));          }    if(type==CRYPT_CERTTYPE_CRL) {      res=cryptGetAttributeString(cert, CRYPT_CERTINFO_THISUPDATE, buffer, &length);      if(res) die("Could not get CRL-this-update date in certificate.");      printf("CRL-this-update = ");      print_time(*((int *)buffer));            res=cryptGetAttributeString(cert, CRYPT_CERTINFO_NEXTUPDATE, buffer, &length);      if(res) die("Could not get CRL-next-update date in certificate.");      printf("CRL-next-update = ");      print_time(*((int *)buffer));    }    selfsigned=FALSE;    if(type==CRYPT_CERTTYPE_CERTIFICATE || type==CRYPT_CERTTYPE_CERTREQUEST) {      res=cryptGetAttribute(cert, CRYPT_CERTINFO_SELFSIGNED, &selfsigned);      if(res) selfsigned=0;      if(selfsigned) {	printf("Self-signed = true\n");	res=cryptCheckCert(cert, CRYPT_UNUSED);	if(res)	  printf("Valid-signature = false\n");	else	  printf("Valid-signature = true\n");      }      else	printf("Self-signed = false\n");    }    ca=FALSE;    if(type==CRYPT_CERTTYPE_CERTIFICATE) {      res=cryptGetAttribute(cert, CRYPT_CERTINFO_CA, &ca);      if(res) ca=FALSE;      if(ca)	printf("CA certificate = true\n");      else	printf("CA certificate = false\n");      tmp = dump_usage(cert);      if(strlen(tmp)>0)	printf("Key usage = %s\n", tmp);      tmp = dump_ext_usage(cert);      if(strlen(tmp)>0)	printf("Extended key usage = %s\n", tmp);      if(ca) {	/* Show CRLDP if present */	res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_FIELD, CRYPT_CERTINFO_CRLDIST_FULLNAME);	if(!res) {	  res=cryptGetAttributeString(cert, CRYPT_CERTINFO_UNIFORMRESOURCEIDENTIFIER, buffer, &length);	  if(!res) {	    buffer[length]=0;	    printf("CRL Distribution point = %s\n", buffer);	  }	}      }    }    if(type==CRYPT_CERTTYPE_CRL) {      printf("Serial Number\t\tRevocation Date\n");      res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_CERTIFICATE, 			    CRYPT_CURSOR_FIRST);      if(res) {	printf("NONE\n");      } else {	while(TRUE) {	  res=cryptGetAttributeString(cert, CRYPT_CERTINFO_SERIALNUMBER, buffer, &length);	  if(res) die("Could not retrieve serial number of revoked certificate in CRL.");	  printf("%s\t", sn_to_string((unsigned char *)buffer));	  res=cryptGetAttributeString(cert, CRYPT_CERTINFO_REVOCATIONDATE, buffer, &length);	  if(res) die("Could not retrive revocation date of revoked certificate in CRL.");	  print_time(*((int *)buffer));	  res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_CERTIFICATE, 				CRYPT_CURSOR_NEXT);	  if(res) break;	}      }    }  }}/* Show the allowable fields for subjects and key-usages. */void values(void){  int i;  printf("The following fields are legal for the subject:\n");  /*  printf("\t  bc (business category)\n"); */  printf("\t c (2 letter country code)\n");  printf("\t cn (common name)\n");  /*      printf("\t  d (description)\n");     printf("\t  dc (domain component)\n");     printf("\t  g (given name)\n");     printf("\t  i (initials)\n");     printf("\t  isdn (international isdn number)\n");  */  printf("\t l (locality)\n");  printf("\t o (organization name)\n");  printf("\t ou (organizational unit)\n");  /*    printf("\t  s (surname)\n");    printf("\t  sn (serial number)\n");  */  printf("\t sp (state or province)\n");  /*    printf("\t  st (street address)\n");    printf("\t  t (title)\n");  */  /*    printf("Fields should be listed from most specific to least specific.\n\n");  */  printf("The following fields are valid in the subject alt-name:\n");  for(i=0; i<NUM_SUBJ_ALT_ATTR; i++)    printf("\t%s\n", subjalttable[i].txt);  printf("The following fields are legal for key usage:\n");  for(i=0; i<NUM_USAGE; i++)    printf("\t%s\n", usagetable[i].txt);  printf("The following fields are legal for extended key usage:\n");  for(i=0; i<NUM_EXTUSAGE; i++)    printf("\t%s\n", extusagetable[i].txt);  printf("\n");}/* Given an action set in the global variable action,   do the right thing.*/void do_action(void){  if(show_values) {    if(subject) {      printf("subj = ");      print_semicolon_list(subject);      printf("\n");    }    if(subject_alt) {      printf("subj-alt = ");      print_semicolon_list(subject_alt);      printf("\n");    }    if(usage) {      printf("key-usage = ");      print_semicolon_list(usage);      printf("\n");    }    if(ext_usage) {      printf("ext-key-usage = ");      print_semicolon_list(ext_usage);      printf("\n");    }    if(action==ACTION_CREATECA || action==ACTION_CREATECERT) {      printf("start-date = ");      print_time(validfrom);      printf("end-date = ");      print_time(validto);    }    if(action==ACTION_CREATECRL)      printf("crl-next-update = %d\n", crl_next_update);    if(crldp)      printf("crldp = %s\n", crldp);    if(inputfile)      switch(action) {      case ACTION_VIEW:	printf("view = %s\n", inputfile);	break;      case ACTION_CREATECRL:	printf("crl-contents = %s\n", inputfile);	break;      case ACTION_CREATECERT:	printf("request = %s\n", inputfile);	break;      default:	printf("input-file = %s\n", inputfile);	break;      }    if(outputfile)      switch(action) {      case ACTION_CREATECA:	printf("create-new-ca = %s\n", outputfile);	break;      case ACTION_CREATECERT:	printf("create-cert = %s\n", outputfile);	break;      case ACTION_CREATECRL:	printf("create-crl = %s\n", outputfile);	break;      case ACTION_CREATEREQUEST:	printf("create-request = %s\n", outputfile);	break;      case ACTION_CREATEKEYS:	printf("create-keys = %s\n", outputfile);	break;      default:	printf("output-file = %s\n", outputfile);	break;      }    if(keyfile)      printf("priv-key = %s\n", keyfile);    if(cert_dup_dir)      printf("crldp = %s\n", cert_dup_dir);    if(password)      printf("password = %s\n", password);    if(keysize>0)      printf("key-size = %d\n", keysize);  }  switch(action) {  case ACTION_NONE:    die("No action specified.");    break;  case ACTION_CREATECA:    create_new_ca();    break;  case ACTION_CREATEKEYS:    create_keys();    break;  case ACTION_CREATEREQUEST:    create_request();    break;  case ACTION_CREATECERT:    create_cert();    break;  case ACTION_CREATECRL:    create_crl();    break;  case ACTION_VIEW:    view();    break;  case ACTION_VALUES:    values();    break;  default:    die("Unknown action.");  }}/* Remove spaces from the front and end of a string.  */char *squeeze_spaces(char *txt){  char *p;  char *res;  res = strdup(txt);  while(*res==' ') res++;  p = res + strlen(res) - 1;  while(*p == ' ' && p>=res) { *p = 0; p--; }  return res;}/* Remove possible quotation marks surrounding a string. */char *squeeze_quotes(char *txt){  char *res;  res = strdup(txt);  if(res[0]=='"' && res[strlen(res)-1]=='"') {    res[strlen(res)-1]=0;    res++;  }  return res;    }/* Given a line of text, process it as a command line option.  */void process_line(char *line){  char *left, *right, *p;  if(entirely_spaces(line)) return;  if(comment(line)) return;  line = squeeze_spaces(line);  line = squeeze_quotes(line);  line = squeeze_spaces(line);  p=strchr(line, '=');  if(p==NULL) {    process_singleton(line);  } else {    *p = 0;    left = line;    right = p+1;    left = squeeze_spaces(left);    left = squeeze_quotes(left);    left = squeeze_spaces(left);    right = squeeze_spaces(right);    right = squeeze_quotes(right);    right = squeeze_spaces(right);    process_pair(left, right);  }}/* Given a configuration file, use it if it exists, give a warning   and continue if it does not exist. */void process_default_file(char *filename){  FILE *fp;  fp=fopen(filename, "rt");  if(!fp) {    /* printf("WARNING: Could not open default configuration file %s.\n", filename); */    return;  }  fclose(fp);  process_file(filename);}/* Given a file, consider each line to be an argument   to the program. */void process_file(char *filename){  FILE *fp;  char buffer[MAXBUF];  fp=fopen(filename, "rt");  if(!fp) {    printf("ERROR: Could not open %s for reading.\n", filename);    exit(EXIT_FAILURE);  }  while(!(feof(fp))) {    memset(buffer, 0, MAXBUF);    fgets(buffer, MAXBUF, fp);    process_line(chomp(buffer));  }  fclose(fp);}/* Process the actual command line arguments passed   to the program. */void process_args(int argc, char *argv[]){  int i;  for(i=1; i<argc; i++) {    process_line(argv[i]);  }}/* MAIN */int main(int argc, char *argv[]){  /* Initialize cryptlib */  cryptInit();  /* Set default values for all global variables. */  set_defaults();  /* Process the original config file in preset location. */  /* Later values may overwrite anything this does. */  process_default_file(DEFAULT_CONFIG_FILE);  /* Process the arguments passed by the user. */  process_args(argc, argv);  /* All global variables set, do the action. */  do_action();  /* Close cryptlib and we're done. */  cryptEnd();  return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久99水蜜桃| voyeur盗摄精品| 日韩免费高清电影| 国产iv一区二区三区| 亚洲一区二区美女| 欧美日韩国产经典色站一区二区三区 | 国产精品国产自产拍高清av王其| 色婷婷综合久久久中文字幕| 青娱乐精品在线视频| www日韩大片| www.视频一区| 极品少妇xxxx偷拍精品少妇| 亚洲最快最全在线视频| 这里只有精品99re| 99久久精品费精品国产一区二区 | 奇米亚洲午夜久久精品| 久久久久久久电影| 欧美日韩一区二区在线观看| 国产精品亚洲а∨天堂免在线| 一区二区三区四区在线| 久久婷婷成人综合色| 欧美天堂亚洲电影院在线播放| 国产精品一品视频| 免费看日韩精品| 尤物视频一区二区| 久久综合九色综合97_久久久| 94色蜜桃网一区二区三区| 精品一区二区三区视频| 一区二区三区四区在线播放 | 一色桃子久久精品亚洲| 精品国产91洋老外米糕| 欧美日韩视频在线第一区| 成人高清av在线| 日韩国产一区二| 一区二区三区精品视频| 国产精品久久久久久久久果冻传媒 | 成人手机在线视频| 日韩高清欧美激情| 一区二区三区在线观看国产| 中文字幕成人在线观看| 久久久久99精品国产片| 欧美成人伊人久久综合网| 欧美精品亚洲一区二区在线播放| 一本到不卡精品视频在线观看| 国产馆精品极品| 国产一区二区在线视频| 久久99精品久久久久久国产越南| 日日夜夜精品视频天天综合网| 一区二区三区在线看| 亚洲蜜桃精久久久久久久| 中文字幕一区二区三区精华液| 国产女同性恋一区二区| 精品国产一区a| 日韩三级精品电影久久久| 91精品国产一区二区三区香蕉| 欧美日韩一区久久| 欧美日韩精品免费| 欧美猛男超大videosgay| 91性感美女视频| 日本韩国一区二区| 欧美性大战久久| 欧美私人免费视频| 一本色道综合亚洲| 欧美性xxxxx极品少妇| 欧美伊人久久久久久午夜久久久久| 91精彩视频在线| 欧美揉bbbbb揉bbbbb| 欧美高清视频一二三区| 欧美一区二区视频免费观看| 日韩欧美在线1卡| 久久日一线二线三线suv| 日本一区二区电影| 亚洲欧美日韩中文播放| 亚洲成人动漫在线免费观看| 日韩精品电影在线| 久久精品国产一区二区| 国产成人欧美日韩在线电影| 成人久久视频在线观看| 色婷婷av一区二区三区之一色屋| 欧美午夜在线一二页| 91精品国产欧美一区二区18| 欧美mv日韩mv| 久久久一区二区| 亚洲视频一区在线| 首页国产欧美久久| 国产精品一二三四区| 91网上在线视频| 欧美一区二区视频观看视频| 久久男人中文字幕资源站| 中文字幕一区二区三| 亚洲国产一区二区在线播放| 狠狠久久亚洲欧美| av午夜一区麻豆| 7777精品伊人久久久大香线蕉最新版| 精品成人免费观看| 亚洲色图欧美在线| 美国十次了思思久久精品导航| 国产伦精品一区二区三区视频青涩| 99久久99久久免费精品蜜臀| 欧美日韩高清一区| 国产视频一区二区三区在线观看| 一区二区三区在线免费观看| 久久99精品网久久| 色婷婷综合久色| 久久日一线二线三线suv| 亚洲免费观看高清| 韩国午夜理伦三级不卡影院| 在线观看日韩高清av| 2021中文字幕一区亚洲| 夜夜嗨av一区二区三区中文字幕| 久久精品国产精品亚洲综合| 91麻豆视频网站| 久久亚洲春色中文字幕久久久| 亚洲欧美国产77777| 奇米精品一区二区三区在线观看| 99精品欧美一区二区三区综合在线| 日韩一区二区在线免费观看| 国产精品久久久久久亚洲毛片| 亚洲1区2区3区4区| 99国产精品一区| 久久精品一区二区三区不卡 | 在线影视一区二区三区| 国产欧美日韩一区二区三区在线观看| 偷窥国产亚洲免费视频| 国产激情偷乱视频一区二区三区| 欧美精品黑人性xxxx| 椎名由奈av一区二区三区| 国产一区二区三区视频在线播放| 欧美日韩国产综合一区二区三区 | 欧美剧在线免费观看网站 | 中文字幕不卡在线观看| 美女视频网站黄色亚洲| 欧美三级三级三级爽爽爽| 欧美激情一区二区三区四区| 免费成人在线观看| 欧美二区三区91| 香蕉影视欧美成人| 日本电影欧美片| 亚洲欧美中日韩| 成人精品在线视频观看| 久久精品视频一区二区| 精品一区二区在线播放| 日韩一区二区高清| 水蜜桃久久夜色精品一区的特点| 在线观看亚洲一区| 亚洲国产美女搞黄色| 9191久久久久久久久久久| 蜜桃传媒麻豆第一区在线观看| 日韩欧美你懂的| 国产高清无密码一区二区三区| 中文字幕国产一区二区| 91丨九色丨黑人外教| 亚洲午夜一区二区| 日韩精品一区二区三区视频在线观看| 国产尤物一区二区| 国产精品久久免费看| 欧美影院一区二区三区| 日本视频免费一区| 国产日韩欧美亚洲| 色激情天天射综合网| 人人精品人人爱| 欧美国产欧美综合| 在线观看日韩高清av| 日本视频免费一区| 国产精品天天看| 欧美日韩一区成人| 狠狠色丁香久久婷婷综| 亚洲色欲色欲www在线观看| 欧美日韩国产123区| 国产成人av一区二区三区在线 | 有坂深雪av一区二区精品| 欧美一级日韩不卡播放免费| 国产v日产∨综合v精品视频| 亚洲自拍与偷拍| 久久综合久久鬼色中文字| 日本道色综合久久| 国内外成人在线| 亚洲综合清纯丝袜自拍| 久久久99久久精品欧美| 日本韩国一区二区| 国产精品一区二区三区网站| 亚洲香肠在线观看| 国产女人18毛片水真多成人如厕 | 黑人巨大精品欧美黑白配亚洲| 亚洲三级免费观看| 精品福利一区二区三区| 色综合天天视频在线观看 | 国产精品伊人色| 亚洲成在人线在线播放| 国产欧美日韩亚州综合 | 97超碰欧美中文字幕| 久久99九九99精品| 亚洲成人综合网站| 国产精品麻豆网站| 精品国产凹凸成av人网站| 欧美日韩一级视频| jvid福利写真一区二区三区| 久久av老司机精品网站导航| 亚洲综合清纯丝袜自拍| 国产精品美女久久久久久2018|