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

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

?? sm2readtype.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"
#include "vtassert.h"

static void VoltSecureMail2ReadLocalCtxDestroy(
  Pointer obj,
  Pointer ctx
)
{
  VoltObject* voltObj = (VoltObject*) obj;
  VtLibCtx libCtx;
  VoltSecureMail2ReadCtx* readCtx = (VoltSecureMail2ReadCtx*) ctx;

  if ((obj == (Pointer)0) || (ctx == (Pointer)0))
    return;

  libCtx = (VtLibCtx) voltObj->libraryCtx;

  Z2Free(readCtx->pendingInput);
  Z2Free(readCtx->pendingData);
  Z2Free(readCtx->pendingHeaders);
  Z2Free(readCtx->pendingOutput);
  Z2Free(readCtx->characterSet);
  Z2Free(readCtx->contentType);
  Z2Free(readCtx->originalCharacterSet);
  
  Z2Free(ctx);
}

int VtSecureMail2ImplRead(
   VtSecureMailObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status = 0;
  VtLibCtx libCtx = (VtLibCtx)0;
  VtSecureMailObject smObj;
  VoltSecureMail2ReadCtx* readCtx;
  VtReadSecureMail2Info* smReadInfo = (VtReadSecureMail2Info*)info;
  VtReadPkcs7Info p7ReadInfo;
  VtBase64Info base64Info;
  VtDERCoderArray* coderArray;
  VtSchemaDecodeArray* decoderArray;
  VOLT_DECLARE_FNCT_LINE(fnctLine)
  VOLT_DECLARE_ERROR_TYPE(errorType)

  VT_ASSERT(object != (VtSecureMailObject*)0);
  VT_ASSERT(*object != (VtSecureMailObject)0);
  
  VOLT_SET_ERROR_TYPE(errorType, VT_ERROR_TYPE_PRIMARY)

  do
  {
    if ((object == (VtSecureMailObject*)0) ||
        (*object == (VtSecureMailObject)0))
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_INVALID_SECURE_MAIL_OBJ;
      break;
    }
    
    smObj = *object;
    libCtx = smObj->voltObject.libraryCtx;
    VT_ASSERT(libCtx != (VtLibCtx)0);
  
    /* Make sure it's being called correctly */
    if (flag != VOLT_SECURE_MAIL_SET_TYPE_FLAG)
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_INVALID_TYPE;
      break;
    }
    
    /* Make sure the object is empty. */
    if ((smObj->state != 0) || (smObj->localCtx != (Pointer)0))
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_INVALID_SECURE_MAIL_OBJ;
      break;
    }
    
    /* Allocate the local context */
    readCtx = (VoltSecureMail2ReadCtx*)
      Z3Malloc(sizeof(VoltSecureMail2ReadCtx));
    if (readCtx == (VoltSecureMail2ReadCtx*)0)
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_MEMORY;
      break;
    }
    
    Z2Memset(readCtx, 0, sizeof(VoltSecureMail2ReadCtx));

    Z2Memset(&p7ReadInfo, 0, sizeof(p7ReadInfo));
    
    if (smReadInfo != (VtReadSecureMail2Info*)0)
    {
      p7ReadInfo.derCoders = smReadInfo->derCoders;
      p7ReadInfo.derCoderCount = smReadInfo->derCoderCount;
      p7ReadInfo.decoders = smReadInfo->decoders;
      p7ReadInfo.decoderCount = smReadInfo->decoderCount;
      p7ReadInfo.mpCtx = smReadInfo->mpCtx;
    }
    
    if ((p7ReadInfo.derCoders == (VtDerCoder**)0) ||
        (p7ReadInfo.derCoderCount == 0))
    {
      coderArray = (VtDERCoderArray*) VoltGetLibCtxInfo(libCtx,
        VOLT_LIB_CTX_INFO_TYPE_DER_CODERS);

      if (coderArray == (VtDERCoderArray *)0)
      {
        VOLT_SET_FNCT_LINE(fnctLine)
        status = VT_ERROR_NO_DER_CODERS;
        break;
      }
      
      p7ReadInfo.derCoderCount = coderArray->derCoderCount;
      p7ReadInfo.derCoders = coderArray->derCoders;
    }
    
    if ((p7ReadInfo.decoders == (VtIdentitySchemaDecode**)0) ||
        (p7ReadInfo.decoderCount == 0))
    {
      decoderArray = (VtSchemaDecodeArray*) VoltGetLibCtxInfo(libCtx,
        VOLT_LIB_CTX_INFO_TYPE_SCHEMA_DECODES);

      if (decoderArray == (VtSchemaDecodeArray *)0)
      {
        VOLT_SET_FNCT_LINE(fnctLine)
        status = VT_ERROR_NO_SCHEMA_DECODERS;
        break;
      }
      
      p7ReadInfo.decoders = decoderArray->decoders;
      p7ReadInfo.decoderCount = decoderArray->decoderCount;
    }
    
    if (p7ReadInfo.mpCtx == (VtMpIntCtx)0)
    {
      p7ReadInfo.mpCtx = (VtMpIntCtx) VoltGetLibCtxInfo(libCtx,
         VOLT_LIB_CTX_INFO_TYPE_MP_CTX);

      if (p7ReadInfo.mpCtx == (VtMpIntCtx)0)
      {
        VOLT_SET_FNCT_LINE(fnctLine)
        status = VT_ERROR_NO_MATH_LIBRARY;
        break;
      }
      
      /* Paranoid programming check.*/
      if (VOLT_OBJECT_TYPE_NOT_EQUAL(p7ReadInfo.mpCtx, VOLT_OBJECT_TYPE_MP_INT_CTX))
      {
        VOLT_SET_FNCT_LINE(fnctLine)
        status = VT_ERROR_INVALID_MP_INT_CTX;
        break;
      }
    }

    VOLT_SET_ERROR_TYPE(errorType, 0)

    /* Build the PKCS7 objects. */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtCreatePkcs7Object(libCtx, VtPkcs7ImplReadSignedData,
      (Pointer)&p7ReadInfo, &smObj->p7SignedData);
    if (status != 0)
      break;

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

    /* Build the Base64 object. */
    base64Info.base64BlockSize = 64;
    base64Info.newLineCharacter = VT_BASE64_NEW_LINE_CR_LF;
    base64Info.errorCheck = VT_BASE64_NO_ERROR_CHECK;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtCreateAlgorithmObject(libCtx, VtAlgorithmImplBase64,
      (Pointer)&base64Info, &smObj->base64);
    if (status != 0)
      break;

    smObj->formatType = VOLT_MESSAGE_FORMAT_SECURE_MAIL_2;
    smObj->state = VOLT_SECURE_MAIL_STATE_READ_SET;
    smObj->localCtx = (Pointer)readCtx;
    smObj->LocalCtxDestroy = VoltSecureMail2ReadLocalCtxDestroy;
    smObj->ReadInit = VoltSecureMail2ReadInit;
    smObj->ReadUpdate = VoltSecureMail2ReadUpdate;
    smObj->ReadFinal = VoltSecureMail2ReadFinal;
    smObj->Verify = VoltSecureMail2Verify;
  }
  while (0);

  if (status != 0)
  {
    VoltSecureMail2ReadLocalCtxDestroy((Pointer)smObj, (Pointer)readCtx);

    VOLT_LOG_ERROR(libCtx, status, errorType,
      fnctLine, "VtSecureMail2ImplRead", (char *)0)
  }
  
  return status;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡蜜臀| 最新国产精品久久精品| 国产精品嫩草影院av蜜臀| 亚洲亚洲精品在线观看| 精久久久久久久久久久| 91免费看片在线观看| 精品欧美一区二区三区精品久久| 亚洲乱码中文字幕| 国产成人在线色| 日韩欧美激情四射| 亚洲国产wwwccc36天堂| 99久久er热在这里只有精品15| 精品国产伦一区二区三区观看体验 | 亚洲一区二区三区小说| 精品制服美女丁香| 欧美美女网站色| 亚洲国产精品一区二区尤物区| 成人在线视频首页| 亚洲国产精品成人综合| 精品一区二区三区免费播放| 亚洲精品视频免费观看| 粉嫩嫩av羞羞动漫久久久| 2023国产精品| 精品写真视频在线观看| 91精品国产综合久久久久久久久久| 亚洲精品成人精品456| av中文字幕不卡| 欧美韩国日本不卡| 不卡高清视频专区| 中文字幕国产一区| 成人妖精视频yjsp地址| 国产欧美视频一区二区| 成人少妇影院yyyy| 中文字幕av在线一区二区三区| 高清国产一区二区| 国产精品美女久久久久久2018| 成人一区在线看| 最新高清无码专区| 欧美三级韩国三级日本一级| 亚洲国产视频a| 日韩一区二区三区在线| 久久av资源站| 久久精品夜色噜噜亚洲aⅴ| 国产精品69久久久久水密桃| 国产日韩欧美a| 91在线你懂得| 午夜久久电影网| 日韩久久免费av| 成人在线综合网| 一区二区三区日本| 91麻豆精品91久久久久同性| 美国三级日本三级久久99 | 91丨九色丨黑人外教| 亚洲人妖av一区二区| 在线一区二区三区做爰视频网站| 一区二区三区中文字幕| 欧美三级日韩三级| 激情六月婷婷久久| 国产精品短视频| 91精品国产入口| 国产成人精品一区二区三区网站观看| 国产精品国产三级国产三级人妇 | 在线视频一区二区免费| 图片区小说区区亚洲影院| 久久先锋影音av鲁色资源网| 97精品国产露脸对白| 琪琪久久久久日韩精品| 中文字幕av一区二区三区高 | 91在线视频播放地址| 日韩精品成人一区二区三区| 久久精品男人天堂av| 91国偷自产一区二区三区观看 | 亚洲激情网站免费观看| 91精品国产欧美日韩| 国产91精品一区二区麻豆亚洲| 亚洲一区二区成人在线观看| 精品成a人在线观看| 日本大香伊一区二区三区| 久久成人久久爱| 亚洲国产另类精品专区| 亚洲国产精品成人综合| 日韩一区二区三区视频| 91女厕偷拍女厕偷拍高清| 久久国内精品自在自线400部| 亚洲欧美电影院| 亚洲国产精品t66y| 91精品国产综合久久香蕉的特点| 99精品久久免费看蜜臀剧情介绍| 麻豆成人av在线| 亚洲午夜电影在线观看| 国产精品欧美经典| 久久久久久免费网| 日韩女优毛片在线| 欧美另类z0zxhd电影| 一本高清dvd不卡在线观看| 国产福利一区二区三区视频| 免费欧美日韩国产三级电影| 一区二区三区中文字幕| 成人免费一区二区三区在线观看| 精品理论电影在线观看 | 色天天综合色天天久久| 国产白丝精品91爽爽久久| 久久精品国产第一区二区三区| 亚洲制服欧美中文字幕中文字幕| 中文字幕一区二区三区视频| 久久精品视频一区二区三区| 精品成人一区二区三区| 欧美一区二区三区不卡| 3atv一区二区三区| 欧美久久久久久久久久| 天堂资源在线中文精品| 久久嫩草精品久久久精品| 在线免费观看一区| 亚洲午夜一区二区| 一区二区三区在线视频免费| 国产精品国产馆在线真实露脸| 久久一夜天堂av一区二区三区| 日韩欧美国产一区在线观看| 欧美电影一区二区三区| 91精品啪在线观看国产60岁| 欧美日韩一卡二卡三卡 | 国产精品福利一区二区三区| 国产欧美一区二区精品久导航| 国产日韩一级二级三级| 国产调教视频一区| 国产精品乱码一区二区三区软件| 国产精品美女久久久久av爽李琼| 欧美激情一区二区三区| 亚洲特黄一级片| 一区二区三区欧美久久| 亚洲成人7777| 免费在线观看视频一区| 狠狠色狠狠色综合| 高清视频一区二区| 一本大道久久a久久综合| 欧美日韩国产123区| 欧美电影精品一区二区| 国产精品卡一卡二卡三| 亚洲狼人国产精品| 丝袜美腿亚洲色图| 国产一区二区伦理片| 高清久久久久久| 精品视频免费在线| 久久色.com| 亚洲欧美日韩系列| 蜜臀91精品一区二区三区| 国产成人欧美日韩在线电影| 色婷婷精品大视频在线蜜桃视频| 欧美色区777第一页| 国产婷婷色一区二区三区| 一区二区三区中文在线观看| 蜜臀99久久精品久久久久久软件| 粉嫩蜜臀av国产精品网站| 欧美日本在线播放| 久久久久久99精品| 亚洲综合男人的天堂| 国产一区欧美日韩| 在线亚洲一区观看| 国产农村妇女精品| 日韩精品乱码免费| 91免费版在线| 久久亚洲影视婷婷| 亚洲成国产人片在线观看| 国产91丝袜在线观看| 91精品在线免费| 亚洲最大成人综合| 夫妻av一区二区| 精品久久久久久久久久久久久久久 | 麻豆91免费观看| av午夜一区麻豆| 欧美xxxxx牲另类人与| 亚洲一区二区三区精品在线| 国产福利一区在线观看| 欧美裸体一区二区三区| 亚洲男人的天堂一区二区| 国产剧情在线观看一区二区| 欧美日韩国产成人在线免费| 中文字幕一区二区三区乱码在线 | 精品久久久久久久久久久久包黑料| 中文字幕一区二区三中文字幕| 久久成人免费网| 这里只有精品视频在线观看| 亚洲精品第一国产综合野| 成人国产精品免费| 久久久久久久一区| 极品尤物av久久免费看| 日韩一区二区三区视频| 午夜精品久久一牛影视| 欧美日韩精品一区二区三区| 亚洲精选视频在线| 91老师片黄在线观看| 最新国产成人在线观看| 99久久综合国产精品| 久久久不卡影院| 国产乱码精品一品二品| 欧美va亚洲va| 极品少妇xxxx偷拍精品少妇| 亚洲精品在线观看视频| 国产一区视频网站| 国产精品欧美一区喷水|