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

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

?? sfwrite.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 "algobj.h"
#include "encode.h"
#include "errorctx.h"

/* Create the AlgorithmObject that does not actually encode/decode, but
 * copies.
 */
int VOLT_CALLING_CONV CreateEncodeDecodeCopyObject VOLT_PROTO_LIST ((
   VtLibCtx libraryCtx,
   VtAlgorithmImpl AlgorithmImpl,
   Pointer associatedInfo,
   VtAlgorithmObject *algObj
));

int VOLT_CALLING_CONV DestroyEncodeDecodeCopyObject VOLT_PROTO_LIST ((
   VtAlgorithmObject *algObj
));

/* Implements VEncodeInit.
 */
int VOLT_CALLING_CONV CopyEncodeInit VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj
));

/* Implements VGetEncodeOutputSize.
 */
int VOLT_CALLING_CONV CopyGetOutputSize VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   unsigned int callFlag,
   unsigned char *input,
   unsigned int inputLen,
   unsigned int *outputSize,
   VtRandomObject random
));

/* Implements VEncodeUpdate.
 */
int VOLT_CALLING_CONV CopyEncodeUpdate VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VtRandomObject random,
   unsigned char *dataToEncode,
   unsigned int dataToEncodeLen,
   unsigned char *encoding,
   unsigned int *encodingLen
));

/* Implements VEncodeFinal.
 */
int VOLT_CALLING_CONV CopyEncodeFinal VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VtRandomObject random,
   unsigned char *encoding,
   unsigned int *encodingLen
));

int VoltSecureFileWriteInit (
   VtSecureMailObject secureMailObj,
   VtPolicyCtx policyCtx,
   VtStorageCtx storageCtx,
   VtTransportCtx transportCtx,
   VtRandomObject random
   )
{
  int status;
  unsigned int index, elementLen, newLineLen;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureMailObj;
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VtItem *beginMsg = &(writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_MSG]);
  unsigned char *newLine =
    writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].data;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  newLineLen = writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].len;

  do
  {
    /* Now that we know what the new line will be, place it at the end
     * of the BeginMsg.
     */
    Z2Memcpy (beginMsg->data + beginMsg->len, newLine, newLineLen);
    if (beginMsg->len != 0)
      beginMsg->len += newLineLen;

    /* Create the Base64 object. Actually, create a "dummy" base 64
     * object, one that does no encoding or decoding.
     */
    if (obj->base64 != (VtAlgorithmObject)0)
      VtDestroyAlgorithmObject (&(obj->base64));

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

    /* Init the subordinate objects.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtPkcs7WriteInit (
      obj->p7SignedData, policyCtx, storageCtx, transportCtx, random);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtPkcs7WriteInit (
      obj->p7EnvelopedData, policyCtx, storageCtx, transportCtx, random);
    if (status != 0)
      break;

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

    /* How much header and footer data will we be writing out?
     */
    for (index = VOLT_WRITE_SM_HEAD_INDEX_START;
         index <= VOLT_WRITE_SM_HEAD_INDEX_END; ++index)
    {
      /* Add in the length of the actual data to write out.
       * If there is data to write out, add a newLine.
       */
      elementLen = writeCtx->itemArray[index].len;
      if (elementLen != 0)
        elementLen += newLineLen;
      writeCtx->prelimLen += elementLen;
    }

    for (index = VOLT_WRITE_SM_FOOT_INDEX_START;
         index <= VOLT_WRITE_SM_FOOT_INDEX_END; ++index)
    {
      /* Add in the length of the actual data to write out.
       * If there is data to write out, add a newLine.
       */
      elementLen = writeCtx->itemArray[index].len;
      if (elementLen != 0)
        elementLen += newLineLen;
      writeCtx->trailLen += elementLen;
    }

    obj->state = VOLT_SECURE_MAIL_STATE_WRITE_INIT;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureMailObj, status, 0, 0,
    (char *)0, "VoltSecureFileWriteInit", fnctLine, (char *)0)

  return (status);
}

int VtAlgorithmImplCopy (
   VtAlgorithmObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)(*object);
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltEncodeClassCtx *encodeCtx;
  unsigned char *buffer = (unsigned char *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Check the flag, it should be VOLT_ALG_SET_TYPE_FLAG.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_ALG_SET_TYPE_FLAG)
      break;

    /* The associated info should be a NULL pointer.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
      break;

    /* Check the class of the object. It should be 0 (not yet set)
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (obj->algClass != 0)
      break;

    /* Allocate enough space for an EncodeCtx.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    bufferSize = sizeof (VoltEncodeClassCtx);
    buffer = (unsigned char *)Z2Malloc (bufferSize, VOLT_MEMORY_SENSITIVE);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the contexts.
     */
    encodeCtx = (VoltEncodeClassCtx *)buffer;

    /* Fill in the fields.
     * We'll set the blockSize's at Init.
     */
    encodeCtx->GetEncodeOutputSize = CopyGetOutputSize;
    encodeCtx->EncodeInit = CopyEncodeInit;
    encodeCtx->EncodeUpdate = CopyEncodeUpdate;
    encodeCtx->EncodeFinal = CopyEncodeFinal;
    encodeCtx->DecodeInit = CopyEncodeInit;
    encodeCtx->DecodeUpdate = CopyEncodeUpdate;
    encodeCtx->DecodeFinal = CopyEncodeFinal;

    obj->algClass = VOLT_CLASS_ENCODE;
    obj->classCtx = (Pointer)encodeCtx;
    obj->ClassCtxDestroy = VoltDefaultCtxDestroy;

    status = 0;

  } while (0);

  /* If everything works, return 0.
   */
  if (status == 0)
    return (0);

  /* If something went wrong free up what we allocated.
   */
  if (buffer != (unsigned char *)0)
    Z2Free (buffer);

  VOLT_LOG_ERROR_INFO (
    0, *object, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtAlgorithmImplCopy", fnctLine, (char *)0)

  return (status);
}

int CopyGetOutputSize (
   VoltAlgorithmObject *obj,
   unsigned int callFlag,
   unsigned char *input,
   unsigned int inputLen,
   unsigned int *outputSize,
   VtRandomObject random
   )
{
  *outputSize = inputLen;
  return (0);
}

int CopyEncodeInit (
   VoltAlgorithmObject *obj
   )
{
  VoltEncodeClassCtx *encodeCtx = (VoltEncodeClassCtx *)(obj->classCtx);

  encodeCtx->plainBlockSize = 1;
  encodeCtx->codedBlockSize = 1;

  return (0);
}

int CopyEncodeUpdate (
   VoltAlgorithmObject *obj,
   VtRandomObject random,
   unsigned char *dataToEncode,
   unsigned int dataToEncodeLen,
   unsigned char *encoding,
   unsigned int *encodingLen
   )
{
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);

  Z2Memcpy (encoding, dataToEncode, dataToEncodeLen);
  *encodingLen = dataToEncodeLen;
  return (0);
}

int CopyEncodeFinal (
   VoltAlgorithmObject *obj,
   VtRandomObject random,
   unsigned char *decoding,
   unsigned int *decodingLen
   )
{
  *decodingLen = 0;
  return (0);
}

int CreateEncodeDecodeCopyObject (
   VtLibCtx libraryCtx,
   VtAlgorithmImpl AlgorithmImpl,
   Pointer associatedInfo,
   VtAlgorithmObject *algObj
   )
{
  int status;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Create the generic object.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltCreateObject (
      libraryCtx, (VoltObject **)algObj, sizeof (VoltAlgorithmObject),
      VOLT_OBJECT_TYPE_ALGORITHM);
    if (status != 0)
      break;

    /* Fill in further fields.
     */
    ((VoltAlgorithmObject *)(*algObj))->state = VOLT_STATE_CREATE_ALG_OBJ;

    /* An algorithm impl to load?
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (AlgorithmImpl != (VtAlgorithmImpl *)0)
      status = AlgorithmImpl (algObj, associatedInfo, VOLT_ALG_SET_TYPE_FLAG);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, libraryCtx, 0, status, 0, 0,
    (char *)0, "CreateEncodeDecodeCopyObject", fnctLine, (char *)0)

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久中文综合久久97| 亚洲va中文字幕| 国产又黄又大久久| 欧美电影免费观看高清完整版在线| 亚洲自拍欧美精品| 欧美丝袜丝交足nylons| 亚洲国产精品久久艾草纯爱| 欧美日韩在线电影| 日韩高清不卡一区二区三区| 日韩一区二区三| 国产在线一区观看| 国产精品久久久久天堂| 色综合天天综合色综合av| 亚洲美女免费视频| 欧美精品 国产精品| 激情综合网激情| 国产欧美日产一区| 色婷婷综合久久久久中文一区二区 | 欧美午夜电影在线播放| 亚洲成a人v欧美综合天堂下载| 欧美优质美女网站| 麻豆一区二区三| 国产午夜精品一区二区三区嫩草| 99视频精品在线| 日日欢夜夜爽一区| 久久综合丝袜日本网| 色婷婷国产精品综合在线观看| 婷婷激情综合网| 精品国产欧美一区二区| av一区二区三区在线| 视频一区欧美日韩| 久久久精品蜜桃| 在线精品视频免费观看| 久久国产精品无码网站| 中文欧美字幕免费| 欧美日本乱大交xxxxx| 国产麻豆精品一区二区| 亚洲美女视频在线观看| 精品美女被调教视频大全网站| 96av麻豆蜜桃一区二区| 美国十次了思思久久精品导航| 中文字幕高清不卡| 91麻豆精品国产自产在线| 成人国产视频在线观看| 日韩**一区毛片| 亚洲欧洲无码一区二区三区| 日韩视频免费观看高清完整版 | 在线播放/欧美激情| 粗大黑人巨茎大战欧美成人| 天天爽夜夜爽夜夜爽精品视频| 欧美国产欧美综合| 日韩午夜三级在线| 欧美视频一区二区三区在线观看| 国产成人亚洲综合a∨猫咪| 无吗不卡中文字幕| 日韩久久一区二区| 久久久国产精华| 日韩欧美三级在线| 欧美性猛片aaaaaaa做受| 成人免费黄色在线| 久久精品国产在热久久| 亚洲成人激情自拍| 亚洲欧美电影院| 国产精品视频免费看| 欧美成人精精品一区二区频| 欧美在线啊v一区| 成人性色生活片| 国产一区二区在线免费观看| 秋霞午夜av一区二区三区| 夜夜爽夜夜爽精品视频| 成人免费一区二区三区视频| 国产亚洲欧美激情| 精品国产污网站| 欧美成人vr18sexvr| 日韩一区二区三区在线观看| 欧美日韩大陆一区二区| 欧美无乱码久久久免费午夜一区| av电影一区二区| av亚洲精华国产精华精华| 国产美女娇喘av呻吟久久| 国内精品免费**视频| 美女尤物国产一区| 精品亚洲国产成人av制服丝袜| 三级久久三级久久久| 视频在线观看一区二区三区| 偷拍日韩校园综合在线| 丝袜美腿高跟呻吟高潮一区| 亚洲国产精品久久不卡毛片| 午夜欧美视频在线观看| 日韩国产欧美一区二区三区| 视频精品一区二区| 久久国产精品72免费观看| 麻豆成人在线观看| 另类小说综合欧美亚洲| 久久爱www久久做| 国产麻豆一精品一av一免费| 成人免费观看男女羞羞视频| 91论坛在线播放| 在线看不卡av| 欧美大尺度电影在线| 精品入口麻豆88视频| 国产日韩亚洲欧美综合| 国产精品国产三级国产专播品爱网| 国产精品美女久久久久av爽李琼| 亚洲三级在线免费观看| 一区二区三区不卡视频在线观看| 一区二区免费看| 美日韩一区二区| 成人污视频在线观看| 欧美日韩免费高清一区色橹橹| 4438亚洲最大| 久久精品亚洲精品国产欧美 | 亚洲蜜臀av乱码久久精品| 亚洲一区二区三区四区的 | 日韩激情在线观看| 久久av资源站| 菠萝蜜视频在线观看一区| 欧美日韩在线精品一区二区三区激情| 欧美一二三区在线观看| 亚洲国产经典视频| 午夜av一区二区| 成人性视频网站| 日韩视频永久免费| 亚洲人成7777| 美国十次了思思久久精品导航| 99久久久精品| 日韩精品综合一本久道在线视频| 国产精品久久久久影院亚瑟 | 久久er99热精品一区二区| 91视频免费观看| 欧美精品一区二区三区蜜臀 | 欧美私人免费视频| 久久精品一区四区| 午夜激情久久久| av一区二区三区| 精品免费视频一区二区| 亚洲欧美偷拍卡通变态| 国产乱人伦偷精品视频不卡| 欧美吻胸吃奶大尺度电影| 国产精品全国免费观看高清| 日韩电影在线一区二区| 91视频在线看| 中文字幕成人在线观看| 免费在线成人网| 欧美亚洲国产一区二区三区 | 成人欧美一区二区三区小说| 精品在线免费视频| 884aa四虎影成人精品一区| 国产精品国产a级| 国产一区二区三区免费在线观看| 欧美喷水一区二区| 亚洲精品国产精品乱码不99| 成人综合在线观看| 久久精品日韩一区二区三区| 美女网站视频久久| 91精品国产综合久久福利| 亚洲一级电影视频| 色综合久久综合中文综合网| 中文av字幕一区| av电影在线观看一区| 国产精品女人毛片| 成人精品免费看| 国产欧美一区在线| 国产精品一区二区不卡| 日韩欧美中文字幕一区| 日韩电影免费在线观看网站| 在线不卡a资源高清| 亚洲国产婷婷综合在线精品| 色综合中文字幕| 亚洲精品视频免费观看| 色综合久久久久综合体桃花网| 国产精品色眯眯| 99国产欧美久久久精品| 亚洲国产高清不卡| 不卡一区二区中文字幕| 亚洲欧洲另类国产综合| 91婷婷韩国欧美一区二区| 亚洲另类一区二区| 91久久久免费一区二区| 亚洲午夜在线电影| 日韩一区二区在线观看视频 | 国产成人亚洲综合色影视| 久久亚洲影视婷婷| 国产盗摄视频一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| av一本久道久久综合久久鬼色| 中文字幕中文字幕一区二区| 97久久精品人人做人人爽| 亚洲精品国产高清久久伦理二区| 91亚洲午夜精品久久久久久| 一区二区视频在线看| 欧美日韩一区二区三区高清| 天堂蜜桃一区二区三区| wwwwww.欧美系列| 大尺度一区二区| 亚洲第一电影网| 精品日产卡一卡二卡麻豆| av色综合久久天堂av综合| 亚洲综合男人的天堂| 日韩欧美视频一区|