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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? writeenvtype.c

?? IBE是一種非對(duì)稱(chēng)密碼技術(shù)
?? C
字號(hào):
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "p7obj.h"
#include "idobj.h"
#include "derhelp.h"
#include "oidlist.h"
#include "errorctx.h"

/* Generate an init vector.
 * <p>The caller has the option of passing in a random object to use
 * when generating the IV. If the caller passes NULL, we'll look in the
 * libCtx for a random object. If there's none there, we'll just use
 * time of day as the seed.
 * <p>This function will build a SHA-1 object, then digest some output
 * from the caller-supplied random (if there is one), then the time of
 * day. It will then place the first initVectorLen bytes of the digest
 * into the initVector buffer.
 * <p>If the init vector is longer than 20 bytes (no such IV's yet, but
 * just in case), use the digest result as the first 20 bytes of IV,
 * then digest the digest to get the next block of bytes. And so on.
 */
static int VOLT_CALLING_CONV GenerateInitVector VOLT_PROTO_LIST ((
   VoltLibCtx *libCtx,
   VtRandomObject random,
   unsigned char *initVector,
   unsigned int initVectorLen
));

int VtPkcs7ImplWriteEnvelopeIBE (
   VtPkcs7Object *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)(*object);
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  unsigned char *buffer = (unsigned char *)0;
  VoltPkcs7WriteEnvCtx *envCtx = (VoltPkcs7WriteEnvCtx *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_PKCS7_SET_TYPE_FLAG)
      break;

    /* Make sure the object is empty.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if ( (obj->contentType != 0) || (obj->localCtx != (Pointer)0) )
      break;

    /* Check the info, we're expecting NULL.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
      break;

    /* Build the local ctx.
     */
    bufferSize = sizeof (VoltPkcs7WriteEnvCtx);

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the struct.
     */
    envCtx = (VoltPkcs7WriteEnvCtx *)buffer;

    /* Fill in fields.
     */
    obj->state = VOLT_P7_STATE_ENV_WRITE_SET;
    obj->localCtx = (Pointer)envCtx;
    obj->LocalCtxDestroy = VoltWriteEnvCtxDestroy;
    obj->contentType = VT_PKCS7_ENVELOPED_DATA;
    obj->WriteInit = VoltP7EnvWriteInit;
    obj->WriteUpdate = VoltP7EnvWriteUpdate;
    obj->WriteFinal = VoltP7EnvWriteFinal;

    status = 0;

  } while (0);

  /* If success, we're done.
   */
  if (status == 0)
    return (0);

  /* If error, destroy what we created.
   */
  if (buffer != (unsigned char *)0)
    Z2Free (buffer);

  VOLT_LOG_ERROR_INFO (
    0, *object, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtPkcs7ImplWriteEnvelopeIBE", fnctLine, (char *)0)

  return (status);
}

void VoltWriteEnvCtxDestroy (
   Pointer obj,
   Pointer ctx
   )
{
  unsigned int index;
  VoltObject *voltObj = (VoltObject *)obj;
  VoltLibCtx *libCtx;
  VoltPkcs7WriteEnvCtx *envCtx = (VoltPkcs7WriteEnvCtx *)ctx;

  /* Anything to destroy?
   */
  if ( (obj == (Pointer)0) || (ctx == (Pointer)0) )
    return;

  libCtx = (VoltLibCtx *)(voltObj->libraryCtx);

  for (index = 0; index < envCtx->recipientsCount; ++index)
  {
    VtDestroyAlgorithmObject (&(envCtx->recipients[index].asymEncryptor));
    VtDestroyKeyObject (&(envCtx->recipients[index].asymKey));
    Asn1RecipientInfo_free (envCtx->recipients[index].recipInfo);
  }

  if (envCtx->recipients != (VoltRecipientData *)0)
    Z2Free (envCtx->recipients);

  if (envCtx->symEncryptorAlgId.data != (unsigned char *)0)
    Z2Free (envCtx->symEncryptorAlgId.data);

  VtDestroyKeyObject (&(envCtx->symKey));
  VtDestroyAlgorithmObject (&(envCtx->symEncryptor));
  VtDestroyIdentityList (&(envCtx->recipList));

  Z2Free (ctx);
}

int VtPkcs7ParamEnv3DESCBC (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VtRandomObject getRandom = (VtRandomObject)0;
  VoltPkcs7WriteEnvCtx *envCtx = (VoltPkcs7WriteEnvCtx *)(obj->localCtx);
  VtBlockCipherInfo blockCipherInfo;
  VtItem ivItem;
  unsigned char tdesAlgId[22] =
  {
    0x30, 0x14, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86,
    0xf7, 0x0d, 0x03, 0x07, 0x04, 0x08, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  };
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_PKCS7_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_PKCS7_SET_TYPE_FLAG)
      break;

    /* The P7 object must be set to write EnvelopedData.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->contentType != VT_PKCS7_ENVELOPED_DATA)
      break;

    /* The P7 object must not be set with a symmetric algorithm yet.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (envCtx->symEncryptor != (VtAlgorithmObject)0)
      break;

    /* The info should be a random object or NULL.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
    {
      getRandom = (VtRandomObject)info;
      if (VOLT_OBJECT_TYPE_NOT_EQUAL (info, VOLT_OBJECT_TYPE_RANDOM))
        break;
    }
    else
    {
      status = VtGetLibCtxParam (
        libCtx, VtLibCtxParamRandomObj, (Pointer *)&getRandom);
      if (status != 0)
        getRandom = (VtRandomObject)0;
    }

    /* Generate an IV.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = GenerateInitVector (libCtx, getRandom, tdesAlgId + 14, 8);
    if (status != 0)
      break;

    ivItem.data = tdesAlgId + 14;
    ivItem.len = 8;

    /* Build the symmetric encryption object.
     */
    blockCipherInfo.feedback = VtFeedbackCBC;
    blockCipherInfo.feedbackInfo = (Pointer)&ivItem;
    blockCipherInfo.padding = VtPaddingPkcs5;
    blockCipherInfo.paddingInfo = (Pointer)0;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateAlgorithmObject (
      (VtLibCtx)libCtx, VtAlgorithmImpl3DESEDE, (Pointer)&blockCipherInfo,
      &(envCtx->symEncryptor));
    if (status != 0)
      break;

    envCtx->blockSize = 8;
    envCtx->SymKeyParam = VtKeyParamTripleDES;
    envCtx->symKeyBits = 192;

    /* Copy the algId.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    envCtx->symEncryptorAlgId.data = (unsigned char *)Z2Realloc (
      envCtx->symEncryptorAlgId.data, sizeof (tdesAlgId));
    if (envCtx->symEncryptorAlgId.data == (unsigned char *)0)
      break;
    Z2Memcpy (envCtx->symEncryptorAlgId.data, tdesAlgId, sizeof (tdesAlgId));
    envCtx->symEncryptorAlgId.len = sizeof (tdesAlgId);

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, errorType,
    (char *)0, "VtPkcs7ParamEnv3DESCBC", fnctLine, (char *)0)

  return (status);
}

int VtPkcs7ParamEnvAES128CBC (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VtRandomObject getRandom = (VtRandomObject)0;
  VoltPkcs7WriteEnvCtx *envCtx = (VoltPkcs7WriteEnvCtx *)(obj->localCtx);
  VtBlockCipherInfo blockCipherInfo;
  VtItem ivItem;
  unsigned char aesAlgId[31] =
  {
    0x30, 0x1D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01,
    0x65, 0x03, 0x04, 0x01, 0x02, 0x04, 0x10, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  };
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_PKCS7_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_PKCS7_SET_TYPE_FLAG)
      break;

    /* The P7 object must be set to write EnvelopedData.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->contentType != VT_PKCS7_ENVELOPED_DATA)
      break;

    /* The P7 object must not be set with a symmetric algorithm yet.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (envCtx->symEncryptor != (VtAlgorithmObject)0)
      break;

    /* The info should be a random object or NULL.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
    {
      getRandom = (VtRandomObject)info;
      if (VOLT_OBJECT_TYPE_NOT_EQUAL (info, VOLT_OBJECT_TYPE_RANDOM))
        break;
    }
    else
    {
      status = VtGetLibCtxParam (
        libCtx, VtLibCtxParamRandomObj, (Pointer *)&getRandom);
      if (status != 0)
        getRandom = (VtRandomObject)0;
    }

    /* Generate an IV.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = GenerateInitVector (libCtx, getRandom, aesAlgId + 15, 16);
    if (status != 0)
      break;

    ivItem.data = aesAlgId + 15;
    ivItem.len = 16;

    /* Build the symmetric encryption object.
     * Note that we're padding following PKCS #5. The symmetric algID
     * contains the OID for AES-128-CBC which is an OID that says "do
     * not pad". However, we're padding. That's because P7 specifies
     * padding following P5.
     */
    blockCipherInfo.feedback = VtFeedbackCBC;
    blockCipherInfo.feedbackInfo = (Pointer)&ivItem;
    blockCipherInfo.padding = VtPaddingPkcs5;
    blockCipherInfo.paddingInfo = (Pointer)0;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateAlgorithmObject (
      (VtLibCtx)libCtx, VtAlgorithmImplAES, (Pointer)&blockCipherInfo,
      &(envCtx->symEncryptor));
    if (status != 0)
      break;

    envCtx->blockSize = 16;
    envCtx->SymKeyParam = VtKeyParamAES;
    envCtx->symKeyBits = 128;

    /* Copy the algId.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    envCtx->symEncryptorAlgId.data = (unsigned char *)Z2Realloc (
      envCtx->symEncryptorAlgId.data, sizeof (aesAlgId));
    if (envCtx->symEncryptorAlgId.data == (unsigned char *)0)
      break;
    Z2Memcpy (envCtx->symEncryptorAlgId.data, aesAlgId, sizeof (aesAlgId));
    envCtx->symEncryptorAlgId.len = sizeof (aesAlgId);

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, errorType,
    (char *)0, "VtPkcs7ParamEnvAES128CBC", fnctLine, (char *)0)

  return (status);
}

static int GenerateInitVector (
   VoltLibCtx *libCtx,
   VtRandomObject random,
   unsigned char *initVector,
   unsigned int initVectorLen
   )
{
  int status;
  unsigned int offset, digestLen, currentLen;
  VtAlgorithmObject sha1 = (VtAlgorithmObject)0;
  unsigned char digest[20];
  VtTime theTime;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* We need an IV for the CBC, CFB or OFB. Because the IV is public,
     * there's no need to generate it from a strongly seeded random
     * bytes. But we do want a different IV for each message. So we'll
     * digest some output from the caller-supplied random and the time
     * of day as a weak-seed PRNG.
     */
    if (random != (VtRandomObject)0)
    {
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtGenerateRandomBytes (random, digest, 20);
      if (status != 0)
        break;
    }

    VtGetTime ((VtLibCtx)libCtx, &theTime);

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateAlgorithmObject (
      (VtLibCtx)libCtx, VtAlgorithmImplSHA1, (Pointer)0, &sha1);
    if (status != 0)
      break;

    /* This do-while loop will generate bytes until we have enough.
     */
    offset = 0;
    do
    {
      /* Generate 20 bytes of IV, unless we need fewer than 20 bytes.
       */
      currentLen = 20;
      if (initVectorLen <= 20)
        currentLen = initVectorLen;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtDigestInit (sha1);
      if (status != 0)
        break;

      /* For the first loop, the digest buffer either contains the
       * result of the GenerateRandomBytes, or whatever was on the
       * stack at the time of the call (if no random is supplied).
       * For subsequent loops, it contains the result of the previous
       * digest.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtDigestUpdate (sha1, digest, 20);
      if (status != 0)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtDigestFinal (
        sha1, (unsigned char *)&theTime, sizeof (theTime),
        digest, 20, &digestLen);
      if (status != 0)
        break;

      Z2Memcpy (initVector + offset, digest, currentLen);
      initVectorLen -= currentLen;

      /* If there are no more bytes to generate, break out of this loop.
       */
      if (initVectorLen == 0)
        break;

      /* Prepare for the next loop.
       */
      offset += currentLen;

    } while (1);

  } while (0);

  VtDestroyAlgorithmObject (&sha1);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, libCtx, 0, status, 0, 0,
    (char *)0, "GenerateInitVector", fnctLine, (char *)0)

  return (status);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久不卡网国产精品一区| 午夜免费久久看| 亚洲国产视频一区二区| 精品一区二区三区香蕉蜜桃| 91福利国产精品| 欧美激情自拍偷拍| 日韩不卡在线观看日韩不卡视频| av在线播放不卡| 国产香蕉久久精品综合网| 日韩二区三区在线观看| 欧美亚洲综合在线| 亚洲乱码日产精品bd| 国产99精品国产| 精品欧美久久久| 日韩精品一二三| 欧美日韩精品一区二区| 一区二区三区精密机械公司| 成人av在线网站| 国产欧美一区二区三区鸳鸯浴| 日韩在线一区二区三区| 欧洲一区在线电影| 亚洲精品伦理在线| 色94色欧美sute亚洲线路一久| 久久日韩粉嫩一区二区三区| 久久91精品国产91久久小草| 日韩精品一区二区在线| 青青草伊人久久| 7777精品伊人久久久大香线蕉 | 蜜桃久久久久久| 欧美日韩国产一级| 亚洲综合色丁香婷婷六月图片| 色综合色狠狠综合色| 亚洲另类在线一区| 欧美性猛交xxxxxx富婆| 亚洲一区二区美女| 欧美日韩精品是欧美日韩精品| 亚洲成a人片综合在线| 在线观看欧美日本| 午夜欧美2019年伦理| 欧美一区二区大片| 国产麻豆视频一区二区| 国产婷婷色一区二区三区四区| 高清shemale亚洲人妖| 国产精品三级在线观看| 99国产一区二区三精品乱码| 亚洲精品乱码久久久久久黑人| 91成人免费在线视频| 日韩和欧美一区二区三区| 欧美一区国产二区| 国产成都精品91一区二区三| 日韩伦理免费电影| 7777精品伊人久久久大香线蕉完整版 | 亚洲欧洲av在线| 色94色欧美sute亚洲13| 日本怡春院一区二区| 久久久精品蜜桃| 91年精品国产| 喷水一区二区三区| 国产精品入口麻豆九色| 欧美亚洲丝袜传媒另类| 久久疯狂做爰流白浆xx| 国产精品美女久久久久久久久久久| 99久久99久久综合| 日韩电影在线观看电影| 国产偷v国产偷v亚洲高清| 欧洲精品在线观看| 国内外精品视频| 亚洲综合区在线| 欧美精品一区二区久久婷婷| 成人动漫视频在线| 青青国产91久久久久久| 国产精品免费久久| 欧美猛男超大videosgay| 国产一区二区三区免费播放| 一区二区三区日本| 久久久久国产一区二区三区四区| 99r精品视频| 久久国产成人午夜av影院| 亚洲欧美日韩国产手机在线| 666欧美在线视频| av不卡免费电影| 极品美女销魂一区二区三区免费| 亚洲激情图片一区| 日本一区二区视频在线| 欧美一级欧美三级| 一本久久a久久免费精品不卡| 激情国产一区二区| 日韩国产欧美在线视频| 亚洲久本草在线中文字幕| 久久亚洲精精品中文字幕早川悠里| 91丨九色porny丨蝌蚪| 国产在线视频不卡二| 亚洲sss视频在线视频| 中文字幕在线不卡| 国产精品麻豆一区二区| 欧美tickling挠脚心丨vk| 在线观看91精品国产麻豆| 色偷偷成人一区二区三区91| 国产成人免费xxxxxxxx| 国产美女久久久久| 久久99精品久久久久久动态图 | 欧美xxx久久| 欧美丰满少妇xxxxx高潮对白 | 怡红院av一区二区三区| 国产精品久久三区| 国产女人aaa级久久久级| 国产午夜精品久久久久久免费视 | 26uuu国产一区二区三区 | 91麻豆精品国产91久久久更新时间 | 老司机午夜精品| 蜜臀久久99精品久久久久宅男| 午夜精品久久久久久久久久久 | 偷拍自拍另类欧美| 一区二区三区 在线观看视频| 亚洲欧洲精品天堂一级| 国产精品成人网| 国产精品大尺度| 亚洲欧美日韩国产综合| 亚洲乱码国产乱码精品精可以看| 伊人开心综合网| 午夜视频一区二区| 日韩高清不卡在线| 久久精品国产精品亚洲精品| 精品一区二区三区蜜桃| 国产美女在线观看一区| 成人小视频免费观看| 成人激情小说网站| 欧美影院一区二区| 日韩一级免费一区| 久久综合丝袜日本网| 国产精品女同一区二区三区| 亚洲欧美偷拍卡通变态| 亚洲成av人片一区二区梦乃| 免费在线观看一区| 国产成人精品一区二| 在线欧美日韩精品| 91精品国产综合久久婷婷香蕉 | 久久精品亚洲一区二区三区浴池| 国产精品丝袜在线| 一区二区三区91| 美脚の诱脚舐め脚责91| 国产成人精品三级| 欧美日韩三级视频| 久久中文字幕电影| 一区二区三区免费网站| 麻豆91在线观看| 色94色欧美sute亚洲线路一久| 日韩一区二区免费在线观看| 国产精品美女久久久久久久久久久| 一区二区三区在线观看欧美| 毛片一区二区三区| 91丝袜国产在线播放| 日韩一级免费一区| 一区二区三区自拍| 国产丶欧美丶日本不卡视频| 日韩一区在线免费观看| 久久综合久久综合久久综合| 中文字幕日韩一区| 久久精品国产成人一区二区三区| 成人小视频在线| 精品欧美一区二区久久| 亚洲成av人片一区二区| 风间由美一区二区三区在线观看 | 国产亚洲人成网站| 三级精品在线观看| www.色综合.com| 久久精品在线观看| 麻豆国产精品一区二区三区 | 图片区小说区国产精品视频| 成人动漫在线一区| 久久久精品影视| 男人操女人的视频在线观看欧美| 日本丶国产丶欧美色综合| 国产女人18水真多18精品一级做| 日本不卡在线视频| 欧美丝袜第三区| 亚洲欧美一区二区三区久本道91| 国产不卡一区视频| 久久综合成人精品亚洲另类欧美| 日本强好片久久久久久aaa| 欧美又粗又大又爽| 亚洲久草在线视频| 色婷婷综合视频在线观看| 国产精品久99| 风间由美性色一区二区三区| 2020国产精品| 国产在线不卡一卡二卡三卡四卡| 日韩一区二区三区视频| 午夜精品久久久久久久久| 欧美日韩在线三级| 亚洲一区国产视频| 欧美性生活大片视频| 亚洲黄一区二区三区| 色激情天天射综合网| ...xxx性欧美| 一本到高清视频免费精品| 亚洲特黄一级片| 欧美亚洲综合一区| 性做久久久久久| 日韩丝袜情趣美女图片|