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

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

?? sfwritetype.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 "p7obj.h"
#include "stringutil.h"
#include "errorctx.h"

int VtSecureFileImplWrite (
   VtSecureFileObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)(*object);
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)0;
  unsigned char *buffer = (unsigned char *)0;
  VtItem temp;
  unsigned char newLineChars[VOLT_SECURE_MAIL_NEW_LINE_DEFAULT_LEN] =
    VOLT_SECURE_MAIL_NEW_LINE_DEFAULT;
  char *header = VOLT_SECURE_FILE_BEGIN_MSG;
  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, we're expecting NULL.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info != (Pointer)0)
      break;

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

    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 = VOLT_SECURE_MAIL_NEW_LINE_DEFAULT_LEN;
    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;

    /* There's only one header in a SecureFile. If it is a file (not an
     * attachment), we'll need it. If it is an attachment, we won't.
     * Put it in just in case.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_MSG].data =
      (unsigned char *)Z2Malloc (
      VOLT_SECURE_FILE_BEGIN_MSG_LEN + VOLT_SECURE_MAIL_NEW_LINE_DEFAULT_LEN,
      VOLT_MEMORY_SENSITIVE);
    if (writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_MSG].data ==
      (unsigned char *)0)
      break;
    Z2Memcpy (
      writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_MSG].data, header,
      VOLT_SECURE_FILE_BEGIN_MSG_LEN);
    writeCtx->itemArray[VOLT_WRITE_SM_ITEM_BEGIN_MSG].len =
      VOLT_SECURE_FILE_BEGIN_MSG_LEN;

    obj->formatType = VOLT_MESSAGE_FORMAT_SECURE_FILE;
    obj->state = VOLT_SECURE_MAIL_STATE_WRITE_SET;
    obj->WriteInit = VoltSecureFileWriteInit;
    obj->WriteUpdate = VoltSecureMailWriteUpdate;
    obj->WriteFinal = VoltSecureMailWriteFinal;
    obj->GetEncodeDecodeSize = VoltCopyGetEncodeDecodeSize;
    obj->localCtx = (Pointer)buffer;
    obj->LocalCtxDestroy = VoltWriteSecureMailCtxDestroy;

    status = 0;

  } while (0);

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

  /* If error, free what we allocated.
   */
  VoltWriteSecureMailCtxDestroy ((Pointer)obj, (Pointer)writeCtx);

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

  return (status);
}

int VtSecureFileParamDataLen (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int *dataLen;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

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

    /* The SecureMail object must be built to write, an not yet be set
     * with dataLen.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if ((obj->state & VOLT_SECURE_MAIL_STATE_WRITE) == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (obj->dataLen != 0)
      break;
#if VT_64_BIT_LENGTH == 64
    if (obj->dataLen64 != (VtUInt64)0)
      break;
#endif

    /* The state must be VOLT_SECURE_MAIL_STATE_WRITE_SET.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* The info should be an unsigned int.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    dataLen = (unsigned int *)info;

    obj->dataLen = *dataLen;
#if VT_64_BIT_LENGTH == 64
    obj->dataLen64 = (VtUInt64)(obj->dataLen);
#endif

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtSecureFileParamDataLen", fnctLine, (char *)0)

  return (status);
}

#if VT_64_BIT_LENGTH == 64
int VtSecureFileParamDataLen64 (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VtUInt64 *dataLen;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

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

    /* The SecureMail object must be built to write, an not yet be set
     * with dataLen.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if ((obj->state & VOLT_SECURE_MAIL_STATE_WRITE) == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (obj->dataLen != 0)
      break;
    if (obj->dataLen64 != (VtUInt64)0)
      break;

    /* The state must be VOLT_SECURE_MAIL_STATE_WRITE_SET.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* The info should be a VtUInt64
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    dataLen = (VtUInt64 *)info;
    obj->dataLen64 = *dataLen;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtSecureFileParamDataLen64", fnctLine, (char *)0)

  return (status);
}
#endif

int VtSecureFileParamFileName (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int fileNameLen, labelLen, index;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)0;
  VoltSecureMailReadCtx *readCtx = (VoltSecureMailReadCtx *)0;
  Pointer *getInfo;
  VtUtf8StringList *descriptors;
  char *found;
  char *labelName = "file-name=";
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  if ((obj->state & VOLT_SECURE_MAIL_STATE_WRITE) != 0)
    writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);
  else
    readCtx = (VoltSecureMailReadCtx *)(obj->localCtx);

  do
  {
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
    {
      getInfo = (Pointer *)info;

      /* If this is an object to write, the file name is in the
       * writeCtx->fileName.
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_GET_INFO_UNAVAILABLE;
      if (writeCtx != (VoltSecureMailWriteCtx *)0)
      {
        if (writeCtx->fileName.data == (unsigned char *)0)
          break;
        *getInfo = (Pointer)(writeCtx->fileName.data);
        status = 0;
        break;
      }

      /* This is a read object.
       */
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtGetSecureFileParam (
        secureFileObj, VtSecureFileParamContentDescriptors,
        (Pointer *)&descriptors);
      if (status != 0)
        break;

      /* Search through the list, find the string that begins
       * "file-name=".
       */
      labelLen = 10;
      found = (char *)0;
      for (index = 0; index < descriptors->count; ++index)
      {
        found = Strstr (
          descriptors->utf8Strings[index], labelName, (VtLibCtx)libCtx);
        if (found != (char *)0)
          break;
      }

      /* If we went through the list and did not find file-name, the
       * info is unavailable.
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_GET_INFO_UNAVAILABLE;
      if (found == (char *)0)
        break;

      /* Find the semicolon.
       */
      labelName = found + labelLen;
      labelLen = Z2Strlen (labelName);
      found = Strchr (labelName, ';', (VtLibCtx)libCtx);
      if (found != (char *)0)
        labelLen = (unsigned int)found - (unsigned int)labelName;

      /* Store the name in fileName.
       */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍另类综合| 国产精品一区二区三区乱码| 午夜精品久久久久久久久久久| 麻豆视频一区二区| 欧美天堂亚洲电影院在线播放| 日本一区二区三区视频视频| 秋霞影院一区二区| 一本色道久久综合亚洲aⅴ蜜桃 | av一本久道久久综合久久鬼色| 国产一区二区调教| 91色视频在线| 2020国产精品自拍| 亚洲香蕉伊在人在线观| 国产成人精品三级| 欧美日韩中字一区| 亚洲欧洲精品成人久久奇米网| 久久99精品久久只有精品| 欧美日本在线看| 亚洲精品视频在线| 欧美丝袜第三区| 亚洲精选视频免费看| 丰满放荡岳乱妇91ww| 久久综合九色综合欧美就去吻 | 精品乱码亚洲一区二区不卡| 国产一区二区三区四区五区入口| 国产欧美综合色| 日本精品一级二级| 精品一区二区三区在线观看国产 | 裸体在线国模精品偷拍| 日本一区二区免费在线| eeuss鲁一区二区三区| 老司机精品视频在线| 国产精品久久久久影院| xnxx国产精品| 91精品国产综合久久精品| 成人激情校园春色| 激情综合色综合久久| 亚洲.国产.中文慕字在线| 一区二区三区在线看| 国产精品久久久久影院色老大| 91精品福利在线一区二区三区| 91麻豆精品视频| 福利电影一区二区| av电影一区二区| 成人天堂资源www在线| 成人av片在线观看| 色综合咪咪久久| 午夜成人免费视频| 秋霞午夜鲁丝一区二区老狼| 亚洲欧美一区二区三区极速播放| 日韩欧美国产三级电影视频| 成人97人人超碰人人99| 亚洲尤物视频在线| 日本不卡在线视频| 中文字幕不卡三区| 91看片淫黄大片一级在线观看| 成人小视频免费在线观看| 中文字幕五月欧美| 欧美视频日韩视频在线观看| 粉嫩蜜臀av国产精品网站| 欧美经典一区二区| 一本久久精品一区二区| 同产精品九九九| 国产性色一区二区| 在线观看不卡一区| 久草热8精品视频在线观看| 国产亚洲欧美激情| 欧美情侣在线播放| 成人网在线播放| 午夜欧美2019年伦理 | 午夜精品一区在线观看| 欧美成人性战久久| 色哟哟一区二区在线观看| 日韩av中文在线观看| 韩国av一区二区三区四区| 久久97超碰国产精品超碰| 日韩欧美综合一区| 日本韩国一区二区| 日本一不卡视频| 欧美探花视频资源| 不卡的av在线播放| 成人免费不卡视频| 99久久精品免费精品国产| 福利一区二区在线观看| 国产91丝袜在线18| av日韩在线网站| 99久久国产综合精品麻豆| www.欧美.com| 在线免费观看成人短视频| 欧美亚洲愉拍一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产成人啪免费观看软件| 成人国产在线观看| 欧美一级二级三级乱码| 精品欧美一区二区久久| 国产欧美日韩一区二区三区在线观看 | 18成人在线视频| 亚洲欧美怡红院| 亚洲午夜私人影院| 偷拍日韩校园综合在线| 日韩1区2区日韩1区2区| 国产乱码字幕精品高清av| 99久久国产综合精品女不卡| 欧美性色黄大片手机版| 91精品免费观看| 国产日韩精品一区二区浪潮av| 国产精品午夜春色av| 一区二区三区在线观看视频| 日韩国产一区二| 成人综合婷婷国产精品久久免费| 97se亚洲国产综合自在线不卡 | 日本一区二区视频在线| 亚洲永久免费av| 美美哒免费高清在线观看视频一区二区| 精品一区二区三区免费播放| 成人激情电影免费在线观看| 欧美色电影在线| 久久久久久电影| 亚洲一区二区三区免费视频| 九九九精品视频| 色综合久久久久| 久久亚洲免费视频| 亚洲影院久久精品| 国产精品88av| 9191精品国产综合久久久久久| 久久亚洲影视婷婷| 亚洲电影一区二区三区| 国产成人免费av在线| 欧美三级视频在线| 最新热久久免费视频| 美日韩一区二区三区| 色婷婷综合激情| 国产欧美一区二区在线观看| 日韩福利视频网| 91女人视频在线观看| 久久久午夜电影| 午夜欧美视频在线观看| 91在线视频18| 国产亚洲va综合人人澡精品| 日韩av电影免费观看高清完整版 | 国产午夜精品理论片a级大结局 | 国产激情一区二区三区四区| 在线视频一区二区免费| 国产精品免费久久| 国产乱理伦片在线观看夜一区 | 欧美亚洲国产一区在线观看网站| 久久久不卡影院| 久久狠狠亚洲综合| 在线成人av网站| 亚洲bt欧美bt精品777| 一本一道综合狠狠老| 国产精品天美传媒| 懂色av一区二区夜夜嗨| 欧美电影精品一区二区| 日韩和欧美一区二区三区| 欧美影院一区二区三区| 亚洲婷婷综合久久一本伊一区 | 亚洲免费视频成人| 成人自拍视频在线| 国产女主播视频一区二区| 精品一区二区久久| 91精品国产欧美一区二区| 亚洲妇女屁股眼交7| 在线观看视频一区二区| 一区二区三区中文字幕精品精品| 97精品电影院| 亚洲情趣在线观看| 色哟哟在线观看一区二区三区| 亚洲三级小视频| 色妞www精品视频| 一区二区三区**美女毛片| 日本丶国产丶欧美色综合| 亚洲精品中文字幕在线观看| 93久久精品日日躁夜夜躁欧美| 国产精品乱码一区二三区小蝌蚪| 国产麻豆欧美日韩一区| 国产欧美日韩在线观看| 99久久国产综合色|国产精品| 亚洲欧美另类久久久精品2019| 精品第一国产综合精品aⅴ| 另类综合日韩欧美亚洲| 精品成人免费观看| 国产成人免费xxxxxxxx| 亚洲天天做日日做天天谢日日欢| 99国产精品久久久久久久久久| 亚洲欧美一区二区三区极速播放| 色综合中文字幕国产 | 亚洲欧美偷拍卡通变态| 在线观看亚洲专区| 香蕉久久一区二区不卡无毒影院 | 成人aaaa免费全部观看| 一区二区三区四区在线播放| 欧美三区在线观看| 美日韩一级片在线观看| 国产女人水真多18毛片18精品视频| 成人午夜视频福利| 亚洲成人激情社区| 精品99一区二区三区| av在线播放一区二区三区| 丝袜美腿亚洲综合|