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

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

?? simpleca.c

?? simpleca 比起正式的CA來說功能簡單
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
	val |= usagetable[i].code;	flag = TRUE;      }    }    if(!flag) {      fprintf(stderr, "ERROR: Unknown key usage %s.\n", ptr->item);      exit(EXIT_FAILURE);    }  }  /* If there are no defined key uses, let cryptlib do its defaults */  /* It is an error to try to set usages to 0 in cryptlib */  if(val) {    res = cryptSetAttribute(cert, CRYPT_CERTINFO_KEYUSAGE, val);    if(res) die("Could not set normal key usage field.");  } else {    warn("No key usages set, using defaults.");  }}/* Given a certificate and list of strings, set the extended key usage fields   on the certificate. */void set_ext_key_usage(CRYPT_CERTIFICATE cert, struct stringlist *usage){  int i, flag;  int val, res;  struct stringlist *ptr;  val = 0;  for(ptr = usage; ptr; ptr=ptr->next) {    flag = FALSE;    for(i=0; i<NUM_EXTUSAGE; i++) {      if(strcasecmp(ptr->item, extusagetable[i].txt)==0) {	res = cryptSetAttribute(cert, extusagetable[i].code, CRYPT_UNUSED);	if(res) {	  /* already set maybe, ignore */	}	flag = TRUE;      }    }    if(!flag) {      fprintf(stderr, "ERROR: Unknown extended key usage %s.\n", ptr->item);      exit(EXIT_FAILURE);    }  }}/* Given an 8 byte string containing a binary serial number,   return a textual representation of the serial number in hex.*/char *sn_to_string(unsigned char *sn){  char buffer[MAXBUF];  /*Print each byte as a 0-padded, 2 character hex value. */  snprintf(buffer, MAXBUF, "%02x%02x%02x%02x%02x%02x%02x%02x",	   sn[0], sn[1], sn[2], sn[3], sn[4], sn[5], sn[6], sn[7]);  return strdup(buffer);}char *get_raw_dn(CRYPT_CERTIFICATE cert){  int res, length;  char buffer[MAXBUF];  res=cryptGetAttributeString(cert, CRYPT_CERTINFO_DN, buffer, &length);  if(res) die("Could not get subject distinguished name.");  buffer[length]=0;  return strdup(buffer);}char *get_dn(CRYPT_CERTIFICATE cert){  return strdup(prettify_subject(get_raw_dn(cert)));}/* Given a string of 4 bytes representing an IP address, return text string of that ip address */char *expand_ip(char *str){  char buffer[MAXBUF];  snprintf(buffer, MAXBUF, "%d.%d.%d.%d", 	   *((unsigned char *)(str+0)),	   *((unsigned char *)(str+1)),	   *((unsigned char *)(str+2)),	   *((unsigned char *)(str+3)));  return strdup(buffer);}/* Retrieve the general name (alt name) of a given certificate in text form */char *get_gn(CRYPT_CERTIFICATE cert){  int i, res, length, putcomma;  char buffer[MAXBUF];  char *result;  putcomma = 0;  result = "";  res=cryptGetAttributeString(cert, CRYPT_CERTINFO_DN, buffer, &length);  if(!res) {    buffer[length]=0;    if(putcomma) result = string_cat(result, ", ");    else putcomma=1;    result = string_cat(result, prettify_subject(buffer));  }  for(i=0; i<NUM_SUBJ_ALT_ATTR; i++) {    res=cryptGetAttributeString(cert, subjalttable[i].code, buffer, &length);    if(!res) {      buffer[length]=0;      if(putcomma) result = string_cat(result, ", ");      else putcomma=1;      /* Handle IP addresses specially */      result = string_cat(result, subjalttable[i].txt);      result = string_cat(result, ":");      if(subjalttable[i].code==CRYPT_CERTINFO_IPADDRESS)	result = string_cat(result, expand_ip(buffer));      else	result = string_cat(result, buffer);    }  }  return result;}/* Given a request and a cert, transfer over anything in the subj-alt   of the request to the cert, ignoring errors (for duplicate content)*/void transfer_altname(CRYPT_CERTIFICATE req, CRYPT_CERTIFICATE cert){  char buffer[MAXBUF];  int res, length, i;  for(i=0; i<NUM_SUBJ_ALT_ATTR; i++) {    res = cryptGetAttributeString(req, subjalttable[i].code, buffer, &length);    if(!res) {      res = cryptSetAttributeString(cert, subjalttable[i].code, buffer, length);      if(res) {	printf("WARNING: Could not set attribute %s.\n", subjalttable[i].txt);      }    }  }  return;}/* Given data set in global variables, create a certificate   from a certificate request. */void create_cert(void){  CRYPT_CERTIFICATE req, cert;  CRYPT_KEYSET keyset;  CRYPT_CONTEXT privkey;  char *txt;  int res;  if(!keyfile) die("Private key file for CA must be set.");  if(!inputfile) die("No certificate request file specified.");  req = import_cert(inputfile);  res = cryptCheckCert(req, CRYPT_UNUSED);  if(res) die("Imported certificate request did not pass a consistency check.");  res = cryptKeysetOpen(&keyset, 			CRYPT_UNUSED, 			CRYPT_KEYSET_FILE, 			keyfile, 			CRYPT_KEYOPT_READONLY);  if(res) die("Opening private key file failed.");  if(password==NULL) {    password = get_pass("Password for CA's private key: ");  }  res = cryptGetPrivateKey(keyset, &privkey, CRYPT_KEYID_NAME, "private", password);  if(res) die("Could not retrieve private key from private key file.");  res=cryptCreateCert(&cert, CRYPT_UNUSED, CRYPT_CERTTYPE_CERTIFICATE);  if(res) die("Creation of blank certificate failed.");  /* printf("use_request_info_subj = %d, _alt = %d\n", use_request_info_subj, use_request_info_alt); */  /* If we have a subject or altname to set, just use the key from the request */  res=cryptSetAttribute(cert, CRYPT_CERTINFO_SUBJECTPUBLICKEYINFO, req);  if(res) die("Could not add public key from certificate request to certificate.");  /* Set the subject DN (transferring from request as necessary) */  /* The way the transfer from the request works is that we get the raw     cryptlib data for the dn, then possibly pass this on to set_cert_dn     as appropriate.  The last argument to set_cert_dn will get prepended     to the final dn.  This is good, since usually the request will have     a CN and then the repository will add stuff like O or C. */  if(subject_declared)    if(use_request_info_subj)      set_cert_dn(cert, subject, get_raw_dn(req));    else      set_cert_dn(cert, subject, "");  else    set_cert_dn(cert, subject, get_raw_dn(req));  /* Set gn, then transfer old gn from request if necessary */  if(subject_alt_declared)    set_cert_gn(cert, subject_alt);  if(use_request_info_alt)    transfer_altname(req, cert);  set_cert_valid_times(cert, validfrom, validto);  set_key_usage(cert, usage);  set_ext_key_usage(cert, ext_usage);  res=cryptSignCert(cert, privkey);  if(res) printf("Signing error %d\n", res);  if(res) die("Signing certificate failed.");  txt=export_cert(cert);  /* The case when outputfile is STDOUT is special.  We     write the data to stdout in that case. */  if(strcmp(outputfile, "STDOUT")==0) {    printf("%s\n", txt);  } else {    save_carefully(txt, outputfile);  }  if(cert_dup_dir) {    char buffer[MAXBUF];    snprintf(buffer, MAXBUF, "%s/%s", cert_dup_dir, outputfile);    save_carefully(txt, buffer);  }  res = cryptDestroyCert(req);  if(res) die("Could not free certificate request.");  res = cryptDestroyContext(privkey);  if(res) die("Could not free private key.");  res = cryptKeysetClose(keyset);  if(res) die("Could not close private key file.");  res = cryptDestroyCert(cert);  if(res) die("Could not free certificate.");}/* Calculate the length of a list of strings. */int stringlist_length(struct stringlist *lst){  if(lst==NULL) return 0;  return 1 + stringlist_length(lst->next);}/* Given a CRL, a filename, and a date, revoke the    certificate in the filename on the given date. */void revoke_it(CRYPT_CERTIFICATE cert, char *filename, char *date){  CRYPT_CERTIFICATE victim;  int ndate, res;  char buffer[4];  if(entirely_spaces(filename)) return;  victim = import_cert(filename);  ndate = process_date(date);  memcpy(buffer, &ndate, 4);  res = cryptSetAttribute(cert, CRYPT_CERTINFO_CERTIFICATE, victim);  if(res) {    fprintf(stderr, "WARNING: Could not add %s to CRL (may be a duplicate entry).\n", filename);  } else {    res = cryptSetAttributeString(cert, CRYPT_CERTINFO_REVOCATIONDATE, buffer, 4);    if(res) die("Could not set revocation date for a certificate in the CRL.");  }  res=cryptDestroyCert(victim);  if(res) die("Could not free revoked certificate.");}/* Given a CRL and a name that may or may not include a date,   revoke the named certificate in the CRL. */void try_to_revoke(CRYPT_CERTIFICATE cert, char *name){  char *filename, *date, *t;  t = strchr(name, '\t');  if(t==NULL) {    filename = name;    date = "";  } else {    *t = 0;    date = t+1;    filename = name;  }  revoke_it(cert, filename, date);}/*Perl-style chomp*/char *chomp(char *txt){  int l;  char *res;  res = strdup(txt);  l = strlen(res) - 1;  if(res[l] == '\n') res[l] = 0;  return res;}/* Given a CRL and a file, read entries in the file   and add them to the CRL. */void add_certificates(CRYPT_CERTIFICATE cert, char *file){  FILE *fp;  char buffer[MAXBUF];  char *f;  fp=fopen(file, "rt");  if(!fp) {    fprintf(stderr, "ERROR: Could not open %s for reading revoked certificates.\n", file);    exit(EXIT_FAILURE);  }  while(!(feof(fp))) {    fgets(buffer, MAXBUF, fp);    f=chomp(buffer);    try_to_revoke(cert, f);  }  fclose(fp);}/* Given data in global variables, create a CRL. */void create_crl(void){  CRYPT_CERTIFICATE cert;  CRYPT_KEYSET keyset;  CRYPT_CONTEXT privkey;  char *txt;  int res;  if(!keyfile) die("Private key file for CA must be set.");  if(!inputfile) die("No revocation list specified.");  res = cryptKeysetOpen(&keyset, 			CRYPT_UNUSED, 			CRYPT_KEYSET_FILE, 			keyfile, 			CRYPT_KEYOPT_READONLY);  if(res) die("Opening private key file failed.");  if(password==NULL) {    password = get_pass("Password for CA private key: ");  }  res = cryptGetPrivateKey(keyset, &privkey, CRYPT_KEYID_NAME, "private", password);  if(res) die("Could not retrieve private key from private key file.");  res=cryptCreateCert(&cert, CRYPT_UNUSED, CRYPT_CERTTYPE_CRL);  if(res) die("Creation of blank certificate revocation list failed.");  set_crl_next_update(cert, crl_next_update);  add_certificates(cert, inputfile);  res=cryptSignCert(cert, privkey);  if(res) die("Signing certificate failed.");  txt=export_cert(cert);  if(strcmp(outputfile, "STDOUT")==0) {    printf("%s\n", txt);  } else {    save_carefully(txt, outputfile);  }  if(cert_dup_dir) {    char buffer[MAXBUF];    snprintf(buffer, MAXBUF, "%s/%s", cert_dup_dir, outputfile);    save_carefully(txt, buffer);  }  res = cryptDestroyContext(privkey);  if(res) die("Could not free private key.");  res = cryptKeysetClose(keyset);  if(res) die("Could not close private key file.");  res = cryptDestroyCert(cert);  if(res) die("Could not free certificate.");}/* Given data set in global variables (and data   that is entered when prompted), create a new CA   certificate and update the information about   the private key so it can sign certificates.*/void create_new_ca(void){  FILE *fp;  int res;  char *txt;  char *crlfile;  CRYPT_KEYSET keyset;  CRYPT_CONTEXT privkey;  CRYPT_CERTIFICATE cert;  if(!outputfile) die("Must specify output file.");  fp=fopen(outputfile, "rt");  if(fp) {    fclose(fp);    die("Output file already exists.");  }  if(!keyfile) {    keyfile = prompt("Name of file for the key pair to be written to: ");  }  if(strcmp(keyfile, "")==0) die("No filename entered.");  fp=fopen(keyfile, "rt");  if(fp) {    die("File already exists.");  } else {    /* Create the keyfile */    res = cryptKeysetOpen(&keyset, 			  CRYPT_UNUSED, 			  CRYPT_KEYSET_FILE, 			  keyfile, 			  CRYPT_KEYOPT_CREATE);    if(res) die("Creating keyfile failed.");    /* Just use RSA, less complicated for user. */    res = cryptCreateContext(&privkey, CRYPT_UNUSED, CRYPT_ALGO_RSA);    if(res) die("Creating private key context failed.");    /* cryptlib requires all keys to have labels, we always       use "private" for private keys. */    res = cryptSetAttributeString(privkey, CRYPT_CTXINFO_LABEL, "private", 7);    if(res) die("Setting label for private key failed.");    if(keysize<=0) {      txt = prompt("Key size in bits (<RETURN> for 1024): ");      keysize = atoi(txt);    }    if(keysize<=0) {      warn("No keysize specified, using 1024 bits.");      keysize = 1024;    }    res = cryptSetAttribute(privkey, CRYPT_CTXINFO_KEYSIZE, keysize/8);    if(res) die("Setting key size failed.");    res = cryptGenerateKey(privkey);    if(res) die("Generation of private key failed.");    if(password==NULL) {      password = get_pass("Password for the key being created: ");    }    res = cryptAddPrivateKey(keyset, privkey, password);    if(res) die("Adding private key to keyfile failed.");  }  if(stringlist_length(subject) == 0) {    txt = prompt("CA name: ");    if(strlen(txt)==0) die("CA name cannot be empty.");    stringlist_append(&subject, string_cat("cn:", txt));  }  res=cryptCreateCert(&cert, CRYPT_UNUSED, CRYPT_CERTTYPE_CERTIFICATE);  if(res) die("Creation of blank certificate failed.");  res=cryptSetAttribute(cert, CRYPT_CERTINFO_SUBJECTPUBLICKEYINFO, privkey);  if(res) die("Could not add key to certificate.");  res=cryptSetAttribute(cert, CRYPT_CERTINFO_CA, 1);  if(res) die("Could not set CA attribute of certificate.");  res=cryptSetAttribute(cert, CRYPT_CERTINFO_SELFSIGNED, 1);  if(res) die("Could not set selfsigned attribute of certificate.");  set_cert_dn(cert, subject, "");  set_cert_gn(cert, subject_alt);  set_cert_valid_times(cert, validfrom, validto);  /* Let cryptlib handle CA's key usages since CA is a special case.     The user probably wants the key usages to apply to keys certified     by the CA. */  /*  set_key_usage(cert, usage); */  /*  set_ext_key_usage(cert, ext_usage); */  /* Finally get the CRLDP and set it if it's there */  if(crldp) {    res=cryptSetAttribute(cert, CRYPT_CERTINFO_CURRENT_FIELD, CRYPT_CERTINFO_CRLDIST_FULLNAME);    if(res) die("Could not move to CRLDP extension.");    res=cryptSetAttributeString(cert, CRYPT_CERTINFO_UNIFORMRESOURCEIDENTIFIER, crldp, strlen(crldp));    if(res) die("Could not set CRLDP in certificate.");  }  res=cryptSignCert(cert, privkey);  if(res) die("Signing certificate failed.");  res=cryptAddPublicKey(keyset, cert);  if(res) die("Could not add CA certificate to CA private key store.");  txt=export_cert(cert);  if(strcmp(outputfile, "STDOUT")==0) {    printf("%s\n", txt);  } else {    save_carefully(txt, outputfile);  }  if(cert_dup_dir) {    char buffer[MAXBUF];    snprintf(buffer, MAXBUF, "%s/%s", cert_dup_dir, outputfile);    save_carefully(txt, buffer);  }  /* Create initial blank CRL */  if(1) {    /* Write a blank CRL */    res = cryptDestroyCert(cert);    if(res) die("Could not free certificate.");    res = cryptDestroyContext(privkey);    if(res) die("Could not free private key.");    res = cryptKeysetClose(keyset);    if(res) die("Could not close private key file.");        res = cryptKeysetOpen(&keyset, 			  CRYPT_UNUSED, 			  CRYPT_KEYSET_FILE, 			  keyfile, 			  CRYPT_KEYOPT_READONLY);    if(res) die("Opening private key file failed.");    res = cryptGetPrivateKey(keyset, &privkey, CRYPT_KEYID_NAME, "private", password);    if(res) die("Could not retrieve private key from private key file.");    if(!inputfile)      crlfile = prompt("Name of file for the empty CRL to be written to: ");    else      crlfile = prompt("Name of file for the initial CRL to be written to: ");    res=cryptCreateCert(&cert, CRYPT_UNUSED, CRYPT_CERTTYPE_CRL);    if(res) die("Creation of blank certificate revocation list failed.");    set_crl_next_update(cert, crl_next_update);    if(inputfile)      add_certificates(cert, inputfile);    res=cryptSignCert(cert, privkey);    if(res) die("Signing certificate failed.");        txt=export_cert(cert);    if(strcmp(crlfile, "STDOUT")==0) {      printf("%s\n", txt);    } else {      save_carefully(txt, crlfile);    }    if(cert_dup_dir) {      char buffer[MAXBUF];      snprintf(buffer, MAXBUF, "%s/%s", cert_dup_dir, crlfile);      save_carefully(txt, buffer);    }  }}/* Generate a string of a list of strings with semicolons between entries. */char *semicolon_list(struct stringlist *lst){  char tmp[MAXBUF];  char *res;  if(lst==NULL) return "";  if(lst && lst->next) {    snprintf(tmp, MAXBUF, "%s;", lst->item);    res = semicolon_list(lst->next);    return string_cat(tmp, res);  }  snprintf(tmp, MAXBUF, "%s", lst->item);  return(strdup(tmp));}/* Print a list of strings with semicolons between entries. */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合在线| 国产精品剧情在线亚洲| 不卡的av在线| 看片网站欧美日韩| 亚洲黄色片在线观看| 久久久久九九视频| 欧美二区三区的天堂| 99精品国产视频| 国产一区二区三区在线观看免费 | 成人激情文学综合网| 亚洲综合小说图片| 国产精品国产三级国产| 精品国产免费人成在线观看| 欧美性猛交xxxxxx富婆| 波多野结衣精品在线| 精品系列免费在线观看| 日韩中文字幕区一区有砖一区 | 久久国产精品一区二区| 亚洲高清中文字幕| 自拍av一区二区三区| 久久夜色精品国产欧美乱极品| 欧美日韩国产不卡| 日本精品一区二区三区四区的功能| 国产精品一品二品| 国内精品国产成人国产三级粉色| 日韩精品一级中文字幕精品视频免费观看 | 国产麻豆视频一区| 久久精品国产亚洲高清剧情介绍| 午夜国产精品一区| 亚洲18女电影在线观看| 亚洲主播在线播放| 亚洲综合在线视频| 一区二区在线看| 亚洲精品国产第一综合99久久| 国产精品美女久久久久久2018| 国产日韩欧美不卡| 国产日本亚洲高清| 国产精品人人做人人爽人人添 | 国产午夜精品一区二区三区视频| 欧美精品一区二区三区一线天视频| 6080午夜不卡| 欧美一级理论片| 日韩一区二区电影在线| 日韩美女视频在线| 久久久久久97三级| 中文字幕免费在线观看视频一区| 国产精品欧美一区喷水| 日韩毛片一二三区| 一区二区三区精品视频| 午夜激情一区二区| 久久国内精品自在自线400部| 精品一区二区成人精品| 国产成人久久精品77777最新版本| 国产激情视频一区二区三区欧美| 国产成人免费av在线| 不卡大黄网站免费看| 欧美在线免费播放| 日韩一区二区三区在线| 精品成人在线观看| 国产精品久久久一本精品| 亚洲免费视频中文字幕| 午夜视频在线观看一区| 另类调教123区| 成人丝袜高跟foot| 在线观看免费亚洲| 日韩免费看的电影| 日本一二三四高清不卡| 亚洲综合另类小说| 久草在线在线精品观看| 91女人视频在线观看| 欧美日韩精品久久久| 久久先锋资源网| 亚洲色图视频免费播放| 奇米一区二区三区| 成人精品一区二区三区中文字幕 | 精品国产一区二区亚洲人成毛片| 欧美国产日韩a欧美在线观看| 尤物av一区二区| 久久99精品国产.久久久久| 99精品视频在线观看| 欧美一区二区黄色| 最新中文字幕一区二区三区| 午夜在线电影亚洲一区| 成人开心网精品视频| 91精品国产乱码久久蜜臀| 欧美激情在线一区二区三区| 亚洲伊人色欲综合网| 国产一区二区三区日韩| 欧美在线你懂的| 国产精品水嫩水嫩| 蜜臀va亚洲va欧美va天堂| 99久久精品国产导航| 欧美r级电影在线观看| 国产精品久久看| 久久国产综合精品| 色综合久久66| 国产日韩视频一区二区三区| 天使萌一区二区三区免费观看| 91视频在线观看免费| 国产清纯在线一区二区www| 午夜欧美2019年伦理| 国产成人午夜精品影院观看视频| 欧美在线观看你懂的| 日韩一级高清毛片| 1024成人网色www| 成人av先锋影音| 国产xxx精品视频大全| 欧美日韩电影在线播放| 成人欧美一区二区三区| 国产在线精品一区二区三区不卡| 欧美日韩久久一区| 自拍偷拍亚洲综合| 国产毛片精品一区| 日韩一区二区三区av| 亚洲国产视频网站| 日本高清成人免费播放| 国产精品少妇自拍| 国产成人av自拍| 久久只精品国产| 另类综合日韩欧美亚洲| 欧美日韩中文字幕一区二区| 亚洲欧美激情在线| bt7086福利一区国产| 国产亚洲精久久久久久| 国产精品一区免费视频| 久久夜色精品国产噜噜av| 免费久久99精品国产| 欧美中文字幕亚洲一区二区va在线| 久久综合国产精品| 国产在线精品国自产拍免费| 欧美一区二区大片| 久久精品国产一区二区| 欧美第一区第二区| 麻豆精品一二三| 精品国产伦一区二区三区免费| 麻豆视频一区二区| 日韩精品一区二区三区四区视频| 日韩高清中文字幕一区| 欧美一区二区三区不卡| 日本不卡中文字幕| 欧美sm美女调教| 国产精品亚洲第一| 国产精品每日更新在线播放网址| 高清不卡一区二区| 中文字幕一区二区视频| 色综合久久88色综合天天6| 亚洲小说欧美激情另类| 欧美日韩国产精品成人| 日本va欧美va瓶| 精品国产亚洲一区二区三区在线观看| 精品制服美女丁香| 日本一区二区高清| 色综合 综合色| 日本一不卡视频| 精品国产在天天线2019| 国产福利91精品一区二区三区| 国产精品毛片大码女人| 色av一区二区| 日韩电影在线观看电影| 久久精品在这里| 色欧美88888久久久久久影院| 亚洲电影中文字幕在线观看| 欧美一区二区三区白人| 国产成人福利片| 一区二区日韩电影| 日韩亚洲欧美成人一区| 粉嫩一区二区三区性色av| 一区二区三区四区在线播放 | 精品污污网站免费看| 精品伊人久久久久7777人| 欧美高清在线一区| 欧美日韩成人综合天天影院| 韩国午夜理伦三级不卡影院| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日韩av中文在线观看| 久久久久九九视频| 欧美日韩一区二区三区高清| 久久超碰97人人做人人爱| 日韩一区中文字幕| 91精品婷婷国产综合久久竹菊| 国产精品一区2区| 亚洲va欧美va人人爽| 国产视频一区二区在线观看| 欧美艳星brazzers| 国产成人自拍高清视频在线免费播放| 亚洲精品免费播放| 日韩免费在线观看| 一本久久a久久免费精品不卡| 麻豆91小视频| 亚洲精品菠萝久久久久久久| 91精品国产黑色紧身裤美女| 波多野结衣精品在线| 蜜臀av国产精品久久久久| 亚洲激情中文1区| 久久奇米777| 91精品啪在线观看国产60岁| 成人免费视频视频在线观看免费 | 国产色一区二区| 欧美日韩免费一区二区三区| 成人黄色片在线观看|