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

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

?? sfreadtype.c

?? IBE是一種非對稱密碼技術
?? C
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "securemail.h"
#include "errorctx.h"

int VtSecureFileImplRead (
   VtSecureFileObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
#if VOLT_ALIGNMENT != 1
  unsigned int pad;
#endif
  unsigned int index, bufferSize, offset;
  unsigned int listToUseCount = 0, decodersToUseCount = 0;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)(*object);
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VtReadSecureMailInfo *readInfo;
  VtDerCoder **ListToUse = (VtDerCoder **)0;
  VtIdentitySchemaDecode **DecodersToUse = (VtIdentitySchemaDecode **)0;
  VtDERCoderArray *derCoderArray;
  VtSchemaDecodeArray *schemaDecodeArray;
  VtMpIntCtx mpCtxToUse = (VtMpIntCtx)0;
  unsigned char *buffer = (unsigned char *)0;
  VoltSecureMailReadCtx *readCtx;
  VtReadPkcs7Info p7Info;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Make sure this is being called appropriately.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* Make sure the object is empty.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if ( (obj->state != 0) || (obj->localCtx != (Pointer)0) )
      break;

    /* Check the info. If there's no info, get it from the libCtx.
     */
    if (info != (Pointer)0)
    {
      readInfo = (VtReadSecureMailInfo *)info;
      ListToUse = readInfo->derCoders;
      listToUseCount = readInfo->derCoderCount;
      DecodersToUse = readInfo->decoders;
      decodersToUseCount = readInfo->decoderCount;
      mpCtxToUse = readInfo->mpCtx;
    }

    /* If we don't have any DerCoder's get the ones in the libCtx. If
     * there are none there, break, that's an error.
     */
    if ( (ListToUse == (VtDerCoder **)0) || (listToUseCount == 0) )
    {
      derCoderArray = (VtDERCoderArray *)VoltGetLibCtxInfo (
        obj->voltObject.libraryCtx, VOLT_LIB_CTX_INFO_TYPE_DER_CODERS);

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NO_DER_CODERS;
      if (derCoderArray == (VtDERCoderArray *)0)
        break;

      ListToUse = derCoderArray->derCoders;
      listToUseCount = derCoderArray->derCoderCount;
    }

    /* If we don't have any SchemaDecode's get the ones in the libCtx.
     * If there are none there, break, that's an error.
     */
    if ( (DecodersToUse == (VtIdentitySchemaDecode **)0) ||
         (decodersToUseCount == 0) )
    {
      schemaDecodeArray = (VtSchemaDecodeArray *)VoltGetLibCtxInfo (
        obj->voltObject.libraryCtx, VOLT_LIB_CTX_INFO_TYPE_SCHEMA_DECODES);

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NO_SCHEMA_DECODERS;
      if (schemaDecodeArray == (VtSchemaDecodeArray *)0)
        break;

      DecodersToUse = schemaDecodeArray->decoders;
      decodersToUseCount = schemaDecodeArray->decoderCount;
    }

    /* If we don't have an mpCtx, get one from the libCtx. If there is
     * not one there, break, that's an error.
     */
    if (mpCtxToUse == (VtMpIntCtx)0)
    {
      mpCtxToUse = (VtMpIntCtx)VoltGetLibCtxInfo (
        obj->voltObject.libraryCtx, VOLT_LIB_CTX_INFO_TYPE_MP_CTX);

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NO_MATH_LIBRARY;
      if (mpCtxToUse == (VtMpIntCtx)0)
        break;
    }

    /* Paranoid programming check.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_MP_INT_CTX;
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (mpCtxToUse, VOLT_OBJECT_TYPE_MP_INT_CTX))
      break;

    /* Build a buffer big enough to hold the readCtx, the coder array,
     * and the schema decode's. Assume that the array of DerCoder
     * pointers will not throw off the pad.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    bufferSize =
      sizeof (VoltSecureMailReadCtx) +
      (listToUseCount * sizeof (VtDerCoder *)) +
      decodersToUseCount * sizeof (VtIdentitySchemaDecode *);
#if VOLT_ALIGNMENT != 1
    /* If the alignment is 1, there's no need to pad. If not, compute
     * the pad length.
     */
    VOLT_COMPUTE_ALIGN_PAD (
      VOLT_ALIGNMENT, sizeof (VoltSecureMailReadCtx), pad)
      bufferSize += pad;
#endif
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the pointers.
     */
    readCtx = (VoltSecureMailReadCtx *)buffer;
    offset = sizeof (VoltSecureMailReadCtx);
#if VOLT_ALIGNMENT != 1
    offset += pad;
#endif

    /* Copy the DerCoders array.
     */
    readCtx->DerCoders = (VtDerCoder **)(buffer + offset);
    for (index = 0; index < listToUseCount; ++index)
      readCtx->DerCoders[index] = ListToUse[index];
    readCtx->derCoderCount = listToUseCount;

    /* Copy the schemaDecode's.
     */
    offset += listToUseCount * sizeof (VtDerCoder *);
    readCtx->Decoders = (VtIdentitySchemaDecode **)(buffer + offset);
    for (index = 0; index < decodersToUseCount; ++index)
      readCtx->Decoders[index] = DecodersToUse[index];
    readCtx->decoderCount = decodersToUseCount;

    /* Clone the mpCtx.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCloneObject (
      (Pointer)mpCtxToUse, (Pointer *)&(readCtx->mpCtx));
    if (status != 0)
      break;

    /* Initialize the contentMaterialState
     */
    readCtx->contentMaterialState = VOLT_CONTENT_MATERIAL_STATE_NONE;

    /* Build the P7 objects.
     */
    p7Info.derCoders = ListToUse;
    p7Info.derCoderCount = listToUseCount;
    p7Info.decoders = DecodersToUse;
    p7Info.decoderCount = decodersToUseCount;
    p7Info.mpCtx = mpCtxToUse;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreatePkcs7Object (
      (VtLibCtx)libCtx, VtPkcs7ImplReadSignedData, (Pointer)&p7Info,
      &(obj->p7SignedData));
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreatePkcs7Object (
      (VtLibCtx)libCtx, VtPkcs7ImplReadEnvelopedData, (Pointer)&p7Info,
      &(obj->p7EnvelopedData));
    if (status != 0)
      break;

    obj->state = VOLT_SECURE_MAIL_STATE_READ_SET;
    obj->localCtx = (Pointer)readCtx;
    obj->LocalCtxDestroy = VoltReadSecureMailCtxDestroy;
    obj->ReadInit = VoltSecureFileReadInit;
    obj->ReadUpdate = VoltSecureFileReadUpdate;
    obj->ReadFinal = VoltSecureFileReadFinal;
    obj->Verify = VoltSecureMailVerify;
    obj->GetEncodeDecodeSize = VoltCopyGetEncodeDecodeSize;

    status = 0;

  } while (0);

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

  /* If there was an error, destroy what we created.
   */
  VoltReadSecureMailCtxDestroy ((Pointer)obj, (Pointer)readCtx);

  VOLT_LOG_ERROR_INFO (
    0, *object, status, 0, errorType,
    (char *)0, "VtSecureFileImplRead", fnctLine, (char *)0)

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人伊人久久综合网| 国产又粗又猛又爽又黄91精品| 粉嫩高潮美女一区二区三区| 精品国产伦一区二区三区免费| 首页综合国产亚洲丝袜| 7777精品久久久大香线蕉 | 国产精品一卡二| 精品对白一区国产伦| 国产精品一区二区三区四区 | 国产亚洲视频系列| 国产成人三级在线观看| 国产免费成人在线视频| fc2成人免费人成在线观看播放| 中文字幕在线视频一区| 色伊人久久综合中文字幕| 亚洲综合一区二区| 欧美视频在线一区| 麻豆成人91精品二区三区| 久久亚洲精精品中文字幕早川悠里| 国产一区二区三区免费看| 国产午夜精品福利| 欧洲一区二区av| 午夜精品久久久久久久99水蜜桃| 日韩欧美在线网站| 99精品久久只有精品| 天天色 色综合| 久久人人97超碰com| 91麻豆国产自产在线观看| 婷婷丁香激情综合| 中文字幕 久热精品 视频在线 | 丁香另类激情小说| 亚洲男人的天堂av| 精品国内二区三区| 日本大香伊一区二区三区| 麻豆91在线观看| 亚洲欧美综合网| 日韩一区二区三| 91色|porny| 国产一区美女在线| 亚洲国产日韩一级| 精品国产一区久久| 在线视频国内一区二区| 久久99精品久久久久久动态图| 国产欧美一区二区三区沐欲| 欧美探花视频资源| 国产一区二区美女| 午夜精品一区二区三区免费视频| 国产亚洲精品久| 6080亚洲精品一区二区| 99热在这里有精品免费| 久久精工是国产品牌吗| 亚洲电影一级片| 中文字幕精品一区二区三区精品 | 91欧美一区二区| 精品一区二区在线视频| 亚洲精品国久久99热| 国产欧美日韩视频在线观看| 欧美精品日韩精品| 在线观看免费一区| 成人激情电影免费在线观看| 蜜臀av国产精品久久久久| 亚洲精品菠萝久久久久久久| 久久先锋资源网| 在线综合视频播放| 欧美性欧美巨大黑白大战| 一本色道a无线码一区v| 国产高清在线精品| 国产曰批免费观看久久久| 另类小说色综合网站| 亚洲va欧美va天堂v国产综合| 国产精品沙发午睡系列990531| 欧美成人精品1314www| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩一二区| 91在线视频官网| 96av麻豆蜜桃一区二区| 成人综合婷婷国产精品久久| 国产99久久久精品| 处破女av一区二区| 成人精品视频一区二区三区尤物| 国产尤物一区二区在线| 国产在线麻豆精品观看| 国内精品伊人久久久久av一坑| 五月婷婷另类国产| 视频一区二区国产| 美日韩黄色大片| 久久99精品视频| 国产成人免费视频| 欧美精品久久久久久久多人混战 | 尤物av一区二区| 一区二区三区精品视频| 亚洲色图清纯唯美| 亚洲四区在线观看| 亚洲男同性视频| 亚洲精品高清视频在线观看| 一区二区视频在线看| 夜夜嗨av一区二区三区四季av| 亚洲欧美日韩小说| 亚洲国产中文字幕| 蓝色福利精品导航| 国产乱理伦片在线观看夜一区| 国产精品18久久久久| 成人精品亚洲人成在线| 一本大道久久a久久精二百 | 日本韩国一区二区三区视频| 91久久精品一区二区三区| 在线视频一区二区三区| 91精品国产综合久久久久久| 日韩欧美国产综合一区| 久久久久88色偷偷免费| 一区二区三区91| 麻豆国产一区二区| 成人av集中营| 91麻豆精品国产自产在线 | 五月天亚洲精品| 国产一区二区三区| 97久久超碰精品国产| 在线观看www91| 精品国产乱子伦一区| 国产精品三级电影| 视频精品一区二区| 成人精品电影在线观看| 欧美视频中文字幕| 国产欧美日韩精品在线| 亚洲最大色网站| 国精品**一区二区三区在线蜜桃| av一区二区三区黑人| 91.com视频| 国产精品国产三级国产普通话三级| 亚洲国产中文字幕| 国产不卡视频一区二区三区| 欧美日韩一区小说| 国产精品色一区二区三区| 手机精品视频在线观看| 成人免费毛片高清视频| 欧美日韩不卡视频| 亚洲欧美色综合| 激情久久五月天| 色综合夜色一区| 精品国产欧美一区二区| 亚洲欧美日韩一区二区三区在线观看| 奇米精品一区二区三区四区 | 欧美在线不卡一区| 久久精品人人做人人综合| 五月婷婷综合在线| 一本到高清视频免费精品| 精品嫩草影院久久| 亚洲电影一区二区三区| 99国产精品久| 久久久亚洲高清| 经典一区二区三区| 欧美日韩成人综合| 夜夜嗨av一区二区三区四季av| 丁香婷婷综合激情五月色| 日韩一区二区在线看| 午夜国产精品一区| 欧美体内she精高潮| 亚洲女人****多毛耸耸8| 波多野结衣的一区二区三区| 国产性做久久久久久| 久草中文综合在线| 91精品国产色综合久久ai换脸| 亚洲小说欧美激情另类| 日本大香伊一区二区三区| 亚洲欧洲精品一区二区精品久久久| 国产传媒日韩欧美成人| 久久久99久久| 国产精品亚洲第一区在线暖暖韩国| 欧美不卡一区二区三区| 久久成人久久鬼色| 日韩欧美一级二级三级| 日本亚洲电影天堂| 精品伦理精品一区| 久久av中文字幕片| 久久久久久久精| 处破女av一区二区| 亚洲天堂网中文字| 91国偷自产一区二区开放时间| 亚洲女与黑人做爰| 欧美性大战久久久久久久蜜臀| 亚洲综合久久av| 在线不卡一区二区| 久久国产视频网| 中文字幕第一区综合| 色综合天天综合色综合av | 亚洲aⅴ怡春院| 666欧美在线视频| 久草精品在线观看| 久久亚洲精品国产精品紫薇| 国产成人av电影在线播放| 亚洲国产精品激情在线观看 | 精品午夜久久福利影院| 久久久久久久综合日本| av中文字幕一区| 亚洲国产美国国产综合一区二区| 欧美久久一二区| 国产一区二区三区综合| 亚洲视频一区二区在线| 51精品国自产在线| 国产一区二区三区精品欧美日韩一区二区三区 |