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

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

?? sacommon.c

?? IBE是一種非對稱密碼技術
?? C
字號:
/* Copyright 2005-2006, Voltage Security, all rights reserved.
 */

#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "sacommon.h"
#include "vtassert.h"
#include "errorctx.h"
#include "stringutil.h"

const char* VoltSecureArchiveEntryListAttributeName       = "Attachments";
const char* VoltSecureArchiveEntryAttributeName           = "Attachment";
const char* VoltSecureArchiveModDateAttributeName         = "ModDate";
const char* VoltSecureArchiveNameAttributeName            = "Name";
const char* VoltSecureArchiveCompressionAttributeName     = "Compression";
const char* VoltSecureArchiveSizeAttributeName            = "Size";
const char* VoltSecureArchiveCompressedSizeAttributeName  = "CompressedSize";
const char* VoltSecureArchiveDateAttributeFormat          = "%d %d %d %d %d %d";
const char* VoltSecureArchiveIndexFilePathName            = "Index";
const char* VoltSecureArchiveFilePrefixPathName           = "File_";
const char* VoltSecureArchiveHeadersName                  = "ZDMv2Headers";
const char* VoltSecureArchiveYearAttributeName            = "Year";
const char* VoltSecureArchiveMonthAttributeName           = "Month";
const char* VoltSecureArchiveDayAttributeName             = "Day";
const char* VoltSecureArchiveHourAttributeName            = "Hour";
const char* VoltSecureArchiveMinuteAttributeName          = "Minute";
const char* VoltSecureArchiveSecondAttributeName          = "Second";

int VoltCreateTempBufferStream(
  VtLibCtx libCtx,
  VtBufferTypeInfo* bufferTypeInfo,
  VtStreamObject* tempStream
)
{
  int status = 0;
  VtStreamImplMemoryInfo memInfo;
  VtStreamImplFileInfo fileInfo;
  VOLT_DECLARE_FNCT_LINE(fnctLine)

  VT_ASSERT(libCtx != (VtLibCtx)0);
  VT_ASSERT(bufferTypeInfo != (VtBufferTypeInfo*)0);
  VT_ASSERT(tempStream != (VtStreamObject*)0);
  
  do
  {
    *tempStream = (VtStreamObject)0;
    
    if (bufferTypeInfo->bufferType == VT_BUFFER_TYPE_MEMORY)
    {
      Z2Memset(&memInfo, 0, sizeof(memInfo));
      memInfo.openMode = VT_STREAM_OPEN_READ_WRITE;
      memInfo.flags = VT_STREAM_OPEN_ON_ACCESS;
      
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VtCreateStreamObject(libCtx, VtStreamImplMemory,
        (Pointer)&memInfo, tempStream);
    }
    else
    {
      VT_ASSERT(bufferTypeInfo->bufferType == VT_BUFFER_TYPE_FILE);

      Z2Memset(&fileInfo, 0, sizeof(fileInfo));
      fileInfo.fileCtx = bufferTypeInfo->fileCtx;
      fileInfo.openMode = VT_STREAM_OPEN_TEMPORARY;
      fileInfo.flags = VT_STREAM_OPEN_ON_ACCESS;
      fileInfo.fileName = "vt_";
      
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VtCreateStreamObject(libCtx, VtStreamImplFile,
        (Pointer)&fileInfo, tempStream);
    }
  }
  while (0);
  
  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, 0,
    fnctLine, "VoltSecureArchiveCreateTempStream", (unsigned char*)0)
    
  return status;
}

int VoltSecureArchiveFormatEntryExpression(
  VtLibCtx libCtx,
  unsigned int entryIndex,
  const unsigned char* attributeName,
  unsigned char* expression,
  unsigned int expressionSize
)
{
  int status = 0;
  unsigned int length;
  unsigned char* p;
  VOLT_DECLARE_FNCT_LINE(fnctLine)

  VT_ASSERT(libCtx != (VtLibCtx)0);
  VT_ASSERT(attributeName != (unsigned char*)0);
  VT_ASSERT(expression != (unsigned char*)0);
  
  do
  {
    /* Copy over the top-level entry array node name to the
     * expression. And the opening bracket for the array index.
     */
    length = Z2Strlen(VoltSecureArchiveEntryListAttributeName);
    
    VT_ASSERT(expressionSize > length + 10);
    
    Z2Memcpy(expression, VoltSecureArchiveEntryListAttributeName, length);
    p = expression + length;
    *p++ = '[';
    
    /* Convert the entryIndex to a string in the num buffer. We
     * work backwards in the buffer, starting with the null
     * terminator.
     */
    VOLT_SET_FNCT_LINE(fnctLine)
    status = VoltNumToDecimalString(entryIndex, p,
      expression + expressionSize - p, libCtx);
    if (status != 0)
      break;
    length = Z2Strlen(p);
    p += length;
    
    *p++ = ']';
    *p++ = '.';
    
    /* Now append the entry-level expression. Currently this
     * should just be a simple name, but in theory it could be
     * an expression (i.e. with nested elements). We also do a
     * check for the length of the name passed in to make sure
     * we won't overflow the buffer we allocated on the stack.
     */
    length = Z2Strlen(attributeName);
    if (length >= (unsigned int) (expression + expressionSize - p))
    {
      VOLT_SET_FNCT_LINE(fnctLine)
      status = VT_ERROR_BUFFER_TOO_SMALL;
      break;
    }
    Z2Memcpy(p, attributeName, length);
    p += length;
    *p++ = 0;
  }
  while (0);
  
  VOLT_LOG_ERROR_COMPARE(status, libCtx, status, 0,
    fnctLine, "VoltSecureArchiveFormatEntryExpression", (unsigned char*)0)
    
  return status;
}

int VoltSecureArchiveHasConsecutiveEOL(
  const unsigned char* text
)
{
  const unsigned char* p;
  unsigned char previousEOL = 0;
  unsigned char c;
  
  if (text != (const unsigned char*)0)
  {
    p = text;
    while ((c = *p++) != 0)
    {
      if ((c == '\r') || (c == '\n'))
      {
        if (previousEOL)
          return 1;
        if ((c == '\r') && (*p == '\n'))
          p++;
        previousEOL = 1;
      }
      else
      {
        previousEOL = 0;
      }
    }
  }
  
  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费欧美高清视频| 亚洲国产一区二区视频| 久久99国产精品久久99| 91 com成人网| 经典三级视频一区| 国产精品久久久久久久岛一牛影视 | 国产曰批免费观看久久久| 欧美一区二区在线视频| 免费在线观看精品| 日韩欧美www| 国产99精品视频| 亚洲精品中文字幕在线观看| 欧美日韩在线直播| 久久国产生活片100| 亚洲国产成人在线| 在线观看免费一区| 久久精品国产亚洲高清剧情介绍 | 国产98色在线|日韩| 亚洲视频中文字幕| 51午夜精品国产| 国产一区999| 亚洲欧美国产高清| 欧美一区二区免费| 波多野结衣在线aⅴ中文字幕不卡| 亚洲欧美日韩人成在线播放| 欧美老肥妇做.爰bbww视频| 精品一区二区成人精品| 亚洲精品成a人| 欧美电影精品一区二区| 色婷婷综合久久久中文字幕| 青青国产91久久久久久| 国产精品久久久久婷婷| 欧美色网站导航| 国产乱子轮精品视频| 亚洲免费在线看| 久久综合色婷婷| 欧美性猛交xxxx黑人交| 国产精品1区二区.| 日韩激情一区二区| 国产精品短视频| 欧美xxxxx牲另类人与| 一道本成人在线| 国产一区二区91| 日韩专区一卡二卡| 亚洲视频一区二区在线观看| 欧美成人精品1314www| 日本韩国精品在线| 国产成人免费av在线| 日韩av在线播放中文字幕| 综合久久国产九一剧情麻豆| 久久九九全国免费| 日韩女优av电影在线观看| 欧美亚洲综合久久| jlzzjlzz亚洲日本少妇| 精品影院一区二区久久久| 丝袜美腿一区二区三区| 亚洲精品伦理在线| 国产精品国产成人国产三级| 欧美不卡123| 欧美成人性福生活免费看| 8x8x8国产精品| 欧美日韩国产成人在线免费| 色婷婷久久久综合中文字幕| 成人精品视频一区| 国产麻豆日韩欧美久久| 久久国产麻豆精品| 日韩高清在线一区| 亚洲va欧美va人人爽| 亚洲精品videosex极品| 国产精品短视频| 亚洲欧洲精品成人久久奇米网| 久久久久久久久久久黄色| 久久综合久久综合九色| 日韩欧美一区二区免费| 欧美成人aa大片| 精品国产91亚洲一区二区三区婷婷| 欧美日韩成人在线| 91精品国产手机| 3d动漫精品啪啪| 5月丁香婷婷综合| 日韩三级在线观看| 日韩欧美色综合| 久久久久久一二三区| 国产人成亚洲第一网站在线播放| 亚洲精品一区二区三区精华液| 欧美成人一区二区| 久久看人人爽人人| 亚洲欧洲日产国产综合网| 亚洲欧美一区二区三区国产精品| 亚洲色图色小说| 亚洲资源中文字幕| 日本强好片久久久久久aaa| 美女视频一区二区三区| 极品少妇一区二区| 成人av高清在线| 色偷偷久久人人79超碰人人澡| 欧美日韩一级片在线观看| 欧美一区二区三区白人| 精品久久久久久久久久久久久久久久久| 日韩免费看网站| 国产精品视频免费看| 亚洲欧美电影一区二区| 婷婷激情综合网| 国产一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 午夜国产不卡在线观看视频| 日韩国产精品大片| 国产丶欧美丶日本不卡视频| 91一区二区在线观看| 欧美日韩精品一区二区| 精品国产伦理网| 日韩毛片视频在线看| 五月天精品一区二区三区| 国产资源精品在线观看| 日本高清视频一区二区| 欧美大白屁股肥臀xxxxxx| 中文字幕亚洲欧美在线不卡| 午夜日韩在线观看| 福利视频网站一区二区三区| 在线精品亚洲一区二区不卡| 欧美成人艳星乳罩| 一区二区三区产品免费精品久久75| 日本欧美一区二区在线观看| 成人97人人超碰人人99| 欧美精品久久一区二区三区| 国产三级欧美三级日产三级99 | 亚洲国产精品综合小说图片区| 九九九精品视频| 欧美性xxxxxxxx| 欧美国产丝袜视频| 另类成人小视频在线| 日本二三区不卡| 欧美韩日一区二区三区| 日韩av在线免费观看不卡| 色域天天综合网| 欧美国产精品久久| 久久精品国产在热久久| 欧美日韩视频在线观看一区二区三区| 国产无一区二区| 极品少妇xxxx精品少妇偷拍| 欧美日韩精品电影| 亚洲欧洲成人精品av97| 国产精品一区二区久久精品爱涩| 欧美日韩激情一区二区| 亚洲天堂精品视频| 国产91丝袜在线播放0| 日韩一区二区免费高清| 性欧美疯狂xxxxbbbb| 91丨porny丨国产| 中文字幕不卡三区| 国产电影一区二区三区| 精品国精品自拍自在线| 日韩成人一级片| 欧美性大战久久久久久久| 亚洲欧美乱综合| 99久久精品国产毛片| 欧美经典一区二区三区| 国产在线视频一区二区三区| 欧美一区二视频| 日韩在线一区二区| 91精品中文字幕一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 色综合欧美在线| 亚洲综合一区二区精品导航| 色婷婷综合久久| 亚洲精品国产精华液| 91久久一区二区| 亚洲另类在线制服丝袜| 91麻豆国产福利在线观看| 日韩理论电影院| 色综合天天视频在线观看| 亚洲精品久久久蜜桃| 在线精品视频一区二区三四| 怡红院av一区二区三区| 日本韩国欧美一区| 午夜久久久久久久久 | 日韩欧美一级精品久久| 久久精品国产久精国产爱| 欧美成人一级视频| 国产乱人伦偷精品视频免下载| 日本一区二区三区四区在线视频 | 在线亚洲欧美专区二区| 亚洲一区二区三区四区的| 欧美精品一级二级三级| 免费精品视频在线| 久久久久久久久久久久久夜| 国产成人av电影在线| 亚洲欧美日韩在线| 欧美日韩日日夜夜| 精品一区二区日韩| 国产精品日韩精品欧美在线| 91首页免费视频| 蜜芽一区二区三区| 久久久精品天堂| 色爱区综合激月婷婷| 日韩国产欧美在线播放| 久久精品欧美一区二区三区不卡| 成人app网站| 男女男精品视频网| 国产欧美精品一区二区色综合 |