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

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

?? zdmwritetype.c

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

int VtZDMImplWrite (
   VtZDMObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltZDMObject *zObj = (VoltZDMObject *)(*object);
  VoltSecureMailObject *obj = (VoltSecureMailObject *)0;
  VoltLibCtx *libCtx = (VoltLibCtx *)(zObj->voltObject.libraryCtx);
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)0;
  unsigned char *buffer = (unsigned char *)0;
  VtItem temp;
  unsigned char newLineChars[2] = { 0x0D, 0x0A };
  unsigned char *beginMsg = VOLT_SECURE_MAIL_BEGIN_MESSAGE;
  unsigned char *beginBlk = VOLT_SECURE_MAIL_BEGIN_BLOCK;
  unsigned char *endBlk = VOLT_SECURE_MAIL_END_BLOCK;
  unsigned char *endMsg = VOLT_SECURE_MAIL_END_MESSAGE;
  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_ZDM_SET_TYPE_FLAG)
      break;

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

    /* Check the info, we're expecting NULL.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
      break;

    /* A ZDM object used to be a SecureMail object. However, for ZDMv2,
     * we have a VoltZDMObject. This "old" ZDM Impl has to fit inside
     * the new ZDMObject framework. What we'll do is build the old
     * SecureMail object and place it into the new ZDMObject's localCtx.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCreateObject (
      (VtLibCtx)libCtx, (VoltObject **)&obj, sizeof (VoltSecureMailObject),
      VOLT_OBJECT_TYPE_ZDM);
    if (status != 0)
      break;

    /* Build the local ctx.
     */
    bufferSize = sizeof (VoltSecureMailWriteCtx);

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    writeCtx = (VoltSecureMailWriteCtx *)buffer;

    /* Build the P7 objects.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreatePkcs7Object (
      (VtLibCtx)libCtx, VtPkcs7ImplWriteSignedDSA, (Pointer)0,
      &(obj->p7SignedData));
    if (status != 0)
      break;

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

    /* Copy the new line chars and the begin and end messages.
     * We may want to change the new line char later, so set it to the
     * default.
     */
    temp.data = newLineChars;
    temp.len = sizeof (newLineChars);
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE]));
    if (status != 0)
      break;

    /* Place the BEGIN MESSAGE line in the HEADER Item because the ZDM
     * header material will go into the BEGIN_MSG Item.
     */
    temp.data = beginMsg;
    temp.len = Z2Strlen (beginMsg);
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_HEADER]));
    if (status != 0)
      break;

    temp.data = beginBlk;
    temp.len = VOLT_SECURE_MAIL_BEGIN_BLOCK_LEN;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_BLK]));
    if (status != 0)
      break;

    temp.data = endBlk;
    temp.len = VOLT_SECURE_MAIL_END_BLOCK_LEN;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_END_BLK]));
    if (status != 0)
      break;

    temp.data = endMsg;
    temp.len = VOLT_SECURE_MAIL_END_MESSAGE_LEN;
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_END_MSG]));
    if (status != 0)
      break;

    /* Initialize the format to MAIL, if the caller sets it to
     * ATTACHMENT later, we'll change it.
     */
    obj->formatType = VOLT_MESSAGE_FORMAT_ZDM_MAIL;
    obj->state = VOLT_SECURE_MAIL_STATE_WRITE_SET;
    obj->WriteInit = VoltZDMWriteInit;
    obj->WriteUpdate = VoltSecureMailWriteUpdate;
    obj->WriteFinal = VoltSecureMailWriteFinal;
    obj->GetEncodeDecodeSize = VoltBase64GetEncodeDecodeSize;
    obj->localCtx = (Pointer)buffer;
    obj->LocalCtxDestroy = VoltWriteSecureMailCtxDestroy;

    /* Now store this SecureMail object as the localCtx of the
     * ZDMObject.
     */
    zObj->localCtx = (Pointer)obj;
    zObj->LocalCtxDestroy = VoltOldZDMCtxDestroy;
    zObj->SetParam = VoltOldZDMSetParamWrite;
    zObj->GetParam = VoltOldZDMGetParamWrite;
    zObj->WriteInit = VoltOldZDMWriteInit;
    zObj->WriteUpdate = VoltOldZDMWriteUpdate;
    zObj->WriteFinal = VoltOldZDMWriteFinal;

  } while (0);

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

  /* If error, free what we allocated.
   */
  VoltDestroyOldZDMObject ((VoltSecureMailObject **)&obj);

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

  return (status);
}

int VtZDMImplWriteFromSecureMail (
   VtZDMObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltZDMObject *zObj = (VoltZDMObject *)(*object);
  VoltSecureMailObject *obj = (VoltSecureMailObject *)0;
  VoltSecureMailObject *smObj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(zObj->voltObject.libraryCtx);
  VoltZDMFromSecureMailCtx *zdmCtx;
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)0;
  VoltSecureMailWriteCtx *smWriteCtx;
  VtItem temp;
  unsigned char *buffer = (unsigned char *)0;
  unsigned char *beginMsg = VOLT_SECURE_MAIL_BEGIN_MESSAGE;
  unsigned char *beginBlk = VOLT_SECURE_MAIL_BEGIN_BLOCK;
  unsigned char *endBlk = VOLT_SECURE_MAIL_END_BLOCK;
  unsigned char *endMsg = VOLT_SECURE_MAIL_END_MESSAGE;
  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_ZDM_SET_TYPE_FLAG)
      break;

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

    /* Check the info, we're expecting a SecureMail object.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (info, VOLT_OBJECT_TYPE_SECURE_MAIL))
      break;

    /* The SecureMail object must be initialized at least.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    smObj = (VoltSecureMailObject *)info;
    if ( (smObj->state == 0) ||
         (smObj->state == VOLT_SECURE_MAIL_STATE_WRITE_SET) )
      break;

    smWriteCtx = (VoltSecureMailWriteCtx *)(smObj->localCtx);

    /* A ZDM object used to be a SecureMail object. However, for ZDMv2,
     * we have a VoltZDMObject. This "old" ZDM Impl has to fit inside
     * the new ZDMObject framework. What we'll do is build the old
     * SecureMail object and place it into the new ZDMObject's localCtx.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCreateObject (
      (VtLibCtx)libCtx, (VoltObject **)&obj, sizeof (VoltSecureMailObject),
      VOLT_OBJECT_TYPE_ZDM);
    if (status != 0)
      break;

    /* Build the local ctx.
     */
    bufferSize = sizeof (VoltZDMFromSecureMailCtx);

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    writeCtx = (VoltSecureMailWriteCtx *)buffer;
    zdmCtx = (VoltZDMFromSecureMailCtx *)buffer;

    /* From SecureMail does no encoding of the input data.
     */
    if (obj->base64 != (VtAlgorithmObject)0)
      VtDestroyAlgorithmObject (&(obj->base64));

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCreateAlgorithmObject (
      (VtLibCtx)libCtx, VtAlgorithmImplCopy, (Pointer)0, &(obj->base64));
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtEncodeInit (obj->base64);
    if (status != 0)
      break;

    /* Whatever the new line char is in the SecureMail object, copy it
     * here.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0,
      &(smWriteCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE]),
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE]));
    if (status != 0)
      break;

    /* Place the BEGIN MESSAGE line in the HEADER Item because the ZDM
     * header material will go into the BEGIN_MSG Item.
     */
    temp.data = beginMsg;
    temp.len = Z2Strlen (beginMsg);
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_HEADER]));
    if (status != 0)
      break;

    temp.data = beginBlk;
    temp.len = Z2Strlen (beginBlk);
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_BLK]));
    if (status != 0)
      break;

    temp.data = endBlk;
    temp.len = Z2Strlen (endBlk);
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCopyItemDataAlloc (
      obj->voltObject.libraryCtx, 0, 0, &temp,
      &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_END_BLK]));
    if (status != 0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品亚洲人成人网在线播放| 26uuu成人网一区二区三区| 亚洲美女淫视频| www.日本不卡| 精品免费日韩av| 国产成人免费视频网站 | 亚洲一二三区在线观看| 国产麻豆精品theporn| 国产精品中文字幕欧美| 久久综合九色综合欧美就去吻 | 五月激情综合色| 欧美日韩高清一区二区三区| 午夜欧美电影在线观看| 欧美日韩高清一区二区三区| 日韩在线一区二区| 91麻豆.com| 亚洲综合免费观看高清在线观看| 精品电影一区二区| 欧美日韩中文字幕精品| 韩国三级在线一区| 亚洲一区二区三区四区在线| 日韩欧美国产一区在线观看| 99re视频精品| 蜜臀久久99精品久久久久宅男 | 日本不卡一区二区三区高清视频| 日韩欧美综合在线| 色吊一区二区三区| 国产呦精品一区二区三区网站| 一区二区三区四区av| 国产蜜臀97一区二区三区| 精品视频123区在线观看| 国产999精品久久久久久绿帽| 午夜精品123| 国产欧美一区在线| 欧美精品一区男女天堂| 欧美高清视频www夜色资源网| 成人在线综合网站| 国产精品一区2区| 亚洲午夜影视影院在线观看| 欧美又粗又大又爽| 免播放器亚洲一区| 一区二区三区日韩| 夜夜嗨av一区二区三区四季av| 免费在线观看成人| 午夜电影网亚洲视频| 91亚洲永久精品| 亚洲电影在线免费观看| 精品久久久久久久人人人人传媒| 国产乱对白刺激视频不卡| 中文字幕日本不卡| 欧美日韩成人在线| 国产精品1区2区3区| 亚洲精品高清在线观看| 日韩一级片在线观看| 欧美一区二区播放| 欧美一区二区视频在线观看2022| 日韩亚洲欧美在线观看| 日韩一级片网址| 欧美成人一区二区三区| 日韩一二三四区| 久久影视一区二区| 国产欧美一区二区精品久导航| 欧美岛国在线观看| 国产欧美一区二区在线| 国产精品久久久久久户外露出| 中文字幕日韩精品一区| 日韩中文字幕区一区有砖一区| 亚洲午夜影视影院在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲宅男天堂在线观看无病毒| 国产精品国产精品国产专区不片| 亚洲日本青草视频在线怡红院| 一区二区三区毛片| 美女视频黄 久久| 国产高清不卡一区| 色丁香久综合在线久综合在线观看| 色成人在线视频| 中文字幕精品综合| 久久不见久久见中文字幕免费| 在线观看日韩高清av| 欧美艳星brazzers| av资源网一区| 欧美日韩一区二区三区视频| 精品欧美一区二区在线观看| 亚洲第一福利视频在线| 欧美又粗又大又爽| 日韩精品一区二区三区中文精品| 狂野欧美性猛交blacked| 亚洲色图丝袜美腿| 久久蜜桃av一区二区天堂| 欧美日韩一区二区三区四区五区| 成人蜜臀av电影| 激情六月婷婷综合| 午夜av一区二区三区| 亚洲欧美一区二区不卡| 久久久久久麻豆| 精品久久久网站| 欧美日韩国产bt| 中文字幕不卡一区| 精久久久久久久久久久| 精品视频在线视频| 亚洲欧洲日本在线| 国内偷窥港台综合视频在线播放| av一区二区三区四区| 精品av久久707| 日韩精品成人一区二区三区| 91免费版pro下载短视频| 亚洲精品一区二区三区99| 视频一区视频二区中文| 一本色道久久综合亚洲精品按摩| 亚洲色图一区二区三区| 成人黄色综合网站| 国产亚洲午夜高清国产拍精品| 日韩国产在线观看| 欧美精品v国产精品v日韩精品| 亚洲免费视频中文字幕| 精品伦理精品一区| 日韩高清在线一区| 欧美日本国产视频| 一区二区三区精品| 色婷婷综合中文久久一本| 国产精品乱码人人做人人爱| 国产麻豆91精品| 成人欧美一区二区三区小说| 不卡的av在线播放| 亚洲欧洲综合另类在线| 韩国精品在线观看| 精品污污网站免费看| 亚洲人成网站色在线观看| 99精品国产视频| 亚洲一级二级三级在线免费观看| 国产偷国产偷精品高清尤物| 欧美一卡2卡3卡4卡| 狠狠色狠狠色综合日日91app| 久久99精品国产.久久久久| 秋霞电影网一区二区| 热久久免费视频| 美女免费视频一区二区| 久色婷婷小香蕉久久| 久久9热精品视频| 国内外成人在线视频| 国产成人在线影院 | wwww国产精品欧美| 久久中文字幕电影| 波多野洁衣一区| 亚洲成人免费在线| 欧美哺乳videos| 99re这里只有精品视频首页| 亚洲主播在线播放| 日韩精品在线看片z| av一二三不卡影片| 婷婷国产v国产偷v亚洲高清| 国产日产欧美一区二区三区| 91在线视频在线| 日本欧美韩国一区三区| 国产亚洲精品bt天堂精选| 色呦呦国产精品| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品水嫩水嫩| 日韩视频一区在线观看| 91农村精品一区二区在线| 美女视频一区二区| 亚洲男人天堂av| 国产人成一区二区三区影院| 欧美无砖专区一中文字| 成人理论电影网| 日韩福利电影在线观看| 日韩伦理电影网| 国产欧美日本一区视频| 欧美va亚洲va国产综合| 欧美挠脚心视频网站| av在线不卡观看免费观看| 粉嫩av亚洲一区二区图片| 亚洲二区视频在线| 日韩精品电影一区亚洲| 肉丝袜脚交视频一区二区| 美女被吸乳得到大胸91| 亚洲综合区在线| 欧美日韩精品一区二区三区蜜桃| 久久福利资源站| 免费成人在线视频观看| 亚洲成人自拍偷拍| 久草精品在线观看| 欧美天堂一区二区三区| 国产女主播一区| 在线不卡欧美精品一区二区三区| 91精品国产91综合久久蜜臀| 国产色综合一区| 亚洲国产视频直播| 国产精品99久久久久久似苏梦涵| 欧美在线看片a免费观看| 精品99999| 亚洲福中文字幕伊人影院| 韩国在线一区二区| 欧美自拍偷拍一区| 久久久国产一区二区三区四区小说 | 日韩亚洲欧美成人一区| 91精品久久久久久蜜臀| 日韩午夜电影av| 久久免费看少妇高潮|