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

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

?? derhelp.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 2 頁
字號:
     */
    if ( (explicitTag != 0) && (derElement->explicitTag == 0) )
    {
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VoltGetNextDerElement (
        libCtx, encoding, encodingLen, 0, explicitTag, 0, derElement,
        bytesRead);
      if (status != 0)
        break;

      /* If the call couldn't find the entire EXPLICIT, we're done for
       * now.
       */
      if (derElement->complete == 0)
        break;

      encoding += *bytesRead;
      encodingLen -= *bytesRead;

      /* The info is currently stored with the regular tag fields, move
       * it to the explicit fields, then clear the regular fields.
       */
      derElement->explicitTag = derElement->tag;
      derElement->explicitLen = derElement->valueLen;
      derElement->tag = 0;
      derElement->elementLen = 0;
      derElement->valueLen = 0;
      derElement->totalLen = 0;
      derElement->complete = 0;

      if (encodingLen == 0)
        break;
    }

    /* If we don't have the tag and len yet, get them.
     */
    if (derElement->tag == 0)
    {
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = CollectTagAndLenRealloc (
        libCtx, encoding, encodingLen, &(derElement->element),
        &(derElement->elementSize), &(derElement->elementLen),
        &octetsRead, &complete);
      if (status != 0)
        break;

      *bytesRead += octetsRead;

      /* If it didn't finish, return.
       */
      if (complete == 0)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VoltDecodeTagAndLen (
        libCtx, derElement->element, derElement->elementLen,
        &(derElement->tag), &lengthLen, &lenLo, &lenHi, VOLT_LEN_LIMIT);
      if (status != 0)
        break;

      /* Expected tag?
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_INVALID_ENCODING;
      if (derElement->tag != expectedTag)
        break;

#if VT_64_BIT_LENGTH == 64
      derElement->valueLen = ((VtUInt64)lenHi) << 32;
      derElement->valueLen += (VtUInt64)lenLo;
      derElement->totalLen = (VtUInt64)(lengthLen + 1);
#else
      derElement->valueLen = (unsigned int)lenLo;
      derElement->totalLen = lengthLen + 1;
#endif

      /* If the value is not requested, we're done.
       */
      status = 0;
      derElement->complete = 1;
      if (valueFlag == 0)
        break;

      encoding += octetsRead;
      encodingLen -= octetsRead;

      /* The caller wants the value, the totalLen needs to reflect that.
       */
      derElement->totalLen += derElement->valueLen;
      derElement->complete = 0;

#if VT_64_BIT_LENGTH == 64
      /* If this is 64-bit lengths, we still limit the number of bytes
       * we'll store internally.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_INVALID_INPUT_LENGTH;
      if (derElement->totalLen > (VtUInt64)0xffffffff)
        break;
      status = 0;
#endif

      if (encodingLen == 0)
        break;
    }

    /* How many bytes do we need to copy?
     */
    octetsRead =
      (unsigned int)(derElement->totalLen - derElement->elementLen);
    if (encodingLen >= octetsRead)
      derElement->complete = 1;
    else
      octetsRead = encodingLen;

    *bytesRead += octetsRead;
    status = StoreElementData (libCtx, derElement, encoding, octetsRead);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, libCtx, 0, status, 0, errorType,
    (char *)0, "VoltGetNextDerElement", fnctLine, (char *)0)

  return (status);
}

void VoltResetDerElement (
   VoltDerElement *derElement
   )
{
  derElement->elementLen = 0;
  derElement->valueLen = 0;
  derElement->totalLen = 0;
  derElement->explicitLen = 0;
  derElement->explicitTag = 0;
  derElement->tag = 0;
  derElement->complete = 0;
}

static int StoreElementData (
   VoltLibCtx *libCtx,
   VoltDerElement *derElement,
   unsigned char *dataToStore,
   unsigned int dataToStoreLen
   )
{
  int status;
  unsigned int totalLen;
  unsigned char *buffer = (unsigned char *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* We need a buffer big enough to handle the data in the buffer
     * along with the new data.
     */
    totalLen = derElement->elementLen + dataToStoreLen;
    if (derElement->elementSize < totalLen)
    {
      status = VT_ERROR_MEMORY;
      VOLT_SET_FNCT_LINE (fnctLine)
      buffer = (unsigned char *)Z2Malloc (totalLen, VOLT_MEMORY_SENSITIVE);
      if (buffer == (unsigned char *)0)
        break;

      /* Copy the old into the new and destroy the old.
       */
      if (derElement->element != (unsigned char *)0)
      {
        Z2Memcpy (buffer, derElement->element, derElement->elementLen);
        Z2Free (derElement->element);
      }
      derElement->element = buffer;
      derElement->elementSize = totalLen;
    }

    /* Append new to end of old.
     */
    Z2Memcpy (
      derElement->element + derElement->elementLen,
      dataToStore, dataToStoreLen);
    derElement->elementLen += dataToStoreLen;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, (VtLibCtx)libCtx, status, VT_ERROR_TYPE_PRIMARY,
    fnctLine, "StoreElementData", (char *)0)

  return (status);
}

static int CollectTagAndLenRealloc (
   VoltLibCtx *libCtx,
   unsigned char *encoding,
   unsigned int encodingLen,
   unsigned char **buffer,
   unsigned int *bufferSize,
   unsigned int *bufferLen,
   unsigned int *bytesRead,
   unsigned int *complete
   )
{
  int status;
  unsigned int currentSize, newSize, currentLen, newLen;
  unsigned int index, offset, count, done;
  unsigned char *buf;
  unsigned char theOctets[10];
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    currentSize = *bufferSize;
    currentLen = *bufferLen;
    buf = *buffer;
    *bytesRead = 0;

    done = 0;
    newSize = currentSize;

    /* If there are any bytes in the caller-supplied buffer, copy them
     * into the local buffer.
     */
    for (index = 0; index < currentLen; ++index)
      theOctets[index] = buf[index];

    newLen = 0;
    status = 0;
    switch (currentLen)
    {
      case 0:
        /* Nothing has been collected so far.
         */
        theOctets[0] = encoding[0];
        encodingLen--;
        encoding++;
        newLen = 1;
        *bytesRead = 1;
        if (encodingLen == 0)
          break;

      case 1:
        /* We have the tag, but not the first length octet.
         */
        count = (unsigned int)encoding[0];
        theOctets[1] = encoding[0];
        encodingLen--;
        encoding++;
        newLen++;
        *bytesRead += 1;

        /* If the first length octet is <= 0x80, it is the only length
         * octet.
         */
        done = 1;
        if (count <= 0x80)
          break;
        done = 0;

        /* If the first length octet is > 0x80, it tells us how many
         * octets make up the length.
         */
        VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
        VOLT_SET_FNCT_LINE (fnctLine)
        status = VT_ERROR_INVALID_ENCODING;
        if ((count & 0xf0) != 0x80)
          break;
        if ((count & 0x0f) > 8)
          break;

        status = 0;
        if (encodingLen == 0)
          break;

      default:
        /* We have the tag and first length octet. How many bytes make
         * up the length?
         */
        count = (unsigned int)(theOctets[1]);
        count &= 0xf;

        /* Make sure that the current buffer does not already have the
         * expected number of bytes.
         */
        VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
        VOLT_SET_FNCT_LINE (fnctLine)
        status = VT_ERROR_INVALID_ENCODING;
        if (currentLen >= (count + 2))
          break;
        status = 0;

        /* If we already have some of the length octets, determine how
         * many we do need.
         */
        offset = 2;
        if (currentLen > 2)
        {
          count -= (currentLen - 2);
          offset += (currentLen - 2);
        }

        /* Do we have enough bytes in the encoding?
         */
        if (encodingLen >= count)
          done = 1;
        else
          count = encodingLen;

        newLen += count;

        /* Copy as many bytes as we can.
         */
        for (index = 0; index < count; ++index)
          theOctets[index + offset] = encoding[index];

        *bytesRead += count;
    }
    if (status != 0)
      break;

    /* Copy from the local buffer into the caller-supplied buffer.
     */
    if (currentSize < (currentLen + newLen))
    {
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_MEMORY;
      *buffer = (unsigned char *)Z2Realloc (*buffer, currentLen + newLen);
      if (*buffer == (unsigned char *)0)
        break;
      buf = *buffer;
      status = 0;

      newSize = currentLen + newLen;
    }

    for (index = 0; index < currentLen + newLen; ++index)
      buf[index] = theOctets[index];

  } while (0);

  *bufferSize = newSize;
  *bufferLen = currentLen + newLen;
  *complete = done;

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, libCtx, 0, status, 0, errorType,
    (char *)0, "CollectTagAndLenRealloc", fnctLine, (char *)0)

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合天天综合色| 久久综合久久99| 亚洲成人精品一区| 在线不卡免费欧美| 日本va欧美va欧美va精品| 欧美r级电影在线观看| 精品一区二区三区的国产在线播放| 精品免费日韩av| 国产不卡在线视频| 中文字幕中文字幕在线一区| 色狠狠av一区二区三区| 午夜精品久久久久久久蜜桃app| 91精品国产麻豆| 精品中文av资源站在线观看| 国产网站一区二区三区| 波多野结衣一区二区三区| 亚洲一二三区视频在线观看| 91精品国产综合久久福利软件| 韩日欧美一区二区三区| 亚洲蜜桃精久久久久久久| 欧美巨大另类极品videosbest| 精品在线免费视频| 中文字幕一区二区三区精华液| 欧美午夜精品理论片a级按摩| 久久机这里只有精品| 国产精品另类一区| 欧美一区中文字幕| 成+人+亚洲+综合天堂| 日韩**一区毛片| 国产精品久久久久一区 | 亚欧色一区w666天堂| 日韩欧美一级特黄在线播放| 不卡的电影网站| 免费日韩伦理电影| 综合欧美亚洲日本| 久久亚洲精品国产精品紫薇| 91免费版在线| 国产在线视视频有精品| 亚洲综合色噜噜狠狠| 久久精品视频一区| 欧美一区二区福利在线| 91免费视频网址| 国产在线精品国自产拍免费| 亚洲一区二区三区影院| 国产精品日日摸夜夜摸av| 欧美一区二区三区四区高清| 色老头久久综合| 成人午夜在线免费| 另类的小说在线视频另类成人小视频在线| 色综合天天综合网天天看片| 国内精品伊人久久久久av影院 | 欧美色图在线观看| 成人在线综合网| 国产精品99久久久久久久女警 | www.成人网.com| 极品尤物av久久免费看| 天天影视色香欲综合网老头| 中文字幕亚洲一区二区av在线| 久久综合色播五月| 欧美一区二区三区爱爱| 欧美日韩一区高清| 欧美在线视频你懂得| av电影天堂一区二区在线| 国产精品18久久久久久久久久久久| 亚洲a一区二区| 亚洲丶国产丶欧美一区二区三区| 亚洲欧美一区二区不卡| 国产精品高清亚洲| 国产精品日产欧美久久久久| 久久久国际精品| 久久只精品国产| 国产亚洲一区二区三区四区| 精品国产sm最大网站免费看| 欧美一级专区免费大片| 9191国产精品| 欧美一级高清片| 日韩一区二区三免费高清| 日韩一区二区三区四区| 日韩精品一区二区三区在线观看| 欧美一区二区日韩一区二区| 日韩手机在线导航| 久久综合九色综合97婷婷女人 | 亚洲精品成人在线| 亚洲欧美区自拍先锋| 亚洲男人的天堂网| 亚洲国产精品久久人人爱| 亚洲国产日韩在线一区模特| 亚洲福利电影网| 麻豆传媒一区二区三区| 国产综合成人久久大片91| 国产乱码精品1区2区3区| 成人午夜短视频| 91免费观看国产| 欧美一级久久久久久久大片| 亚洲精品一区二区三区蜜桃下载| 久久精品人人做| 最新高清无码专区| 亚洲成av人片在www色猫咪| 日韩在线观看一区二区| 久久精品噜噜噜成人av农村| 黑人巨大精品欧美黑白配亚洲| 丁香婷婷深情五月亚洲| 一本到不卡免费一区二区| 欧美一区二区三区在线看| 久久久精品一品道一区| 一区二区三区在线播放| 日韩专区中文字幕一区二区| 国产一区二区主播在线| 91社区在线播放| 日韩三级在线观看| 综合欧美一区二区三区| 日韩电影免费在线看| 粉嫩aⅴ一区二区三区四区五区| 一本到不卡免费一区二区| 欧美不卡激情三级在线观看| 国产精品美女久久久久久久久| 亚洲电影中文字幕在线观看| 国产中文字幕精品| 欧美午夜宅男影院| 国产精品污网站| 奇米一区二区三区| 99视频有精品| 精品久久久久99| 亚洲一区二区欧美| 豆国产96在线|亚洲| 欧美日韩视频专区在线播放| 国产精品网站在线观看| 麻豆成人免费电影| 欧美视频一区二区三区在线观看| 久久久久亚洲蜜桃| 天堂成人免费av电影一区| 波多野结衣中文字幕一区 | 在线电影欧美成精品| 欧美高清在线视频| 九九视频精品免费| 欧美日韩视频在线第一区| 国产欧美日本一区视频| 久久精品国产精品亚洲红杏| 色天使色偷偷av一区二区| 国产欧美日韩三级| 久久99国产精品尤物| 欧美午夜精品一区| 亚洲欧美日韩一区二区三区在线观看| 精品一区二区三区蜜桃| 91麻豆精品国产91久久久久久久久 | 中文在线一区二区| 日本成人中文字幕在线视频| 色老汉一区二区三区| 国产精品国产自产拍在线| 国产精品一区二区久久精品爱涩| 欧美精品 国产精品| 一级日本不卡的影视| 91美女片黄在线观看91美女| 欧美极品aⅴ影院| 国产精品影视天天线| 欧美成人video| 久久精品国产色蜜蜜麻豆| 欧美精品aⅴ在线视频| 亚洲3atv精品一区二区三区| 欧美在线制服丝袜| 亚洲韩国一区二区三区| 欧美制服丝袜第一页| 亚洲一区二区影院| 在线观看不卡视频| 亚洲最色的网站| 91福利小视频| 亚洲一区视频在线| 欧洲日韩一区二区三区| 亚洲一区中文日韩| 欧美日韩亚洲综合在线| 日韩国产高清影视| 91精品欧美久久久久久动漫| 丝袜脚交一区二区| 欧美一区二区日韩| 国产在线视频一区二区三区| 久久午夜色播影院免费高清| 激情六月婷婷综合| 国产精品久久看| 色狠狠桃花综合| 婷婷开心久久网| 欧美成人在线直播| 国产成a人无v码亚洲福利| 国产精品乱子久久久久| 一本色道久久综合精品竹菊| 亚洲精品菠萝久久久久久久| 欧美激情一区不卡| 在线观看av不卡| 美女久久久精品| 国产亚洲精品久| 色婷婷国产精品综合在线观看| 视频一区欧美精品| 久久久久国产成人精品亚洲午夜| 成人av电影免费在线播放| 一区二区三区不卡视频在线观看 | 欧美一区二区三区系列电影| 久久99国产乱子伦精品免费| 中日韩av电影| 欧美日韩国产一级二级| 国产精品一区二区久久精品爱涩| 国产精品不卡在线|