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

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

?? browsertoken.cpp

?? IBE是一種非對稱密碼技術
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
          return 0;
        else
          goto NextNode;
      }    

      if (strcmp ( (const char *)node->path, (const char *)location) == 0)
        return 0;

NextNode :
      tempNode = node;
      node = node->next;
    }
  }

  /* The location doesn't exist so we need to create and add it
  */
  len = 0;
  if (location != (unsigned char *)0)
    len = (int)strlen ( (const char *)location) + 1;

  bufferSize = len + sizeof (StorageStatus) ;
  temp = (StorageStatus *)malloc (bufferSize);
  if (temp == (StorageStatus *)0)
    return VT_ERROR_MEMORY;

  ptr = (unsigned char *)temp;
  offset = sizeof (StorageStatus);  
  temp->requestStatus = status;
  temp->next = (StorageStatus *)0;
  temp->path = (unsigned char *)0;
  if (location != (unsigned char *)0)
  {
    memcpy (ptr + offset, location, len);  
    temp->path = ptr + offset; 
  }

  if (*storeList == (StorageStatus *)0) 
  {
    *storeList = temp;
    return 0;
  }

  /* We have to add this location to the end of the list
  */
  node = *storeList;
  while (node->next != (StorageStatus *)0)
    node = node->next;

  node->next = temp;

  return 0;
}

int GetRequestStatusForLocation (
  StorageStatus *storeList, 
  unsigned char *location)
{
  StorageStatus *node ;
  if (storeList == (StorageStatus *)0)
    return STORAGE_STATUS_PENDING;

  node = storeList;
  do
  {
    /* If one is NULL and the other is not, return 0.
     * if both of them are null return 1
     */
    if (node->path == (unsigned char *)0 ||
      location == (unsigned char *)0)
    {
      if (location == node->path)
        return node->requestStatus;

      goto NEXT_NODE;
    }

    /* both of the paths are non NULL. So do a string comparision
     */
    if (strcmp ((const char *)node->path , (const char *)location) == 0)
      return node->requestStatus;

NEXT_NODE :
    node = node->next;

  } while (node != (StorageStatus *)0) ;

  return STORAGE_STATUS_PENDING;
}

void FreeCompletedLocationList (StorageStatus *storeList)
{
  StorageStatus *node, *preNode ;

  if (storeList == (StorageStatus *)0)
    return ;

  node = preNode = storeList;
  while (node != (StorageStatus *)0)
  {
    node = preNode->next;
    free (preNode);
    preNode = node;
  }
}

int FulfillClientRequests (
  VtLibCtx libCtx, 
  VtMpIntCtx mpIntCtx,
  VtStorageCtx storageCtx, 
  VtTransportCtx transportCtx,
  VtIdentityObject idObj,
  icServerResponseData *response)
{
  int status;  
  VoltFileCtx *fileCtx = (VoltFileCtx *)0;
  VoltStorageCtx *ctx = (VoltStorageCtx *)storageCtx;
  VoltIdentityObject *obj = (VoltIdentityObject *)0;
  VtParameterObject dsaParamObj = (VtParameterObject)0;
  VtKeyObject dsaPubKey = (VtKeyObject)0;
  VtKeyObject dsaPriKey = (VtKeyObject)0;  
  VtKeyObject ibePriKey = (VtKeyObject)0;  
  VtRandomObject random = (VtRandomObject)0;
  VtCertRequestObject certReq = (VtCertRequestObject)0;
  VtCertObject signingCert = (VtCertObject)0;   

  obj = (VoltIdentityObject *)idObj;
  do
  {
    /* Store the auth token to the client storage if it is not null.
     */	
    if (response->authToken != (char *)0)
    {
      status = VoltClientStoreAuthToken (
        storageCtx, obj->district, (unsigned char *)response->authToken);   	
      if (status != 0)
        break;
    }

    /* For client we need to create a new DSA key pair and request
     * private key and signing cert.
     */
    /* First create all the required objects
     */
    status = VtCreateRandomObject (
      libCtx, VtRandomImplOpenSSLAutoSeed, (Pointer)mpIntCtx, &random);
    if (status != 0)
      break;
    status = GetFixedDsaParams (libCtx, mpIntCtx, &dsaParamObj);
    if (status != 0)
      break;      
    status = BuildDsaKeyPair (
      libCtx, mpIntCtx, random, dsaParamObj, &dsaPubKey, &dsaPriKey);
    if (status != 0)
      break;
    status = VtCreateCertRequestObject (
      libCtx, VtCertRequestImplMpCtx, (Pointer)mpIntCtx, &certReq);
    if (status != 0)
      break;  
    status = VtGenerateCertRequest (
      idObj, dsaPubKey, dsaPriKey, VtCertRequestTypeP10DSA,
      (Pointer)random, certReq);      
    if (status != 0)
      break;  

    /* Get the private key.
    */
    status = VtCreateKeyObject (
      libCtx, VtKeyImplMpCtx, (Pointer)mpIntCtx, &ibePriKey);
    if (status != 0)
      break;
    status = VtCreateCertObject (
      libCtx, VtCertImplMpCtx, (Pointer)mpIntCtx, &signingCert);
    if (status != 0)
      break;
    status = VtDownloadIBEPrivateKeyAndCert (
      idObj, (VtPolicyCtx)0, storageCtx, transportCtx,
      certReq, signingCert, ibePriKey);
    if (status != 0)
      break;
    status = VtStoreEntry (
      libCtx, VT_ENTRY_TYPE_SIGNING_PRI_KEY, 
      (Pointer)idObj, (Pointer)dsaPriKey, storageCtx);
    if (status != 0)
      break;
    status = VtStoreEntry (
      libCtx, VT_ENTRY_TYPE_IBE_PRI_KEY,
      (Pointer)idObj, (Pointer)ibePriKey, storageCtx);
    if (status != 0)
      break;
    status = VtStoreEntry (
      libCtx, VT_ENTRY_TYPE_CERTIFICATE,
      (Pointer)idObj, (Pointer)signingCert, storageCtx);

  } while (0);

  /* Destroy whatever we created
   */
  VtDestroyRandomObject (&random);
  VtDestroyCertRequestObject (&certReq);
  VtDestroyCertObject (&signingCert);
  VtDestroyParameterObject (&dsaParamObj);
  VtDestroyKeyObject (&ibePriKey);
  VtDestroyKeyObject (&dsaPubKey);
  VtDestroyKeyObject (&dsaPriKey);  

  return status;
}

int isClientRequestPending (
  VtLibCtx libraryCtx, 
  VtStorageCtx storageCtx,
  VtIdentityObject idObj, 
  int *result)
{
  int status;  
  unsigned int districtNameLen, fileNameLen, offset ;
  unsigned char filePath [MAX_FILE_PATH];
  VoltIdentityObject *obj = (VoltIdentityObject *)idObj;  
  VoltLibCtx *libCtx = (VoltLibCtx *)libraryCtx;
  VoltStorageCtx *ctx = (VoltStorageCtx *)storageCtx;
  VoltFileCtx *fileCtx = (VoltFileCtx *)0;  
  VoltFileHandle fileHandle = (VoltFileHandle)0;
  VoltDefaultStorageCtx *defStorageCtx;
  VtItem *getName = (VtItem *)0;
  unsigned char *fileName = (unsigned char *)0;
  unsigned char *districtName ;

  districtName = obj->district->qualDistrictName.data ;
  districtNameLen = obj->district->qualDistrictName.len;

  /* Get the File Ctx
  */
  defStorageCtx = (VoltDefaultStorageCtx *)ctx->localStorageCtx;
  fileCtx = (VoltFileCtx *)defStorageCtx->fCtx;

  *result = 0;
  do
  {
    /* Get the email from the identity
     */
    status = VtGetIdentityParam (idObj, VtIdentityParamCommonName, (Pointer *)&getName);
    if (status != 0)
      break;
    status = VoltGetFileNameFromValueAlloc (
      ctx, districtName, districtNameLen,
      (unsigned char *)0, 0, VOLT_FILE_NAME_VALUE_TYPE_ACTIVE_ENROLLMENT,
      &fileName, &fileNameLen);
    if (status != 0)
      break;

    offset = fileNameLen;
    Z2Memcpy (filePath, fileName, fileNameLen);
    filePath [offset] = '\\';
    offset++;
    Z2Memcpy (filePath + offset, getName->data, getName->len);
    offset += getName->len;
    filePath[offset] = 0;

    /* If the file with this path exists we have a pending request otherwise not
     */
    status = fileCtx->CtxOpenFile (
      fileCtx, &fileHandle, filePath, VOLT_FILE_MODE_READ_ONLY, 0600);
    if (status == VT_ERROR_FILE_DOES_NOT_EXIST)
    {
      status = 0;
      break;
    }

    /* Other errors pass on..
     */
    if (status != 0)
      break;

    *result = 1;

  } while (0);

   fileCtx->CtxCloseFile(fileCtx, &fileHandle);
   if (fileName != (unsigned char *)0)
     Z2Free (fileName);

   return status;
}

void DeleteClientRequestFile (
VtLibCtx libraryCtx, 
VtStorageCtx storageCtx, 
VtIdentityObject idObj)
{
  int status;  
  unsigned int districtNameLen, fileNameLen, offset ;
  unsigned char filePath [MAX_FILE_PATH];
  VoltIdentityObject *obj = (VoltIdentityObject *)idObj;  
  VoltLibCtx *libCtx = (VoltLibCtx *)libraryCtx;
  VoltStorageCtx *ctx = (VoltStorageCtx *)storageCtx;
  VoltFileCtx *fileCtx = (VoltFileCtx *)0;    
  VoltDefaultStorageCtx *defStorageCtx;
  VtItem *getName = (VtItem *)0;
  unsigned char *fileName = (unsigned char *)0;
  unsigned char *districtName ;

  districtName = obj->district->qualDistrictName.data ;
  districtNameLen = obj->district->qualDistrictName.len;

  /* Get the File Ctx
  */
  defStorageCtx = (VoltDefaultStorageCtx *)ctx->localStorageCtx;
  fileCtx = (VoltFileCtx *)defStorageCtx->fCtx;

  do
  {
    /* Get the email from the identity
     */
    status = VtGetIdentityParam (idObj, VtIdentityParamCommonName, (Pointer *)&getName);
    if (status != 0)
      break;
    status = VoltGetFileNameFromValueAlloc (
      ctx, districtName, districtNameLen,
      (unsigned char *)0, 0, VOLT_FILE_NAME_VALUE_TYPE_ACTIVE_ENROLLMENT,
      &fileName, &fileNameLen);
    if (status != 0)
      break;

    offset = fileNameLen;
    Z2Memcpy (filePath, fileName, fileNameLen);
    filePath [offset] = '\\';
    offset++;
    Z2Memcpy (filePath + offset, getName->data, getName->len);
    offset += getName->len;
    filePath[offset] = 0;

    fileCtx->CtxDeleteFile (fileCtx, (VoltFileHandle *)0, filePath);

  } while (0);
  

   if (fileName != (unsigned char *)0)
     Z2Free (fileName);
}

#ifdef  __cplusplus
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品超碰97尤物18| 精品国产人成亚洲区| 国产成人一区二区精品非洲| 日韩中文字幕91| 亚洲午夜激情网页| 亚洲影视在线观看| 视频在线在亚洲| 亚洲18色成人| 99精品视频在线观看免费| 国产成人av一区二区三区在线观看| 美女被吸乳得到大胸91| 免费xxxx性欧美18vr| 国产主播一区二区| heyzo一本久久综合| 91亚洲精品一区二区乱码| 色噜噜狠狠色综合欧洲selulu| 色综合网站在线| 日韩一区二区三区视频| 久久―日本道色综合久久| 国产精品五月天| 亚洲老司机在线| 美女网站色91| 成人网在线播放| 欧美三级三级三级爽爽爽| 欧美大片一区二区三区| 久久九九久久九九| 亚洲丝袜美腿综合| 久久国产精品99久久久久久老狼| 国产精品18久久久久久久久久久久| 成人免费毛片片v| 欧美高清激情brazzers| 国产亚洲精品aa| 偷拍自拍另类欧美| 国产成人精品免费| 在线观看不卡视频| 国产日产精品1区| 亚洲va在线va天堂| 丰满放荡岳乱妇91ww| 欧美性欧美巨大黑白大战| 欧美电视剧免费全集观看| 亚洲欧美日韩小说| 国产伦精品一区二区三区在线观看| www..com久久爱| 精品国产凹凸成av人网站| 综合激情成人伊人| 国产一区二区三区久久悠悠色av| 色噜噜狠狠色综合欧洲selulu| 久久久久久免费毛片精品| 亚洲一级二级在线| 国产91对白在线观看九色| 欧美顶级少妇做爰| 亚洲日本韩国一区| 岛国一区二区三区| 日韩一区二区电影| 亚洲国产精品精华液网站| 成人免费高清视频| 久久久久久久性| 日韩精品国产精品| 欧美私人免费视频| 亚洲视频在线一区| 懂色av一区二区在线播放| 精品国产一二三| 日本麻豆一区二区三区视频| 91麻豆国产自产在线观看| 日本一区二区三级电影在线观看| 丝袜a∨在线一区二区三区不卡| 一本久道久久综合中文字幕| 亚洲国产高清在线| 国产成人亚洲综合a∨婷婷 | 亚洲一区二区三区中文字幕在线| 丁香另类激情小说| 国产午夜精品理论片a级大结局 | 国产伦精品一区二区三区免费迷| 欧美午夜免费电影| 亚洲激情在线激情| 欧美性猛片xxxx免费看久爱| 自拍视频在线观看一区二区| 成人美女在线视频| 中文字幕亚洲一区二区va在线| 国产精品一级二级三级| 日本一区二区动态图| 成人av资源站| 亚洲制服丝袜一区| 在线播放一区二区三区| 免费观看一级欧美片| 日韩欧美一二三| 高清国产一区二区| 亚洲日韩欧美一区二区在线| 91成人网在线| 奇米色一区二区| 久久久www免费人成精品| 成人久久视频在线观看| 最新国产の精品合集bt伙计| 国产精品一区二区久久不卡| 中文字幕成人网| 国产麻豆精品一区二区| 欧美国产禁国产网站cc| 99久久综合精品| 一区二区三区免费观看| 欧美一区二区三区爱爱| 国产成人在线看| 亚洲国产毛片aaaaa无费看| 91精品国产综合久久精品app | 欧美一区二区三区免费大片| 久久黄色级2电影| 国产精品美女久久久久久| 色综合激情五月| 九九九久久久精品| 亚洲欧美日韩系列| 精品国产精品网麻豆系列| 99re这里只有精品6| 免费观看在线综合| 亚洲欧美偷拍卡通变态| 日韩小视频在线观看专区| 成人h动漫精品| 麻豆免费看一区二区三区| 国产精品久久三| 精品少妇一区二区三区在线视频| 99综合影院在线| 国产麻豆一精品一av一免费| 亚洲精品亚洲人成人网在线播放| 欧美sm极限捆绑bd| 欧美日韩不卡一区二区| 成人av电影在线网| 九色综合国产一区二区三区| 亚洲激情一二三区| 欧美国产精品久久| 久久亚洲私人国产精品va媚药| 在线中文字幕一区二区| 成人激情小说乱人伦| 久久爱另类一区二区小说| 亚洲成人激情自拍| 亚洲靠逼com| 中文字幕av一区二区三区高| 精品久久五月天| 日韩一级欧美一级| 欧美日韩国产成人在线免费| 成人av在线资源网| 高清国产午夜精品久久久久久| 久久综合综合久久综合| 亚洲成人动漫在线免费观看| 尤物在线观看一区| 亚洲女爱视频在线| 亚洲视频网在线直播| 风流少妇一区二区| 成人午夜视频网站| 九一久久久久久| 男女性色大片免费观看一区二区 | 亚洲欧美色综合| 久久精品亚洲国产奇米99| 精品久久久久久久久久久久包黑料 | 成人性色生活片免费看爆迷你毛片| 美国十次了思思久久精品导航| 午夜伦欧美伦电影理论片| 亚洲自拍偷拍麻豆| 午夜视频一区二区三区| 亚洲综合免费观看高清完整版在线 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美激情一区在线| www久久久久| 26uuu另类欧美亚洲曰本| 日韩精品在线一区二区| 91精品国产欧美日韩| 亚洲欧洲日韩av| 亚洲一区二区三区自拍| 日一区二区三区| 乱中年女人伦av一区二区| 麻豆91精品91久久久的内涵| 久久不见久久见中文字幕免费| 激情综合网av| 91在线视频观看| 欧美日韩亚洲高清一区二区| 欧美一区二区三区在线观看视频| 日韩免费观看高清完整版 | 色婷婷综合久久久中文字幕| 高清不卡一区二区| 91麻豆国产福利在线观看| 欧美视频一区二| 日韩一区二区三| 欧美激情艳妇裸体舞| 亚洲欧美另类在线| 日本亚洲欧美天堂免费| 国产高清精品网站| 在线亚洲人成电影网站色www| 9191久久久久久久久久久| 久久久99免费| 亚洲高清在线精品| 成人午夜视频福利| 欧美老人xxxx18| 国产色婷婷亚洲99精品小说| 亚洲精品写真福利| 国产一区二区三区电影在线观看| 成人国产精品免费观看视频| 欧美日韩国产精品成人| 中文字幕av一区二区三区| 午夜精品aaa| caoporen国产精品视频| 国产精品理论片在线观看| 亚洲免费观看视频| 国产在线观看一区二区|