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

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

?? ibecacheimpl.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 4 頁
字號:
  unsigned int count;
  VoltIBECacheCtx *ctx = (VoltIBECacheCtx *)ibeCacheCtx;
  VoltIBELocalCache *cache = (VoltIBELocalCache *)(ctx->localCtx);
  VoltLibCtx *libCtx = (VoltLibCtx *)(ctx->voltObject.libraryCtx);
  VoltIBECacheEntry *entry;
  VoltIBECacheEntry *previous;
  VoltIBECacheEntry *next;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Acquire the cache lock to syncronize access */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = ctx->LockIBECache(ibeCacheCtx);
    if (status != 0)
      break;
    
    lockAcquired = 1;
    
    /* Run through the list, counting the entries until the count equals
     * the index.
     */
    entry = cache->cacheList;
    count = 0;
    while (entry != (VoltIBECacheEntry *)0)
    {
      if (index == count)
        break;
      entry = (VoltIBECacheEntry *)(entry->nextEntry);
      count++;
    }

    /* If entry is NULL, there is no entry at the requested index.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_NO_ELEMENT_AT_INDEX;
    if (entry == (VoltIBECacheEntry *)0)
      break;

    /* If the referenceCount is not 0, someone still has this "checked
     * out".
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_DELETE;
    if (entry->referenceCount != 0)
      break;

    /* Link the two entries that surrounded this one. If this is the
     * first in the list, make sure the next in the list becomes the
     * first.
     */
    previous = (VoltIBECacheEntry *)(entry->previousEntry);
    next = (VoltIBECacheEntry *)(entry->nextEntry);

    if (previous != (VoltIBECacheEntry *)0)
      previous->nextEntry = (Pointer)next;
    else
      cache->cacheList = next;

    if (next != (VoltIBECacheEntry *)0)
      next->previousEntry = (Pointer)previous;

    /* Call the appropriate Del.
     */
    if (entry->ctxType == VOLT_IBE_CTX_TYPE_BF)
      bfDel ((bf_context_t *)(entry->theCtx));
    else
      bb1Del ((bb1_context_t *)(entry->theCtx));

    if (entry->element.data != (unsigned char *)0)
      Z2Free (entry->element.data);
    if (entry->reference.data != (unsigned char *)0)
      Z2Free (entry->reference.data);

    Z2Free (entry);

    status = 0;

  } while (0);

  if (lockAcquired)
  {
    status2 = ctx->UnlockIBECache(ibeCacheCtx);
    if (status == 0)
    {
      VOLT_SET_FNCT_LINE (fnctLine)
      status = status2;
    }
  }

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, ibeCacheCtx, status, 0, errorType,
    (char *)0, "VoltDeleteIBECacheEntry", fnctLine, (char *)0)

  return (status);
}

int VoltLockIBECache(
   Pointer ibeCacheCtx
)
{
  int status;
  VoltIBECacheCtx *ctx = (VoltIBECacheCtx *)ibeCacheCtx;
  VoltIBELocalCache *cache = (VoltIBELocalCache *)(ctx->localCtx);
  VoltLibCtx *libCtx = (VoltLibCtx *)(ctx->voltObject.libraryCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)
  
  VOLT_SET_FNCT_LINE (fnctLine)
  status = Z2AcquireLock(cache->lock);
  
  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, ibeCacheCtx, status, 0, 0,
    (char *)0, "VoltLockIBECache", fnctLine, (char *)0)

  return (status);
}

int VoltUnlockIBECache(
   Pointer ibeCacheCtx
)
{
  int status;
  VoltIBECacheCtx *ctx = (VoltIBECacheCtx *)ibeCacheCtx;
  VoltIBELocalCache *cache = (VoltIBELocalCache *)(ctx->localCtx);
  VoltLibCtx *libCtx = (VoltLibCtx *)(ctx->voltObject.libraryCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)
  
  VOLT_SET_FNCT_LINE (fnctLine)
  status = Z2ReleaseLock(cache->lock);
  
  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, ibeCacheCtx, status, 0, 0,
    (char *)0, "VoltUnlockIBECache", fnctLine, (char *)0)

  return (status);
}

void VoltIBECacheCtxDestroy (
   Pointer obj,
   Pointer ctx
   )
{
  VoltIBECacheCtx *cacheCtx;
  VoltIBELocalCache *cache;
  VoltLibCtx *libCtx;
  VoltIBECacheEntry *entry;
  VoltIBECacheEntry *nextEntry;

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

  cacheCtx = (VoltIBECacheCtx *)obj;
  libCtx = (VoltLibCtx *)(cacheCtx->voltObject.libraryCtx);
  cache = (VoltIBELocalCache *)(cacheCtx->localCtx);

  /* For each of the entries, free the memory allocated.
   */
  nextEntry = cache->cacheList;
  while (nextEntry != (VoltIBECacheEntry *)0)
  {
    entry = nextEntry;
    nextEntry = (VoltIBECacheEntry *)(entry->nextEntry);

    if (entry->ctxType == VOLT_IBE_CTX_TYPE_BF)
      bfDel ((bf_context_t *)(entry->theCtx));
    else
      bb1Del ((bb1_context_t *)(entry->theCtx));

    if (entry->element.data != (unsigned char *)0)
      Z2Free (entry->element.data);
    if (entry->reference.data != (unsigned char *)0)
      Z2Free (entry->reference.data);

    Z2Free (entry);
  }

  /* Free the cache lock.
   */
  Z2DestroyLock(&cache->lock);
  
  /* Free the shell.
   */
  Z2Free (ctx);
}

static int VoltBuildCacheElementBF (
   VoltIBECacheCtx *ctx,
   VoltIBELocalCache *cache,
   VoltIBECacheEntry *entry,
   unsigned char *element,
   unsigned int bufferSize,
   unsigned int *elementLen
   )
{
  int status;
  unsigned int index, primeSize, subprimeSize, accelCount, sizeNeeded, offset;
  VoltLibCtx *libCtx = (VoltLibCtx *)(ctx->voltObject.libraryCtx);
  bf_context_t *bfCtx = (bf_context_t *)(entry->theCtx);
  VtBFType1IBEParamInfo *theParams = (VtBFType1IBEParamInfo *)0;
  z_t **zTableX, **zTableY;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* We'll need the params and the acceleration table. Here are the
     * params.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltBuildIBEParamsFromBfCtx (libCtx, bfCtx, &theParams);
    if (status != 0)
      break;

    /* The buffer we build will contain the following.
     *   flag || primeSize || subPrimeSize || accelCount ||
     *   prime || subPrime || baseX || baseY || pubX || pubY ||
     *   accelTable
     * The flag indicates whether this is BF or BB.
     * Each element, except for the subPrime, will be primeSize bytes
     * big, with prepended 00 bytes if necessary.
     * The accelCount is the number of pairs, not a byte length
     */
    primeSize = theParams->curve.primeP.len;
    subprimeSize = theParams->curve.subprimeQ.len;
    accelCount = (unsigned int)(bfCtx->common->mul->m);

    /* The buffer will need to contain 1 subprimeSize value plus
     * (accelCount * 2) + 5  primeSize values, plus 3 4-byte values
     * (the sizes and count) plus two bytes for the flag.
     */
    sizeNeeded = (accelCount * 2) * primeSize;
    sizeNeeded += (5 * primeSize);
    sizeNeeded += subprimeSize;
    sizeNeeded += 14;

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_BUFFER_TOO_SMALL;
    *elementLen = sizeNeeded;
    if (bufferSize < sizeNeeded)
      break;

    /* Write the
     *   flag || primeSize || subPrimeSize || accelCount ||
     */
    PlaceIntegerBE (element, VT_IBE_CACHE_ENTRY_BF_TYPE1, 2);
    PlaceIntegerBE (element + 2, primeSize, 4);
    PlaceIntegerBE (element + 6, subprimeSize, 4);
    PlaceIntegerBE (element + 10, accelCount, 4);

    /* Now start placing the values into the buffer.
     */
    offset = 14;
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->curve.primeP.data,
      theParams->curve.primeP.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->curve.subprimeQ.data,
      theParams->curve.subprimeQ.len, subprimeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->curve.basePointG.xCoord.data,
      theParams->curve.basePointG.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->curve.basePointG.yCoord.data,
      theParams->curve.basePointG.yCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointP.xCoord.data,
      theParams->pubPointP.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointP.yCoord.data,
      theParams->pubPointP.yCoord.len, primeSize, element + offset);

    /* Place the acceleration table.
     */
    zTableX = bfCtx->common->mul->prex;
    zTableY = bfCtx->common->mul->prey;
    for (index = 0; index < accelCount; ++index)
    {
      offset += PlaceBuffer (
        libCtx, zTableX[index], (unsigned char *)0, 0, primeSize,
        element + offset);
      offset += PlaceBuffer (
        libCtx, zTableY[index], (unsigned char *)0, 0, primeSize,
        element + offset);
    }

    status = 0;

  } while (0);

  VoltDemolishIBEParams (libCtx, &theParams);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, ctx, status, 0, errorType,
    (char *)0, "VoltBuildCacheElementBF", fnctLine, (char *)0)

  return (status);
}

static int VoltBuildCacheElementBB (
   VoltIBECacheCtx *ctx,
   VoltIBELocalCache *cache,
   VoltIBECacheEntry *entry,
   unsigned char *element,
   unsigned int bufferSize,
   unsigned int *elementLen
   )
{
  int status;
  unsigned int index, indexT, sizeNeeded, offset;
  unsigned int primeSize, subprimeSize, accelCount;
  VoltLibCtx *libCtx = (VoltLibCtx *)(ctx->voltObject.libraryCtx);
  bb1_context_t *bbCtx = (bb1_context_t *)(entry->theCtx);
  VtBBType1IBEParamInfo *theParams = (VtBBType1IBEParamInfo *)0;
  mul1_t *theMul;
  z_t **zTableX, **zTableY;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* We'll need the params and the acceleration table. Here are the
     * params.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltBuildIBEParamsFromBbCtx (libCtx, bbCtx, &theParams);
    if (status != 0)
      break;

    /* The buffer we build will contain the following.
     *   flag || primeSize || subPrimeSize || accelCount ||
     *   prime || subPrime || baseX || baseY ||
     *   pubAlphaX || pubAlphaY || pubBetaX || pubBetaY ||
     *   pubGammaX || pubGammaY ||
     *   accelTableG || accelTableG1 || accelTableG3
     * The flag indicates whether this is BF or BB.
     * Each element, except for the subPrime, will be primeSize bytes
     * big, with prepended 00 bytes if necessary.
     * The accelCount is the number of pairs, not a byte length.
     * There are three acceleration tables, each with accelCount pairs.
     */
    primeSize = theParams->primeP.len;
    subprimeSize = theParams->subprimeQ.len;
    accelCount = (unsigned int)(bbCtx->common->mulg->m);

    /* The buffer will need to contain 1 subprimeSize value plus
     * (accelCount * 2  * 3) + 9  primeSize values, plus 3 4-byte values
     * (the sizes and count) plus two bytes for the flag.
     */
    sizeNeeded = (accelCount * 6) * primeSize;
    sizeNeeded += (9 * primeSize);
    sizeNeeded += subprimeSize;
    sizeNeeded += 14;

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_BUFFER_TOO_SMALL;
    *elementLen = sizeNeeded;
    if (bufferSize < sizeNeeded)
      break;

    /* Write the
     *   flag || primeSize || subPrimeSize || accelCount ||
     */
    PlaceIntegerBE (element, VT_IBE_CACHE_ENTRY_BB_TYPE1, 2);
    PlaceIntegerBE (element + 2, primeSize, 4);
    PlaceIntegerBE (element + 6, subprimeSize, 4);
    PlaceIntegerBE (element + 10, accelCount, 4);

    /* Now start placing the values into the buffer.
     */
    offset = 14;
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->primeP.data,
      theParams->primeP.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->subprimeQ.data,
      theParams->subprimeQ.len, subprimeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->basePointG.xCoord.data,
      theParams->basePointG.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->basePointG.yCoord.data,
      theParams->basePointG.yCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointAlpha.xCoord.data,
      theParams->pubPointAlpha.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointAlpha.yCoord.data,
      theParams->pubPointAlpha.yCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointBeta.xCoord.data,
      theParams->pubPointBeta.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointBeta.yCoord.data,
      theParams->pubPointBeta.yCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointGamma.xCoord.data,
      theParams->pubPointGamma.xCoord.len, primeSize, element + offset);
    offset += PlaceBuffer (
      libCtx, (z_t *)0, theParams->pubPointGamma.yCoord.data,
      theParams->pubPointGamma.yCoord.len, primeSize, element + offset);

    /* Place the acceleration tables.
     */
    for (indexT = 0; indexT < 3; ++indexT)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜理伦三级在线观看| 99国产精品国产精品毛片| 在线播放中文一区| 天天影视涩香欲综合网| 欧美一区二区三区影视| 免费在线观看日韩欧美| 2022国产精品视频| 成人激情综合网站| 亚洲午夜在线观看视频在线| 日韩免费视频一区二区| 国产91精品一区二区麻豆网站| 国产精品麻豆网站| 欧美在线观看视频在线| 日本aⅴ免费视频一区二区三区| www成人在线观看| 一本久久综合亚洲鲁鲁五月天 | 97se亚洲国产综合在线| 一区二区国产盗摄色噜噜| 欧美一区在线视频| 粉嫩欧美一区二区三区高清影视| 一区二区三区91| 日韩一级黄色大片| 成人国产精品视频| 男人的天堂亚洲一区| 最新国产の精品合集bt伙计| 欧美精品一二三| 国产a精品视频| 日韩国产精品久久久| 国产欧美日韩中文久久| 在线播放中文字幕一区| 不卡的av电影在线观看| 天堂一区二区在线| 国产精品三级电影| 欧美一级一区二区| 色老头久久综合| 国产一区二区在线免费观看| 樱桃视频在线观看一区| 久久久一区二区| 9191国产精品| 一本一道波多野结衣一区二区| 91九色02白丝porn| 国产一区欧美一区| 日本怡春院一区二区| 亚洲欧美另类图片小说| 国产亚洲成年网址在线观看| 91精品久久久久久蜜臀| 在线观看视频欧美| 成人h动漫精品一区二区| 狠狠色综合播放一区二区| 午夜在线成人av| 亚洲三级在线免费| 欧美国产一区二区| 日韩免费观看2025年上映的电影| 在线中文字幕一区二区| 99九九99九九九视频精品| 国产老女人精品毛片久久| 日韩va欧美va亚洲va久久| 亚洲一区二区三区爽爽爽爽爽 | 色婷婷av一区| 国产成人在线看| 国产精品一二三四区| 极品少妇xxxx偷拍精品少妇| 日本在线不卡视频| 免费在线观看精品| 免费成人小视频| 日韩福利视频导航| 天天av天天翘天天综合网色鬼国产| 亚洲免费观看高清| 一区二区三区成人| 亚洲无人区一区| 亚洲风情在线资源站| 亚洲大片在线观看| 亚洲国产一区二区三区| 亚洲不卡在线观看| 三级成人在线视频| 亚洲福利国产精品| 婷婷六月综合网| 看电视剧不卡顿的网站| 久久精品国产网站| 国产一区二区美女诱惑| 国产精一品亚洲二区在线视频| 国产精品99久久久久| 不卡欧美aaaaa| 色婷婷av一区二区三区大白胸 | 97久久超碰国产精品| 99这里只有久久精品视频| 91九色02白丝porn| 91.xcao| 欧美大黄免费观看| 国产无一区二区| 日韩伦理av电影| 亚洲风情在线资源站| 久久精品国产99国产精品| 国产一区二区久久| www.久久精品| 欧美日韩国产乱码电影| 欧美va亚洲va香蕉在线| 久色婷婷小香蕉久久| 国产一区二区三区最好精华液| 国产高清久久久| 91福利社在线观看| 日韩欧美亚洲另类制服综合在线| 国产午夜亚洲精品羞羞网站| 亚洲啪啪综合av一区二区三区| 亚洲午夜在线电影| 狠狠狠色丁香婷婷综合激情| 成人av电影在线播放| 欧美日韩日本视频| 久久久久久久久久美女| 亚洲欧美日韩系列| 另类中文字幕网| 91在线视频观看| 日韩色在线观看| 亚洲精品亚洲人成人网| 麻豆久久久久久| 日本久久电影网| 日韩欧美精品在线| 国产精品福利一区| 美女一区二区在线观看| 色综合 综合色| 久久久影院官网| 亚洲成人激情社区| 99综合电影在线视频| 精品日韩一区二区三区免费视频| 17c精品麻豆一区二区免费| 免费看日韩精品| 91福利精品视频| 亚洲国产岛国毛片在线| 免费成人av在线播放| 色综合久久中文综合久久97| 精品美女被调教视频大全网站| 亚洲天堂av一区| 国产一区二三区| 91精品福利在线一区二区三区| 亚洲男人的天堂av| 国产成人精品亚洲777人妖| 欧美一区二区三区人| 亚洲久草在线视频| 丁香激情综合五月| 精品国产精品网麻豆系列| 亚洲图片欧美色图| 色伊人久久综合中文字幕| 中文字幕高清一区| 国产综合久久久久久鬼色 | 久久久www成人免费毛片麻豆| 亚洲综合一区二区三区| 成年人国产精品| 精品sm捆绑视频| 717成人午夜免费福利电影| 国产成人亚洲综合a∨婷婷图片 | 欧美aaa在线| 欧美日韩在线亚洲一区蜜芽| 亚洲欧美日韩一区| 成人性色生活片免费看爆迷你毛片| 日韩一区二区影院| 日韩精品成人一区二区三区| 欧美在线观看你懂的| 国产精品一区二区久久不卡 | 成人免费va视频| 久久网这里都是精品| 看电影不卡的网站| 日韩免费视频一区| 久久国产日韩欧美精品| 欧美电影免费提供在线观看| 日本va欧美va欧美va精品| 91精品国产综合久久久蜜臀粉嫩 | 国产在线视频一区二区| 日韩欧美一区二区不卡| 日韩和的一区二区| 88在线观看91蜜桃国自产| 亚洲午夜一区二区| 欧美精品1区2区3区| 视频在线观看一区| 日韩欧美在线网站| 蜜臂av日日欢夜夜爽一区| 日韩精品一区二区三区中文精品| 麻豆国产欧美一区二区三区| 欧美大片在线观看一区二区| 国产资源在线一区| 国产精品视频线看| 色屁屁一区二区| 日韩在线一区二区| 欧美α欧美αv大片| 国产一区二区在线观看免费 | 91看片淫黄大片一级在线观看| ...xxx性欧美| 欧美亚洲动漫另类| 免费高清视频精品| 国产亚洲欧洲一区高清在线观看| 豆国产96在线|亚洲| 国产v日产∨综合v精品视频| 亚洲欧洲成人精品av97| 欧美亚洲图片小说| 美女在线一区二区| 国产精品嫩草99a| 欧美在线观看你懂的| 久久国产视频网| 亚洲少妇30p| 欧美肥胖老妇做爰| 高清国产一区二区三区|