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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sm2write.c

?? IBE是一種非對稱密碼技術(shù)
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "securemail.h"
#include "policy.h"
#include "vtime.h"
#include "zdm2common.h"
#include "errorctx.h"
#include "vtassert.h"
#include "stringutil.h"
#include "zdm.h"
#include "sacommon.h"

#define VOLT_SECURE_MAIL_BASE_64_LINE_LENGTH     64

static int VoltSecureMail2InitMessageAttributes(
  VtSecureMailObject secureMailObj,
  VtDataNodeObject attributesNode,
  const unsigned char* contentType,
  const unsigned char* characterSet,
  const unsigned char* originalCharacterSet
)
{
  int status;
  VtLibCtx libCtx;
  VoltSecureMailWriteCtx* writeCtx;
  VtDataNodeObject node;
  unsigned char version[64];
  VOLT_DECLARE_FNCT_LINE(fnctLine)
  
  VT_ASSERT(secureMailObj != (VtSecureMailObject)0);
  VT_ASSERT(attributesNode != (VtDataNodeObject)0);
  
  libCtx = secureMailObj->voltObject.libraryCtx;
  writeCtx = (VoltSecureMailWriteCtx*) secureMailObj->localCtx;
  
  do
  {
    status = VoltNumToDecimalString(secureMailObj->version,
      version, sizeof(version), libCtx);
    VT_ASSERT(status == 0);

    /* Set the current version */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2VersionAttributeName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, version);
    if (status != 0)
      break;
      
    /* Set the compatible version */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2CompatibleVersionAttributeName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, version);
    if (status != 0)
      break;
    
    /* Set the recipients node. We don't actually populate it with
     * any recipients, because they really should only be used for ZDM
     * messages, but the existing Voltage core code expects it to be
     * there, even for non-ZDM messages, so we need to add an empty
     * element so we're compatible
     */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2RecipientsAttributeName, 1, &node);
    if (status != 0)
      break;

    if (contentType == (unsigned char*)0)
      contentType = VoltZDM2DefaultContentType;
      
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2ContentTypeAttributeName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, contentType);
    if (status != 0)
      break;
    
    if (characterSet == (unsigned char*)0)
      characterSet = VoltZDM2DefaultCharacterSet;
      
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2CharacterSetAttributeName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, characterSet);
    if (status != 0)
      break;
    
    if (originalCharacterSet == (unsigned char*)0)
      originalCharacterSet = VoltZDM2DefaultCharacterSet;
      
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2OriginalCharacterSetAttributeName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, originalCharacterSet);
    if (status != 0)
      break;
  }
  while (0);

  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, 0,
    fnctLine, "VoltSecureMail2InitMessageAttributes", (unsigned char*)0)
  
  return status;
}

int VoltSecureMail2InitTemplateVariables(
  VtSecureMailObject secureMailObj,
  VtDataNodeObject attributesNode,
  const unsigned char* messageHeader,
  const unsigned char* messageStartTag,
  const unsigned char* messageEndTag,
  const unsigned char* charset
)
{
  int status;
  VtLibCtx libCtx;
  VtDataNodeObject node;
  VOLT_DECLARE_FNCT_LINE(fnctLine)
  
  VT_ASSERT(secureMailObj != (VtSecureMailObject)0);
  VT_ASSERT(attributesNode != (VtDataNodeObject)0);
  
  libCtx = secureMailObj->voltObject.libraryCtx;
  
  do
  {
    /* Set the message header */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2HeaderVariableName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, messageHeader);
    if (status != 0)
      break;
      
    /* Set the message start tag */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2MessageStartTagVariableName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, messageStartTag);
    if (status != 0)
      break;

    /* Set the message end tag */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2MessageEndTagVariableName, 1, &node);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, messageEndTag);
    if (status != 0)
      break;
      
    /* Set the charset */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeResolveChild(attributesNode,
      VoltZDM2CharSetVariableName, 1, &node);
    if (status != 0)
      break;
    
    if (charset == (const unsigned char*)0)
      charset = VoltZDM2DefaultCharacterSet;
      
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtDataNodeSetStringValue(node, charset);
    if (status != 0)
      break;    
  }
  while (0);

  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, 0,
    fnctLine, "VoltSecureMail2InitTemplateVariables", (unsigned char*)0)
  
  return status;
}

static int VoltSecureMail2ExpandTemplate(
  VtLibCtx libCtx,
  unsigned char* templateText,
  unsigned int templateLength,
  VtDataNodeObject templateVariables,
  VtItem* item
)
{
  int status;
  VtStreamObject outputStream = (VtStreamObject)0;
  VtStreamSize outputSize, readSize;
  VOLT_DECLARE_FNCT_LINE(fnctLine)
  VOLT_DECLARE_ERROR_TYPE(errorType)
  
  VOLT_SET_ERROR_TYPE(errorType, 0)

  do
  {
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VoltZDM2ExpandTemplate(libCtx, templateText,
      templateLength, templateVariables, &outputStream);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtStreamGetSize(outputStream, &outputSize);
    if (status != 0)
      break;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtStreamSetPosition(outputStream, 0, VT_STREAM_FROM_START);
    if (status != 0)
      break;
    
    item->data = (unsigned char*) Z3Malloc(outputSize);
    item->len = (unsigned int) outputSize;
    
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VtStreamRead(outputStream, item->data, item->len, &readSize);
    if (item->len != (unsigned int)readSize)
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      VOLT_SET_ERROR_TYPE(errorType, VT_ERROR_TYPE_PRIMARY)
      status = VT_ERROR_STREAM_READ;
    }
    if (status != 0)
      break;
  }
  while (0);

  VtDestroyStreamObject(&outputStream);
  
  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, errorType,
    fnctLine, "VoltSecureMail2ExpandTemplate", (unsigned char*)0)
  
  return status;
}

#if 0
int VoltSecureMail2EncloseInHTMLComment(
  VtLibCtx libCtx,
  unsigned char* str,
  unsigned char** commentedStr
)
{
  int status = 0;
  unsigned char commentStart[] = "<!--";
  unsigned char commentEnd[] = "-->";
  unsigned int commentStartLength = sizeof(commentStart) - 1;
  unsigned int commentEndLength = sizeof(commentEnd) - 1;
  unsigned int strLength;
  unsigned char* p;
  VOLT_DECLARE_FNCT_LINE(fnctLine)

  VT_ASSERT(str != (unsigned char*)0);
  VT_ASSERT(commentedStr != (unsigned char**)0);
  
  do
  {
    strLength = Z2Strlen(str);
    
    p = (unsigned char*)
      Z3Malloc(commentStartLength + strLength + commentEndLength + 1);
    if (p == (unsigned char*)0)
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_MEMORY;
      break;
    }
    *commentedStr = p;
    Z2Memcpy(p, commentStart, commentStartLength);
    p += commentStartLength;
    Z2Memcpy(p, str, strLength);
    p += strLength;
    Z2Memcpy(p, commentEnd, commentEndLength);
    p += commentEndLength;
    *p = 0;
  }
  while (0);

  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, VT_ERROR_TYPE_PRIMARY,
    fnctLine, "VoltSecureMail2EncloseInHTMLComment", (unsigned char*)0)
  
  return status;
}
#endif

static int VoltSecureMail2WriteInitCommon(
  VtSecureMailObject secureMailObj,
  VtPolicyCtx policyCtx,
  unsigned int version
)
{
  int status;
  unsigned int i, elementLen, newLineLen;
  VoltSecureMailWriteCtx* writeCtx = (VoltSecureMailWriteCtx*)(secureMailObj->localCtx);
  VoltLibCtx* libCtx = (VoltLibCtx*)(secureMailObj->voltObject.libraryCtx);
  VtBase64Info b64Info;
  int useHTMLWrapping;
  unsigned char* messageStartTag = (unsigned char*)0;
  unsigned char* secureBlockStartTag = (unsigned char*)0;
  unsigned char* secureBlockEndTag = (unsigned char*)0;
  unsigned char* messageEndTag = (unsigned char*)0;
  unsigned char* messageHeader = (unsigned char*)0;
  VtItem* messageHeaderItem = (VtItem*)0;
  VtItem* templateItem = (VtItem*)0;
  VtItem temp;
  VtDataNodeObject templateVariablesNode = (VtDataNodeObject)0;
  unsigned char* headerText;
  unsigned int headerLength;
  unsigned char* trailerText;
  unsigned int trailerLength;
  VOLT_DECLARE_FNCT_LINE(fnctLine)
  VOLT_DECLARE_ERROR_TYPE(errorType)
  
  VOLT_SET_ERROR_TYPE(errorType, 0)

  do

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类变人与禽xxxxx| 国产成人午夜精品影院观看视频| 欧美一级久久久| 成人综合在线观看| 亚洲.国产.中文慕字在线| 久久综合色鬼综合色| 欧洲精品在线观看| 国产精品一区在线| 天堂蜜桃91精品| 成人免费在线视频观看| 亚洲精品一区二区三区福利| 91国产免费观看| 成人久久18免费网站麻豆 | 久久久久久久久99精品| 欧美专区亚洲专区| eeuss鲁片一区二区三区| 九九国产精品视频| 丝袜诱惑亚洲看片| 玉足女爽爽91| 国产精品色婷婷| 久久综合色天天久久综合图片| 7777精品伊人久久久大香线蕉的 | 亚洲精品免费在线观看| 久久婷婷国产综合精品青草| 欧美肥妇bbw| 欧美日韩一区精品| 一本在线高清不卡dvd| 大陆成人av片| 国产乱码字幕精品高清av| 美国十次了思思久久精品导航| 亚洲午夜一区二区| 亚洲人成影院在线观看| 国产精品丝袜黑色高跟| 国产区在线观看成人精品 | 亚洲色图视频网站| 国产精品麻豆久久久| 国产视频一区不卡| 国产日韩欧美在线一区| 亚洲精品一区二区三区蜜桃下载| 欧美一区二区视频在线观看2020 | 国产成人高清在线| 国产在线精品国自产拍免费| 婷婷久久综合九色综合绿巨人| 亚洲一区二区三区四区不卡| 亚洲精品日日夜夜| 一区二区三区四区视频精品免费| 亚洲激情图片小说视频| 亚洲精品国产一区二区精华液 | 成人不卡免费av| 成人在线综合网站| av一二三不卡影片| 97精品电影院| 欧美在线视频日韩| 欧美猛男gaygay网站| 欧美日韩国产影片| 91精品国产美女浴室洗澡无遮挡| 7777精品久久久大香线蕉| 欧美高清dvd| 久久众筹精品私拍模特| 久久久亚洲精品石原莉奈| 国产情人综合久久777777| 国产精品久久久久久久久久久免费看| 国产精品乱子久久久久| 亚洲免费电影在线| 天堂在线一区二区| 国产一区二区剧情av在线| 懂色av中文字幕一区二区三区| 不卡欧美aaaaa| 欧美亚日韩国产aⅴ精品中极品| 欧美日韩一区三区| 精品国产乱码久久久久久免费| 国产午夜精品一区二区三区四区| 亚洲天堂福利av| 日韩制服丝袜先锋影音| 国产一区二区在线观看免费| 成人av综合在线| 欧美系列亚洲系列| 国产亚洲人成网站| 一区二区三区高清在线| 日韩不卡一二三区| av亚洲产国偷v产偷v自拍| 欧美午夜精品一区| 久久综合久久综合久久| 亚洲精品视频在线观看免费| 男人操女人的视频在线观看欧美 | 成人在线综合网站| 欧美日韩视频一区二区| 国产亚洲va综合人人澡精品| 亚洲精品久久久久久国产精华液| 免费观看91视频大全| av不卡一区二区三区| 日韩一区二区在线看片| 国产精品久久久久久久久久免费看 | 青青草97国产精品免费观看| 国产精品一级在线| 欧美浪妇xxxx高跟鞋交| 亚洲国产经典视频| 免费在线看一区| 日本韩国一区二区三区视频| 欧美tickle裸体挠脚心vk| 亚洲美女在线一区| 国产精品中文字幕一区二区三区| 欧美在线小视频| 国产精品久久久久影视| 蜜芽一区二区三区| 在线观看欧美日本| 中文字幕免费不卡在线| 日韩经典中文字幕一区| 91社区在线播放| 久久久五月婷婷| 免费在线看一区| 欧美日韩国产在线观看| 18涩涩午夜精品.www| 国产精品18久久久久久久网站| 欧美剧情片在线观看| 亚洲欧美一区二区三区久本道91 | 欧美日韩国产精品成人| 中文字幕亚洲欧美在线不卡| 韩国在线一区二区| 欧美高清视频在线高清观看mv色露露十八 | www国产亚洲精品久久麻豆| 亚洲国产精品久久不卡毛片| av影院午夜一区| 欧美国产一区二区在线观看| 另类小说色综合网站| 3d成人动漫网站| 亚洲成人精品影院| 色综合久久久久综合99| 国产精品国产三级国产aⅴ入口| 精品午夜久久福利影院| 欧美成人精品高清在线播放| 日韩高清国产一区在线| 欧美性淫爽ww久久久久无| 亚洲国产一二三| 欧美三级韩国三级日本三斤 | 亚洲一区二区三区四区在线| 色婷婷综合久久久久中文 | 日韩美女久久久| gogogo免费视频观看亚洲一| 国产精品久久久久影院亚瑟| 成人av高清在线| 国产精品亲子乱子伦xxxx裸| jiyouzz国产精品久久| 椎名由奈av一区二区三区| 91年精品国产| 有码一区二区三区| 欧美日韩高清影院| 麻豆精品新av中文字幕| 久久女同精品一区二区| 国产白丝精品91爽爽久久| 国产欧美日韩精品在线| 成人av午夜电影| 亚洲女同一区二区| 精品视频在线看| 日本三级韩国三级欧美三级| 精品理论电影在线观看| 福利电影一区二区| 一区二区在线观看免费| 在线观看国产一区二区| 日韩精品一二三区| www久久久久| 91在线观看下载| 亚洲国产精品影院| 欧美tk—视频vk| 成人免费看的视频| 一卡二卡欧美日韩| 日韩欧美国产三级| 成人性色生活片| 亚洲欧美区自拍先锋| 欧美男男青年gay1069videost| 三级在线观看一区二区| 91精品国产品国语在线不卡| 国模一区二区三区白浆| 91麻豆精品国产自产在线| 国产一区二区三区观看| 亚洲精品伦理在线| 日韩一区二区在线观看| 懂色一区二区三区免费观看| 国产精品久线在线观看| 欧美日韩一区三区四区| 国产成人免费网站| 亚洲成a人片在线不卡一二三区| 欧美一个色资源| 99国产精品国产精品久久| 亚洲成a人片在线不卡一二三区| 日韩精品一区二区三区三区免费| 99精品视频一区| 另类小说综合欧美亚洲| 337p粉嫩大胆色噜噜噜噜亚洲| 99国产精品久久久久久久久久| 日本91福利区| 日韩一区欧美一区| 日韩欧美国产1| www.欧美亚洲| 久88久久88久久久| 亚洲最大成人综合| 国产片一区二区| 日韩女优电影在线观看| 成人avav在线| 精品一二三四在线|