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

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

?? p7settype.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 3 頁
字號:
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltPkcs7ReadEnvCtx *readCtx = (VoltPkcs7ReadEnvCtx *)(obj->localCtx);
  VtPkcs7RecipientIndexInfo *indexInfo;
  VtKeyObject newKey = (VtKeyObject)0;
  VtIdentityObject getId;
  VtPolicyCtx policy;
  VtStorageCtx storage;
  VtTransportCtx transport;
  VtSurrenderCallback surrenderCtx;
  VtSurrenderCallback *surrenderToUse = (VtSurrenderCallback *)0;
  VoltSurrenderCtx *surrCtx;
  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 state must be VOLT_P7_STATE_ENV_READ_PREPARE_ENC.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if (obj->state != VOLT_P7_STATE_ENV_READ_PREPARE_ENC)
      break;

    /* This cannot be called if the ctx already contains a private key.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if ( (readCtx->priKey != (VtKeyObject)0) ||
         (readCtx->priKeyRef != (VtKeyObject)0) )
      break;

    /* The info should be a pointer to a VtPkcs7RecipientIndexInfo
     * struct.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    indexInfo = (VtPkcs7RecipientIndexInfo *)info;

    /* Get the identity object associated with the given index.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtGetIdentityListIdentity (
      readCtx->recipList, indexInfo->index, &getId);
    if (status != 0)
      break;

    policy = indexInfo->policyCtx;
    storage = indexInfo->storageCtx;
    transport = indexInfo->transportCtx;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCheckSupportObjects (
      obj->voltObject.libraryCtx, &policy, &storage,
      &transport, (VtCertVerifyCtx *)0, (VtVerifyFailureList *)0,
      (VtRandomObject *)0, (VtDerCoder ***)0, (unsigned int *)0,
      (VtIdentitySchemaDecode ***)0, (unsigned int *)0);
    if (status != 0)
      break;

    /* Create a key object into which the IBE private key will be
     * loaded.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateKeyObject (
      (VtLibCtx)libCtx, VtKeyImplMpCtx, (Pointer)(readCtx->mpCtx), &newKey);
    if (status != 0)
      break;

    if (obj->voltObject.surrenderCtx != (Pointer)0)
    {
      surrCtx = (VoltSurrenderCtx *)(obj->voltObject.surrenderCtx);
      surrenderCtx.Surrender = surrCtx->Surrender;
      surrenderCtx.appData = surrCtx->appData;
      surrenderCtx.AppDataCopy = surrCtx->AppDataCopy;
      surrenderCtx.AppDataFree = surrCtx->AppDataFree;
      surrenderToUse = &surrenderCtx;
    }

    /* Now obtain the private key for the given identity.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtObtainPrivateKeysAndCert (
      getId, (VtRandomObject)0, 0, policy, storage, transport,
      (VtKeyObject)0, (VtCertObject)0, newKey);
    if (status != 0)
      break;

    /* Now that we have a private key, set the reference so later on
     * code can check that value to know a pri key is available. Also,
     * set the chosenRecipient field, now that we know.
     */
    readCtx->priKey = newKey;
    readCtx->priKeyRef = readCtx->priKey;
    readCtx->chosenRecipient = indexInfo->index;

  } while (0);

  /* If there was no error, we're done.
   */
  if (status == 0)
    return (status);

  /* If there was an error, destroy the key object we (may have)
   * created and did not return.
   */
  VtDestroyKeyObject (&newKey);

  VOLT_LOG_ERROR_INFO (
    0, pkcs7Obj, status, 0, errorType,
    (char *)0, "VtPkcs7ParamRecipientIndex", fnctLine, (char *)0)

  return (status);
}

int VtPkcs7ParamRecipient (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltPkcs7ReadEnvCtx *readCtx = (VoltPkcs7ReadEnvCtx *)(obj->localCtx);
  VtPkcs7RecipientInfo *recipInfo;
  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 object must be set to read EnvelopedData.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->contentType != VOLT_PKCS7_ENVELOPED_DATA_READ)
      break;

    /* This cannot be called if the ctx already contains a private key.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if ( (readCtx->priKey != (VtKeyObject)0) ||
         (readCtx->priKeyRef != (VtKeyObject)0) ||
         (readCtx->specifiedIdentity != (VtIdentityObject)0) )
      break;

    /* The info should be a pointer to a VtPkcs7RecipientInfo
     * struct.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    recipInfo = (VtPkcs7RecipientInfo *)info;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (recipInfo->identity == (VtIdentityObject)0)
      break;
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (
      recipInfo->identity, VOLT_OBJECT_TYPE_IDENTITY))
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (recipInfo->priKey == (VtKeyObject)0)
      break;
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (recipInfo->priKey, VOLT_OBJECT_TYPE_KEY))
      break;

    /* Copy a reference to the key inside the object.
     */
    readCtx->priKeyRef = recipInfo->priKey;

    /* Clone the Identity object.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCloneObject (
      (Pointer)(recipInfo->identity), (Pointer *)&(readCtx->specifiedIdentity));

  } while (0);

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

  return (status);
}

int VtPkcs7ParamSignerList (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status, tStatus;
  unsigned int index, indexC, indexI, bufferSize, encodedIdLen;
  Pointer *getInfo;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltPkcs7ReadSignCtx *readCtx;
  VtIdentityList signerList = (VtIdentityList)0;
  VtIdentityObject newId = (VtIdentityObject)0;
  Asn1SignerInfo *signerInfo;
  VoltCertObject *signerCert;
  unsigned char *encodedId = (unsigned char *)0;
  VtCertObjectList msgCerts;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  bufferSize = 0;

  do
  {
    /* This param can Get only.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (flag == VOLT_PKCS7_SET_TYPE_FLAG)
      break;

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

    getInfo = (Pointer *)info;

    /* Get the info only if we're done reading SignedData.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if (obj->state != VOLT_P7_STATE_SIGN_READ_FINAL)
      break;

    readCtx = (VoltPkcs7ReadSignCtx *)(obj->localCtx);

    if (readCtx->signerList != (VtIdentityList)0)
    {
      *getInfo = (Pointer)(readCtx->signerList);
      status = 0;
      break;
    }

    /* Create an identity list object to which we'll add identities.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateIdentityList (
      (VtLibCtx)libCtx, VtIdentityListImplMpCtx,
      (Pointer)(readCtx->mpCtx), &signerList);
    if (status != 0)
      break;

    /* Run through all the SignerInfo's, collecting encodedId's at each
     * stop. Use the encodedId's to build identity objects.
     */
    msgCerts.certObjects = readCtx->msgCerts;
    msgCerts.count = readCtx->msgCertsCount;
    status = 0;
    for (index = 0; index < readCtx->signerInfosCount; ++index)
    {
      signerInfo = readCtx->signerInfos[index].signerInfo;

      tStatus = VoltFindCertByReference (
        libCtx, VOLT_FIND_CERT_BY_ISSUER_SERIAL,
        signerInfo->issuerSerial->issuerName->base.data,
        (unsigned int)(signerInfo->issuerSerial->issuerName->base.length),
        signerInfo->issuerSerial->serialNumber->data,
        (unsigned int)(signerInfo->issuerSerial->serialNumber->length),
        &indexC, &msgCerts, (VtCertObject *)&signerCert);
      if ( (tStatus != 0) || (signerCert == (VoltCertObject *)0) )
        continue;

      tStatus = VoltGetEncodedIdFromCert (
        (VtCertObject)signerCert, encodedId, bufferSize, &encodedIdLen);
      if (tStatus == VT_ERROR_BUFFER_TOO_SMALL)
      {
        VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
        VOLT_SET_FNCT_LINE (fnctLine)
        status = VT_ERROR_MEMORY;
        bufferSize = encodedIdLen;
        encodedId = (unsigned char *)Z2Realloc (encodedId, bufferSize);
        if (encodedId == (unsigned char *)0)
          break;

        status = 0;
        tStatus = VoltGetEncodedIdFromCert (
          (VtCertObject)signerCert, encodedId, bufferSize, &encodedIdLen);
      }
      if (tStatus != 0)
        continue;

      /* Create an identity object from the encodedID. The variable may
       * already be an object from a previous iteration.
       */
      VtDestroyIdentityObject (&newId);
      tStatus = VtCreateIdentityObject (
        (VtLibCtx)libCtx, VtIdentityImplMpCtx, (Pointer)(readCtx->mpCtx),
        &newId);
      if (tStatus != 0)
        continue;

      tStatus = VtDecodeIdentity (
        encodedId, encodedIdLen, readCtx->Decoders, readCtx->decoderCount,
        &indexI, newId);
      if (tStatus != 0)
        continue;

      /* Add this identity to the list.
       */
      tStatus = VtAddIdObjectToIdentityList (signerList, newId, &indexI);
    }

    /* Now that we have a list, return int.
     */
    readCtx->signerList = signerList;
    *getInfo = (Pointer)(readCtx->signerList);

    status = 0;

  } while (0);

  VtDestroyIdentityObject (&newId);
  if (encodedId != (unsigned char *)0)
    Z2Free (encodedId);

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

  /* If error, destroy what we created.
   */
  VtDestroyIdentityList (&signerList);

  VOLT_LOG_ERROR_INFO (
    0, pkcs7Obj, status, 0, errorType,
    (char *)0, "VtPkcs7ParamSignerList", fnctLine, (char *)0)

  return (status);
}

int VtPkcs7ParamSigningTime (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  Pointer *getInfo;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltPkcs7ReadSignCtx *readCtx;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This param can Get only.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (flag == VOLT_PKCS7_SET_TYPE_FLAG)
      break;

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

    getInfo = (Pointer *)info;

    /* Get the info only if we're done reading SignedData.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if (obj->state != VOLT_P7_STATE_SIGN_READ_FINAL)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    readCtx = (VoltPkcs7ReadSignCtx *)(obj->localCtx);
    if (readCtx->signerInfosCount == 0)
      break;

    // If multiple signers, check that all times the same?
    *getInfo = (Pointer)&(readCtx->signerInfos[0].signingTime);

    status = 0;

  } while (0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美视频一区二区三区| 久久久久青草大香线综合精品| 美女视频一区在线观看| 国产三级精品视频| 国产亚洲欧美日韩日本| 色综合久久88色综合天天6| 男男成人高潮片免费网站| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区系列电影| 92精品国产成人观看免费| 精品综合久久久久久8888| 一区二区三区不卡视频| 国产精品乱码一区二三区小蝌蚪| 日韩天堂在线观看| 欧美三级日韩三级| 91免费在线视频观看| 国产不卡视频一区二区三区| 麻豆成人综合网| 日本免费在线视频不卡一不卡二| 亚洲男人都懂的| 国产精品久久久久久久第一福利 | 色婷婷综合久久久久中文 | 欧美午夜精品免费| 成人免费毛片a| 国产成人精品亚洲日本在线桃色| 麻豆91精品视频| 日韩av一级电影| 日韩一区欧美二区| 亚洲成av人综合在线观看| 亚洲伦在线观看| 成人欧美一区二区三区| 国产精品久久久久毛片软件| 国产婷婷一区二区| 国产片一区二区| 国产无人区一区二区三区| 久久精品人人做人人爽97| 精品久久久久久久久久久院品网| 欧美一区二区精品| 欧美mv日韩mv国产网站app| 99久久精品99国产精品| 一区二区三区在线高清| 91麻豆精品国产91久久久久久 | 香蕉av福利精品导航 | 久久99国产精品久久| 亚洲一区二区成人在线观看| 亚洲视频你懂的| 亚洲人精品一区| 一区二区三区欧美久久| 亚洲成人一区在线| 日本欧美一区二区| 国产一区二区三区日韩| 国产精品一区二区久激情瑜伽| 国产成人丝袜美腿| 91网站在线播放| 欧美美女直播网站| 精品国产麻豆免费人成网站| 91精选在线观看| 欧美国产精品劲爆| 色婷婷久久综合| a亚洲天堂av| 日本乱人伦一区| 91麻豆精品国产综合久久久久久| 欧美日韩国产高清一区二区| 欧美大片日本大片免费观看| 久久亚洲一级片| 亚洲日本va午夜在线电影| 亚洲午夜在线电影| 国产综合久久久久影院| 成人av电影在线播放| 欧美亚日韩国产aⅴ精品中极品| 日韩视频一区二区三区在线播放| 精品国产乱码久久久久久免费| 日本一区二区三区四区在线视频| 亚洲精选视频免费看| 免费观看一级欧美片| 国产99久久精品| 欧美私模裸体表演在线观看| 精品久久久久久久久久久院品网| 最新高清无码专区| 婷婷丁香久久五月婷婷| 成人黄色小视频| 欧美一区二区视频在线观看2022| 国产日韩欧美精品一区| 亚洲小说欧美激情另类| 国产一区欧美二区| 欧美亚男人的天堂| 国产女人水真多18毛片18精品视频| 一区二区高清视频在线观看| 加勒比av一区二区| 91高清在线观看| 日本一区二区三区在线观看| 五月婷婷综合激情| fc2成人免费人成在线观看播放| 在线91免费看| 夜夜精品视频一区二区| 国产乱码精品一区二区三区五月婷 | 欧美高清性hdvideosex| 国产精品欧美久久久久无广告| 日本sm残虐另类| 欧美日韩在线不卡| 欧美激情一区二区三区在线| 蜜桃av一区二区在线观看| 91福利在线导航| 国产精品福利一区| 国产传媒日韩欧美成人| 欧美一级爆毛片| 亚洲成人1区2区| 一本大道综合伊人精品热热| 国产人成亚洲第一网站在线播放| 美女视频第一区二区三区免费观看网站 | 欧美一卡二卡在线| 日韩一区二区麻豆国产| 中文字幕国产一区| 久久精品国产一区二区三区免费看 | 日韩一区精品视频| 欧美性淫爽ww久久久久无| 亚洲特黄一级片| 成人污视频在线观看| 亚洲乱码国产乱码精品精可以看 | 欧美精品一区二区三区蜜桃| 午夜精品福利一区二区三区av | 亚洲成人资源在线| 色综合久久99| 亚洲人成精品久久久久久| 国产91精品精华液一区二区三区 | 91美女片黄在线观看| 国产精品美女久久久久久久久 | 美女被吸乳得到大胸91| 欧美精品123区| 免费在线欧美视频| 欧美一区二区三区在线观看| 日韩中文字幕区一区有砖一区 | 亚洲国产高清在线| 国产成人精品一区二区三区网站观看| 欧美变态tickle挠乳网站| 男男视频亚洲欧美| 日韩精品一区二区三区在线| 日韩精品欧美成人高清一区二区| 欧美人伦禁忌dvd放荡欲情| 亚洲成人av电影| 337p亚洲精品色噜噜噜| 青草国产精品久久久久久| 欧美一级二级三级蜜桃| 国产综合色产在线精品| 久久久久久久久久久久久女国产乱| 国内精品在线播放| 欧美国产日韩一二三区| 99久精品国产| 亚洲成av人片在线观看无码| 欧美精品在线观看播放| 久久99国产精品麻豆| 国产亚洲成av人在线观看导航| 福利视频网站一区二区三区| 中文字幕一区不卡| 欧美日韩综合不卡| 精品一区二区在线免费观看| 国产日韩影视精品| 在线亚洲一区观看| 丁香一区二区三区| 亚洲黄色av一区| 欧美一区二区三区电影| 国产九色sp调教91| 亚洲人成精品久久久久久| 欧美巨大另类极品videosbest | 亚洲婷婷在线视频| 欧美性生交片4| 国产尤物一区二区在线| 欧美韩国一区二区| 欧美视频三区在线播放| 狠狠色伊人亚洲综合成人| 国产精品国产三级国产三级人妇| 91久久国产综合久久| 麻豆成人在线观看| 亚洲免费观看高清| 精品国产一区二区三区不卡| jlzzjlzz亚洲日本少妇| 全部av―极品视觉盛宴亚洲| 国产精品嫩草影院av蜜臀| 欧美日韩免费电影| 成人综合在线视频| 视频一区二区三区中文字幕| 久久精品男人天堂av| 精品视频资源站| 高清不卡在线观看| 免费成人你懂的| 亚洲美女免费视频| 久久久国产午夜精品 | 婷婷六月综合网| 中文字幕一区二区三中文字幕| 欧美综合欧美视频| 久久99国产乱子伦精品免费| 一区二区三区在线视频观看| 精品国产亚洲一区二区三区在线观看| 99久久伊人久久99| 国产在线一区二区| 性做久久久久久久免费看| 国产精品久久久久天堂| 欧美精品一区二区三区视频| 欧美高清视频一二三区 | 国内精品伊人久久久久av影院 |