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

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

?? bbencimpl.c

?? IBE是一種非對稱密碼技術
?? C
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */

#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "paramobj.h"
#include "algobj.h"
#include "keyobj.h"
#include "cipher.h"
#include "ibe.h"
#include "surrender.h"
#include "errorctx.h"

int BBType1IBEGetOutputSize (
   VoltAlgorithmObject *obj,
   unsigned int callFlag,
   unsigned char *input,
   unsigned int inputLen,
   unsigned int *outputSize,
   unsigned int *leftovers,
   VtRandomObject random
   )
{
  int status;
  unsigned int theSize;
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(obj->classCtx);
  VoltBBType1IBECtx *ibeCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  /* Initialize result to 0. If this call works, we'll change it
   * (leftovers is always 0).
   */
  *outputSize = 0;
  *leftovers = 0;

  do
  {
    if (callFlag == VOLT_CALLER_ENCRYPT_FINAL)
    {
      VOLT_SET_FNCT_LINE (fnctLine)
      theSize = bb1GetRawEncryptedSize (inputLen, ibeCtx->bbCtx);
      status = VT_ERROR_INVALID_INPUT;
      if (theSize == 0)
        break;

      /* We can now set the plain and cipher block sizes.
       */
      *outputSize = (unsigned int)theSize;
      cipherCtx->plainBlockSize = inputLen;
      cipherCtx->cipherBlockSize = (unsigned int)theSize;

      status = 0;
      break;
    }

    /* Only EncryptFinal or DecryptFinal can make this call.
     * If we reach this point, we know the caller wasn't EncryptFinal. If
     * not DecryptFinal, error.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if (callFlag != VOLT_CALLER_DECRYPT_FINAL)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    theSize = bb1GetRawDecryptedSize (inputLen, ibeCtx->bbCtx);
    status = VT_ERROR_INVALID_INPUT;
    if (theSize == 0)
      break;

    /* We can now set the plain and cipher block sizes.
     */
    *outputSize = (unsigned int)theSize;
    cipherCtx->plainBlockSize = (unsigned int)theSize;
    cipherCtx->cipherBlockSize = inputLen;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, obj->voltObject.libraryCtx, status, VT_ERROR_TYPE_PRIMARY,
    fnctLine, "BBType1IBEGetOutputSize", (char *)0)

  return (status);
}

int BBType1IBEPubEncryptInit (
   VoltAlgorithmObject *algObj,
   VoltKeyObject *keyObj
   )
{
  int status;
  VoltLibCtx *libCtx = (VoltLibCtx *)(algObj->voltObject.libraryCtx);
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBBType1IBECtx *encCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);
  VoltBBType1IBEPubKeyData *keyData =
    (VoltBBType1IBEPubKeyData *)(keyObj->keyData);
  VtBBType1IBEParamInfo *paramData = (VtBBType1IBEParamInfo *)0;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Make sure the key matches the algorithm object.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_KEY_OBJ;
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_ASYM_ALG) !=
        VOLT_KEY_ALG_BB_TYPE_1)
      break;
    if ( ((keyObj->keyType & VOLT_KEY_TYPE_PRIVATE) == 0) &&
         ((keyObj->keyType & VOLT_KEY_TYPE_PUBLIC) == 0) )
      break;

    /* We need an mpCtx from the key.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (keyObj->mpCtx == (VoltMpIntCtx *)0)
      break;

    /* Clone the mpCtx.
     */
    if (algObj->mpCtx != (VoltMpIntCtx *)0)
      VtDestroyMpIntCtx ((VtMpIntCtx *)&(algObj->mpCtx));

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCloneObject (
      (Pointer)(keyObj->mpCtx), (Pointer *)&(algObj->mpCtx));
    if (status != 0)
      break;

    /* We need data (status is still set to VT_ERROR_INVALID_KEY_OBJ if we
     * can't get the data out).
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_KEY_OBJ;
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_DATA) != VOLT_KEY_TYPE_DATA)
    {
      if (keyObj->GetKeyData == (VGetKeyData)0)
        break;

      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = keyObj->GetKeyData ((VtKeyObject)keyObj, (Pointer *)&keyData);
      if (status != 0)
        break;
    }

    /* Get the IBE params out of the parameter object in the key data.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtGetParameterParam
      (keyData->ibeParams, VtParameterParamBBType1IBEParams,
      (Pointer *)&paramData);
    if (status != 0)
      break;

    /* Get the bfCtx in the encCtx.
     */
    VoltReleaseBbCtx (libCtx, &(encCtx->bbCtx));

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltGetBbCtxFromIBEParams (
      libCtx, (VtMpIntCtx)(keyObj->mpCtx), paramData,
      0, (unsigned char *)0,  (unsigned char *)0,  (unsigned char *)0,
      &(encCtx->bbCtx));
    if (status != 0)
      break;

    /* Copy the encoded identity into this object.
     */
    if (encCtx->encodedId.data != (unsigned char *)0)
      Z2Free (encCtx->encodedId.data);

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    encCtx->encodedId.data = (unsigned char *)Z2Malloc (
      keyData->encodedId.len, 0);
    if (encCtx->encodedId.data == (unsigned char *)0)
      break;
    Z2Memcpy (
      encCtx->encodedId.data, keyData->encodedId.data,
      keyData->encodedId.len);
    encCtx->encodedId.len = keyData->encodedId.len;

    status = 0;
  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, (VtLibCtx)libCtx, status, errorType, fnctLine,
    "BBType1IBEPubEncryptInit", (char *)0)

  return (status);
}

int BBType1IBEPubEncryptUpdate (
   VoltAlgorithmObject *algObj,
   VtRandomObject random,
   unsigned char *dataToEncrypt,
   unsigned int dataToEncryptLen,
   unsigned char *encryptedData
   )
{
  int status, count;
  unsigned int callNum, outputLen;
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBBType1IBECtx *ibeCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);
  VoltSurrenderCtx *surrCtx = (VoltSurrenderCtx *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  /* If we reach this point in the code, the buffer is big enough.
   * Call bb1RawEncrypt. If the return is not 0, try again, we may have
   * gotten unlucky with a random generation. But only try so many
   * times.
   */
  count = 0;
  do
  {
    /* If there's a surrender ctx, call the Surrender function.
     */
    if (count == 0)
    {
      VOLT_GET_OBJECT_SURR_CTX (surrCtx, algObj);
      VOLT_CALL_SURRENDER (
        surrCtx, VT_SURRENDER_FNCT_BB_TYPE1_IBE_ENCRYPT, 0, 1)
    }

    /* If the call to Encrypt is successful, we're done, break out.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    callNum = 2;
    status = (unsigned int)bb1RawEncrypt (
      encryptedData, cipherCtx->cipherBlockSize, &outputLen,
      ibeCtx->encodedId.data, ibeCtx->encodedId.len,
      dataToEncrypt, dataToEncryptLen, surrCtx,
      VT_SURRENDER_FNCT_BB_TYPE1_IBE_ENCRYPT, &callNum, random, ibeCtx->bbCtx);
    if (status == 0)
    {
      /* If there's a surrender ctx, call it for the last time.
       */
      VOLT_CALL_SURRENDER (
        surrCtx, VT_SURRENDER_FNCT_BB_TYPE1_IBE_ENCRYPT, 0, 0)
      break;
    }

    if ( (count >= 10) || (status == VT_ERROR_RANDOM_OBJECT) ||
         (status == VT_ERROR_BUFFER_TOO_SMALL) )
      break;
    count++;

  } while (1);

  VOLT_LOG_ERROR_COMPARE (
    status, algObj->voltObject.libraryCtx, status, 0, fnctLine,
    "BBType1IBEPubEncryptUpdate", (char *)0)

  return (status);
}

int BBType1IBEPriDecryptInit (
   VoltAlgorithmObject *algObj,
   VoltKeyObject *keyObj
   )
{
  int status;
  unsigned int primeLen2, index, bufferSize, offset;
  unsigned char *bufD0, *bufD1;
  VoltLibCtx *libCtx = (VoltLibCtx *)(algObj->voltObject.libraryCtx);
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBBType1IBECtx *decCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);
  VoltIBEPriKeyData *keyData = (VoltIBEPriKeyData *)(keyObj->keyData);
  VtBBType1IBEParamInfo *paramData = (VtBBType1IBEParamInfo *)0;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Make sure the key matches the algorithm object.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_KEY_OBJ;
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_ASYM_ALG) !=
        VOLT_KEY_ALG_BB_TYPE_1)
      break;
    if ((keyObj->keyType & VOLT_KEY_TYPE_PRIVATE) == 0)
      break;

    /* We need an mpCtx from the key.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (keyObj->mpCtx == (VoltMpIntCtx *)0)
      break;

    /* Clone the mpCtx.
     */
    if (algObj->mpCtx != (VoltMpIntCtx *)0)
      VtDestroyMpIntCtx ((VtMpIntCtx *)&(algObj->mpCtx));

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCloneObject (
      (Pointer)(keyObj->mpCtx), (Pointer *)&(algObj->mpCtx));
    if (status != 0)
      break;

    /* We need data (status is still set to VT_ERROR_INVALID_KEY_OBJ if we
     * can't get the data out).
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_DATA) != VOLT_KEY_TYPE_DATA)
    {
      if (keyObj->GetKeyData == (VGetKeyData)0)
        break;

      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = keyObj->GetKeyData ((VtKeyObject)keyObj, (Pointer *)&keyData);
      if (status != 0)
        break;
    }

    /* Get the IBE params out of the parameter object in the key data.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtGetParameterParam (
      keyData->bbKeyInfo.ibeParams, VtParameterParamBBType1IBEParams,
      (Pointer *)&paramData);
    if (status != 0)
      break;

    /* Build the bbCtx in the decCtx.
     */
    VoltReleaseBbCtx (libCtx, &(decCtx->bbCtx));

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltGetBbCtxFromIBEParams (
      libCtx, (VtMpIntCtx)(keyObj->mpCtx), paramData,
      0, (unsigned char *)0,  (unsigned char *)0,  (unsigned char *)0,
      &(decCtx->bbCtx));
    if (status != 0)
      break;

    /* Build the private value.
     */
    if (decCtx->privateValue.data != (unsigned char *)0)
      Z2Free (decCtx->privateValue.data);

    primeLen2 = paramData->primeP.len * 2;

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    bufferSize = (2 * primeLen2) + 2;
    decCtx->privateValue.data = (unsigned char *)Z2Malloc (
      bufferSize, VOLT_MEMORY_SENSITIVE);
    if (decCtx->privateValue.data == (unsigned char *)0)
      break;
    Z2Memset (decCtx->privateValue.data, 0, bufferSize);

    /* Build the xCoords as a compressed point.
     */
    bufD0 = decCtx->privateValue.data + primeLen2;
    bufD1 = bufD0 + paramData->primeP.len + 1;

    offset =
      paramData->primeP.len - keyData->bbKeyInfo.privatePointD0.xCoord.len;
    index = keyData->bbKeyInfo.privatePointD0.yCoord.len - 1;
    bufD0[0] = keyData->bbKeyInfo.privatePointD0.yCoord.data[index];
    bufD0[0] &= 1;
    bufD0[0] += 2;
    Z2Memcpy (
      bufD0 + offset + 1, keyData->bbKeyInfo.privatePointD0.xCoord.data,
      keyData->bbKeyInfo.privatePointD0.xCoord.len);

    offset =
      paramData->primeP.len - keyData->bbKeyInfo.privatePointD1.xCoord.len;
    index = keyData->bbKeyInfo.privatePointD1.yCoord.len - 1;
    bufD1[0] = keyData->bbKeyInfo.privatePointD1.yCoord.data[index];
    bufD1[0] &= 1;
    bufD1[0] += 2;
    Z2Memcpy (
      bufD1 + offset + 1, keyData->bbKeyInfo.privatePointD1.xCoord.data,
      keyData->bbKeyInfo.privatePointD1.xCoord.len);

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = bb1PrivateKeyImportFromPoints (
      decCtx->privateValue.data, primeLen2, &(decCtx->privateValue.len),
      bufD0, bufD1, (int)(paramData->primeP.len + 1), decCtx->bbCtx);

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, (VtLibCtx)libCtx, status, errorType, fnctLine,
    "BBType1IBEPriDecryptInit", (char *)0)

  return (status);
}

int BBType1IBEPriDecryptUpdate (
   VoltAlgorithmObject *algObj,
   VtRandomObject random,
   unsigned char *dataToDecrypt,
   unsigned int dataToDecryptLen,
   unsigned char *decryptedData
   )
{
  int status;
  unsigned int callNum, outputLen;
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBBType1IBECtx *ibeCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);
  VoltSurrenderCtx *surrCtx = (VoltSurrenderCtx *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* If there's a surrender ctx, call the Surrender function.
     */
    VOLT_GET_OBJECT_SURR_CTX (surrCtx, algObj);
    VOLT_CALL_SURRENDER (
      surrCtx, VT_SURRENDER_FNCT_BB_TYPE1_IBE_DECRYPT, 0, 1)

    /* If we reach this point in the code, the buffer is big enough.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    callNum = 1;
    status = bb1RawDecrypt (
      decryptedData, cipherCtx->plainBlockSize, &outputLen,
      ibeCtx->privateValue.data, ibeCtx->privateValue.len,
      dataToDecrypt, dataToDecryptLen, surrCtx,
      VT_SURRENDER_FNCT_BB_TYPE1_IBE_DECRYPT, &callNum, ibeCtx->bbCtx);

    /* If there's a surrender ctx, call it for the last time.
     */
    if (status == 0)
    {
      VOLT_CALL_SURRENDER (
        surrCtx, VT_SURRENDER_FNCT_BB_TYPE1_IBE_DECRYPT, 0, 0)
    }

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, algObj->voltObject.libraryCtx, status, 0, fnctLine,
    "BBType1IBEPriDecryptUpdate", (char *)0)

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品久久嫩草网站秘色| 免费在线观看成人| 久久夜色精品国产欧美乱极品| 在线观看日韩精品| 99久久婷婷国产精品综合| 国精产品一区一区三区mba桃花 | 日韩精品一级二级| 亚洲一区精品在线| 亚洲图片欧美一区| 午夜伊人狠狠久久| 日本vs亚洲vs韩国一区三区二区| 午夜视频在线观看一区二区三区| 亚洲卡通动漫在线| 亚洲午夜av在线| 日韩精品成人一区二区三区 | 亚洲一区二区综合| 亚洲一区二区五区| 亚洲国产成人av好男人在线观看| 天堂精品中文字幕在线| 丝袜美腿亚洲综合| 国产真实乱偷精品视频免| 成人午夜免费电影| 在线精品亚洲一区二区不卡| 欧美亚洲国产bt| 日韩一区和二区| 欧美经典一区二区三区| 中文字幕一区在线观看视频| 亚洲精品乱码久久久久久久久| 亚洲一区精品在线| 麻豆国产91在线播放| 99热精品一区二区| 欧美日韩免费一区二区三区视频 | 这里只有精品视频在线观看| 亚洲精品一区二区三区99| 国产精品白丝在线| 一区二区三区四区在线免费观看| 午夜欧美视频在线观看| 国产原创一区二区| 色诱视频网站一区| 91精品国产综合久久香蕉麻豆| 欧美精品一区二区不卡| 自拍偷拍亚洲综合| 久久99精品一区二区三区| 99v久久综合狠狠综合久久| 欧美一区二区在线不卡| 国产精品乱码一区二区三区软件 | 日韩欧美一区二区视频| 中文字幕日韩一区| 久久精品国产一区二区三区免费看| 成人午夜精品在线| 欧美成人bangbros| 亚洲成人手机在线| 99久久婷婷国产综合精品电影| 欧美成人一级视频| 亚洲综合成人在线视频| 成人国产亚洲欧美成人综合网 | 天天综合色天天| 激情综合五月天| 欧美男生操女生| 亚洲乱码日产精品bd| 成人午夜免费av| 2欧美一区二区三区在线观看视频| 午夜成人免费视频| 色综合久久中文综合久久97 | 成人毛片在线观看| 久久一二三国产| 日本成人在线不卡视频| 欧美亚洲国产一区二区三区 | 欧美日韩一区二区三区不卡| 国产精品护士白丝一区av| 久久99精品久久只有精品| 欧美日韩成人在线| 亚洲午夜精品17c| 色综合av在线| 一区二区三区四区不卡在线| www.亚洲人| 欧美国产一区二区在线观看| 免费看日韩精品| 欧美一区二区网站| 日本女人一区二区三区| 欧美日本一区二区三区四区| 亚洲综合偷拍欧美一区色| 91麻豆国产在线观看| 亚洲精品一二三| 日本精品免费观看高清观看| 一区二区三区欧美视频| 欧美午夜理伦三级在线观看| 亚洲电影一区二区三区| 欧美精品丝袜中出| 美女网站在线免费欧美精品| 亚洲精品一区二区三区香蕉| 国产精品综合一区二区三区| 亚洲天堂成人在线观看| 99久久免费视频.com| 一区二区三区在线免费观看 | 青椒成人免费视频| 精品国内二区三区| av中文一区二区三区| 悠悠色在线精品| 欧美日本视频在线| 九九**精品视频免费播放| 久久免费电影网| 99re免费视频精品全部| 午夜日韩在线电影| 久久精品免费在线观看| 91免费观看在线| 免费在线看成人av| 国产精品久久久久久久久图文区 | 欧美亚洲愉拍一区二区| 午夜在线电影亚洲一区| 久久精品夜色噜噜亚洲aⅴ| 91视频免费观看| 麻豆精品国产91久久久久久| 国产精品免费视频一区| 欧美日韩国产高清一区二区三区 | 欧美妇女性影城| 国产精品一区二区三区99| 亚洲男人电影天堂| 欧美成人bangbros| 91国产免费看| 国产精品亚洲午夜一区二区三区 | 日韩亚洲欧美成人一区| 成人av综合在线| 看片网站欧美日韩| 亚洲色图欧美在线| 久久尤物电影视频在线观看| 色94色欧美sute亚洲线路一ni| 天堂影院一区二区| 亚洲日本va午夜在线影院| 久久影院视频免费| 777奇米四色成人影色区| 99久久国产综合精品色伊| 久久精品理论片| 午夜成人免费电影| 亚洲天堂网中文字| 久久女同互慰一区二区三区| 欧美在线观看视频在线| 成人性生交大片免费看中文| 日本不卡一二三| 一二三四区精品视频| 亚洲国产激情av| 久久综合五月天婷婷伊人| 日韩一区二区麻豆国产| 欧美日韩国产一区| 色诱视频网站一区| 成人午夜视频福利| 国产a级毛片一区| 国产一区 二区| 韩国成人精品a∨在线观看| 日韩高清一级片| 偷拍一区二区三区| 午夜私人影院久久久久| 亚洲成人福利片| 亚洲国产成人av好男人在线观看| 亚洲免费av观看| 亚洲午夜三级在线| 亚洲男帅同性gay1069| 亚洲最色的网站| 亚洲1区2区3区视频| 亚洲1区2区3区4区| 强制捆绑调教一区二区| 久久99这里只有精品| 精品在线免费观看| 麻豆精品精品国产自在97香蕉| 麻豆91在线看| 国产成人在线影院| 成人av电影在线观看| 色综合久久六月婷婷中文字幕| 色婷婷狠狠综合| 欧美精品电影在线播放| 日韩欧美亚洲另类制服综合在线 | 美女视频免费一区| 精品一区二区国语对白| 国产激情视频一区二区在线观看 | 国产精品视频一二三| 国产精品国产三级国产aⅴ入口| 亚洲欧洲日韩一区二区三区| 一区二区成人在线观看| 日本欧美一区二区三区乱码| 免费成人av在线| 岛国精品在线播放| 在线看日本不卡| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品亚洲成人| 99久久久精品免费观看国产蜜| 在线视频综合导航| 欧美久久久一区| www国产成人免费观看视频 深夜成人网| 精品日韩一区二区| 中文字幕的久久| 亚洲综合男人的天堂| 激情小说欧美图片| 在线免费观看视频一区| 欧美大片在线观看一区| 亚洲啪啪综合av一区二区三区| 青青草国产精品亚洲专区无| 99久久精品99国产精品| 欧美成人精品3d动漫h| 曰韩精品一区二区|