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

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

?? ibeenctype.c

?? IBE是一種非對稱密碼技術
?? C
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "algobj.h"
#include "cipher.h"
#include "ibe.h"
#include "mpint.h"
#include "errorctx.h"

int VtAlgorithmImplBFType1IBE (
   VtAlgorithmObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
#if VOLT_ALIGNMENT != 1
  unsigned int pad;
#endif
  unsigned int bufferSize, offset;
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)(*object);
  VoltLibCtx *libCtx;
  unsigned char *buffer = (unsigned char *)0;
  VoltCipherClassCtx *cipherCtx;
  VoltBFType1IBECtx *ibeCtx;
  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;

    /* Check the class of the object. It should be 0 (not yet set).
     * This SetType is not allowed when an object is already set.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (obj->algClass != 0)
      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;

    libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);

    /* Allocate enough space for a CipherCtx and an IBEPubEncCtx.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    bufferSize = sizeof (VoltCipherClassCtx) + sizeof (VoltBFType1IBECtx);
#if VOLT_ALIGNMENT != 1
    /* If the alignment is 1, there's no need to pad. If not, compute
     * the pad length.
     */
    VOLT_COMPUTE_ALIGN_PAD (VOLT_ALIGNMENT, sizeof (VoltCipherClassCtx), pad)
    bufferSize += pad;
#endif
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the pointers.
     */
    cipherCtx = (VoltCipherClassCtx *)buffer;
    offset = sizeof (VoltCipherClassCtx);
#if VOLT_ALIGNMENT != 1
    offset += pad;
#endif
    ibeCtx = (VoltBFType1IBECtx *)(buffer + offset);

    /* Populate the object and contexts.
     */
    obj->algClass = VOLT_CLASS_CIPHER;
    obj->classCtx = (Pointer)cipherCtx;
    obj->ClassCtxDestroy = BFType1IBEClassCtxDestroy;

    cipherCtx->GetOutputSize = BFType1IBEGetOutputSize;
    cipherCtx->EncryptInit = BFType1IBEPubEncryptInit;
    cipherCtx->EncryptUpdate = BFType1IBEPubEncryptUpdate;
    cipherCtx->WrapKey = VoltDefaultWrapSymKey;
    cipherCtx->DecryptInit = BFType1IBEPriDecryptInit;
    cipherCtx->DecryptUpdate = BFType1IBEPriDecryptUpdate;
    cipherCtx->UnwrapKey = VoltDefaultUnwrapSymKey;
    cipherCtx->localCipherCtx = (Pointer)ibeCtx;
    cipherCtx->setState = VOLT_CIPHER_SET_STATE_COMPLETE;

    status = 0;

  } while (0);

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

  /* If something went wrong, destroy anything we created and indicate
   * that this object is not usable.
   */
  obj->state = VOLT_STATE_ERROR;

  VOLT_LOG_ERROR (
    obj->voltObject.libraryCtx, status, VT_ERROR_TYPE_PRIMARY, fnctLine,
    "VtAlgorithmImplBFType1IBE", (char *)0)

  return (status);
}

int VtAlgorithmImplBBType1IBE (
   VtAlgorithmObject *object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
#if VOLT_ALIGNMENT != 1
  unsigned int pad;
#endif
  unsigned int bufferSize, offset;
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)(*object);
  VoltLibCtx *libCtx;
  unsigned char *buffer = (unsigned char *)0;
  VoltCipherClassCtx *cipherCtx;
  VoltBBType1IBECtx *ibeCtx;
  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;

    /* Check the class of the object. It should be 0 (not yet set).
     * This SetType is not allowed when an object is already set.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (obj->algClass != 0)
      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;

    libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);

    /* Allocate enough space for a CipherCtx and an VoltBBType1IBECtx.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    bufferSize = sizeof (VoltCipherClassCtx) + sizeof (VoltBBType1IBECtx);
#if VOLT_ALIGNMENT != 1
    /* If the alignment is 1, there's no need to pad. If not, compute
     * the pad length.
     */
    VOLT_COMPUTE_ALIGN_PAD (VOLT_ALIGNMENT, sizeof (VoltCipherClassCtx), pad)
    bufferSize += pad;
#endif
    buffer = (unsigned char *)Z2Malloc (bufferSize, 0);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the pointers.
     */
    cipherCtx = (VoltCipherClassCtx *)buffer;
    offset = sizeof (VoltCipherClassCtx);
#if VOLT_ALIGNMENT != 1
    offset += pad;
#endif
    ibeCtx = (VoltBBType1IBECtx *)(buffer + offset);

    /* Populate the object and contexts.
     */
    obj->algClass = VOLT_CLASS_CIPHER;
    obj->classCtx = (Pointer)cipherCtx;
    obj->ClassCtxDestroy = BBType1IBEClassCtxDestroy;

    cipherCtx->GetOutputSize = BBType1IBEGetOutputSize;
    cipherCtx->EncryptInit = BBType1IBEPubEncryptInit;
    cipherCtx->EncryptUpdate = BBType1IBEPubEncryptUpdate;
    cipherCtx->WrapKey = VoltDefaultWrapSymKey;
    cipherCtx->DecryptInit = BBType1IBEPriDecryptInit;
    cipherCtx->DecryptUpdate = BBType1IBEPriDecryptUpdate;
    cipherCtx->UnwrapKey = VoltDefaultUnwrapSymKey;
    cipherCtx->localCipherCtx = (Pointer)ibeCtx;
    cipherCtx->setState = VOLT_CIPHER_SET_STATE_COMPLETE;

    status = 0;

  } while (0);

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

  /* If something went wrong, destroy anything we created and indicate
   * that this object is not usable.
   */
  obj->state = VOLT_STATE_ERROR;

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, *object, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtAlgorithmImplBBType1IBE", fnctLine, (char *)0)

  return (status);
}

void BFType1IBEClassCtxDestroy (
   Pointer algObj,
   Pointer ctx
   )
{
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)algObj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)ctx;
  VoltBFType1IBECtx *ibeCtx;

  /* Is there anything to destroy?
   */
  if (ctx == (Pointer)0)
    return;

  ibeCtx = (VoltBFType1IBECtx *)(cipherCtx->localCipherCtx);

  VoltReleaseBfCtx (libCtx, &(ibeCtx->bfCtx));
  if (ibeCtx->encodedId.data != (unsigned char *)0)
    Z2Free (ibeCtx->encodedId.data);
  if (ibeCtx->privateValue.data != (unsigned char *)0)
    Z2Free (ibeCtx->privateValue.data);
  if (ibeCtx->processedData.data != (unsigned char *)0)
    Z2Free (ibeCtx->processedData.data);

  Z2Free (ctx);
}

void BBType1IBEClassCtxDestroy (
   Pointer algObj,
   Pointer ctx
   )
{
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)algObj;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)ctx;
  VoltBBType1IBECtx *ibeCtx;

  /* Is there anything to destroy?
   */
  if (ctx == (Pointer)0)
    return;

  ibeCtx = (VoltBBType1IBECtx *)(cipherCtx->localCipherCtx);

  VoltReleaseBbCtx (libCtx, &(ibeCtx->bbCtx));
  if (ibeCtx->encodedId.data != (unsigned char *)0)
    Z2Free (ibeCtx->encodedId.data);
  if (ibeCtx->privateValue.data != (unsigned char *)0)
    Z2Free (ibeCtx->privateValue.data);
  if (ibeCtx->processedData.data != (unsigned char *)0)
    Z2Free (ibeCtx->processedData.data);

  Z2Free (ctx);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人美女在线观看| 视频一区二区三区入口| 欧洲色大大久久| 免费视频最近日韩| 一区二区三区欧美在线观看| 日韩一区二区免费视频| 91免费观看视频| 另类小说综合欧美亚洲| 久久久综合网站| 欧美人xxxx| 成人免费视频国产在线观看| 麻豆一区二区99久久久久| 中文字幕一区日韩精品欧美| 色噜噜狠狠色综合中国| 精品一区二区在线免费观看| 一个色妞综合视频在线观看| 国产精品热久久久久夜色精品三区 | 欧美日韩国产首页| 99精品欧美一区二区三区小说| 夜夜操天天操亚洲| 亚洲区小说区图片区qvod| 日韩欧美一级二级三级久久久| 国产精品99精品久久免费| 奇米四色…亚洲| 一区二区免费看| 亚洲免费伊人电影| 国产色一区二区| 日韩精品一区二区三区三区免费| 在线一区二区三区四区五区| 日韩精品电影一区亚洲| 天天综合色天天综合| 亚洲精选视频在线| 亚洲乱码国产乱码精品精的特点| 久久综合精品国产一区二区三区| 欧美草草影院在线视频| 在线亚洲精品福利网址导航| 国产99久久久精品| 国产成人亚洲综合a∨猫咪| 日韩av一级电影| 日本欧美加勒比视频| 伊人色综合久久天天人手人婷| 综合久久给合久久狠狠狠97色| 欧美精品一区二区三区在线| 日韩三级免费观看| 精品久久久影院| 欧美一区二区免费视频| 日韩一区二区三区免费看| 欧美久久久久免费| 日韩欧美aaaaaa| 欧美大片一区二区三区| 欧美另类高清zo欧美| 欧美精品少妇一区二区三区| 欧美性色综合网| 3atv在线一区二区三区| 欧美另类videos死尸| 日韩欧美电影在线| 欧美一区二区三区喷汁尤物| 日韩欧美高清在线| 久久久久9999亚洲精品| 欧美国产视频在线| 亚洲欧美日韩成人高清在线一区| 国产精品美女久久久久久久| 亚洲一区二区视频| 亚洲国产日韩综合久久精品| 蜜桃一区二区三区在线观看| 麻豆国产欧美日韩综合精品二区| 激情五月婷婷综合| 成人av在线播放网站| 欧美在线你懂的| 欧美草草影院在线视频| 精品国产精品一区二区夜夜嗨| 国产三级欧美三级日产三级99| 国产精品色婷婷| 五月天精品一区二区三区| 麻豆成人av在线| 99亚偷拍自图区亚洲| 欧美中文字幕一区| 精品久久久久久久久久久久久久久| 久久久蜜臀国产一区二区| 欧美精品一区二区三区久久久| 久久这里只有精品6| 国产精品国产馆在线真实露脸 | 成人精品一区二区三区四区 | 欧美日韩不卡在线| 精品日韩在线观看| 综合久久国产九一剧情麻豆| 亚洲成av人片在线| 成人成人成人在线视频| 欧美日韩成人综合| www国产成人免费观看视频 深夜成人网| 国产欧美日本一区视频| 亚洲一区二区不卡免费| 福利一区在线观看| 欧美四级电影网| 亚洲国产激情av| 亚洲成av人综合在线观看| 波多野结衣一区二区三区| 欧美视频你懂的| 国产精品看片你懂得| www..com久久爱| 日韩三级视频在线看| 亚洲欧美精品午睡沙发| 日韩三级视频在线观看| 亚洲精品五月天| 国产乱码字幕精品高清av| 56国语精品自产拍在线观看| 国产精品私人影院| 久久97超碰色| 欧美性受xxxx| 国产精品久久午夜| 精品一区二区三区日韩| 色婷婷久久久综合中文字幕 | 综合婷婷亚洲小说| 日韩精品乱码av一区二区| 国产成人av在线影院| 日韩免费看的电影| 亚洲少妇中出一区| 不卡视频免费播放| 精品乱人伦小说| 蜜臀av一级做a爰片久久| 色999日韩国产欧美一区二区| 国产欧美日韩综合| 蜜桃视频在线观看一区| 欧美日韩aaaaaa| 亚洲精选一二三| 在线免费精品视频| 26uuu亚洲综合色欧美| 日韩和欧美一区二区三区| 色乱码一区二区三区88| 亚洲欧洲综合另类| 99久久99久久精品免费看蜜桃| 国产日韩欧美精品综合| 久久不见久久见免费视频7| 欧美一区欧美二区| 亚洲444eee在线观看| 成人短视频下载| 国产精品免费视频观看| 免费观看成人av| 日韩久久久精品| 亚洲h动漫在线| 欧美成人官网二区| 免费美女久久99| 日韩精品中文字幕在线不卡尤物| 一区二区三区国产精华| 欧美午夜不卡视频| 亚洲一区二区三区四区的| 欧美日韩五月天| 亚洲午夜精品一区二区三区他趣| 欧美高清激情brazzers| 婷婷六月综合亚洲| 日韩精品一区二区在线| 日本v片在线高清不卡在线观看| 欧美日韩一区二区三区在线看| 一二三区精品福利视频| 91精品国产高清一区二区三区 | 欧美精品18+| 精品一区二区综合| 久久综合99re88久久爱| 极品少妇xxxx精品少妇| 久久午夜羞羞影院免费观看| 成人18精品视频| 亚洲女人****多毛耸耸8| 欧美亚洲高清一区二区三区不卡| 亚洲美女视频在线| 成人av在线一区二区| 亚洲国产精品久久人人爱蜜臀| 成人激情av网| 亚洲bdsm女犯bdsm网站| 欧美一级高清片在线观看| 国产 日韩 欧美大片| 精品国产3级a| 色婷婷精品大视频在线蜜桃视频| 亚洲综合免费观看高清在线观看| 欧美一区二区免费视频| 国产精品一区二区久激情瑜伽 | 亚洲国产一区在线观看| 4438x亚洲最大成人网| 国产麻豆91精品| 欧美精品一区二区三区在线播放| 99久免费精品视频在线观看| 久久久不卡影院| 欧美怡红院视频| 日韩在线卡一卡二| 亚洲婷婷国产精品电影人久久| 国产成人免费视频网站| 91精品福利视频| 一本色道久久加勒比精品| 亚洲sss视频在线视频| 久久久高清一区二区三区| 一本久久a久久免费精品不卡| 久久99最新地址| 中文字幕一区二区在线观看| 日韩欧美高清dvd碟片| 97精品电影院| 国产专区欧美精品| 亚洲一区在线观看免费观看电影高清 | 亚洲综合精品久久| 久久久精品黄色| 欧美色图免费看| 成人一区二区在线观看|