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

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

?? ofbtype.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 "block.h"
#include "ofb.h"
#include "errorctx.h"

/* This routine does the work. It allocates and fills in the contexts.
 * @param obj The algorithm object to set.
 * @param cipherCtx The Cipher Class context to set.
 * @param blockCtx The BlockCipher context to set.
 * @param iv The item containing the init vector.
 * @return an int, 0 if the function completed successfully or a
 * non-zero error code.
 */
static int VOLT_CALLING_CONV SetObjectOFB VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VoltCipherClassCtx *cipherCtx,
   VoltBlockCipherCtx *blockCtx,
   VtItem *iv
));

int VtFeedbackOFB (
   VtAlgorithmObject object,
   VtFeedbackInfo *feedInfo,
   unsigned int flag
   )
{
  int status;
  unsigned int blockSize;
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)object;
  VtItem *iv = (VtItem *)(feedInfo->info);
  VoltCipherClassCtx *cipherCtx;
  VoltBlockCipherCtx *blockCtx;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

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

    /* The associated info should be a pointer to a VoltageOFBInfo
     * struct.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (feedInfo->info == (Pointer)0)
      break;

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

    /* We have a block cipher object, which means we have a CipherCtx
     * and a BlockCtx.
     */
    cipherCtx = (VoltCipherClassCtx *)(obj->classCtx);
    blockCtx = (VoltBlockCipherCtx *)(cipherCtx->localCipherCtx);

    /* Make sure the setState in the CipherCtx is correct.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (cipherCtx->setState != VOLT_BLOCK_SET_STATE_ALG)
      break;

    /* Make sure there's data and that it is blockSize bytes long.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    blockSize = cipherCtx->plainBlockSize;
    if ( (blockSize < 2) || (blockSize != cipherCtx->cipherBlockSize) )
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if ( (iv->data == (unsigned char *)0) || (iv->len != blockSize) )
      break;

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = SetObjectOFB (obj, cipherCtx, blockCtx, iv);

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, obj->voltObject.libraryCtx, status, errorType, fnctLine,
    "VtFeedbackOFB", (char *)0)

  return (status);
}

static int SetObjectOFB (
   VoltAlgorithmObject *obj,
   VoltCipherClassCtx *cipherCtx,
   VoltBlockCipherCtx *blockCtx,
   VtItem *iv
   )
{
  int status;
  unsigned int blockSize, bufferSize, offset;
#if VOLT_ALIGNMENT != 1
  unsigned int pad;
#endif
  unsigned char *buffer = (unsigned char *)0;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltOFBCtx *ofbCtx = (VoltOFBCtx *)0;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Allocate enough space for an OFB Ctx and two blockSize buffers.
     * Because the buffers will be pointers to byte arrays, we should
     * not have to worry about alignment. However, we may want to
     * dereference the pointer to the xorVector as a UInt32 or UInt64,
     * so make sure that buffer is aligned.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    blockSize = iv->len;
    bufferSize = sizeof (VoltOFBCtx) + (2 * blockSize);
#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 (VoltOFBCtx), pad)
    bufferSize += pad;
#endif
    buffer = (unsigned char *)Z2Malloc (bufferSize, VOLT_MEMORY_SENSITIVE);
    if (buffer == (unsigned char *)0)
      break;
    Z2Memset (buffer, 0, bufferSize);

    /* Locate the pointers.
     */
    ofbCtx = (VoltOFBCtx *)buffer;
    offset = sizeof (VoltOFBCtx);
#if VOLT_ALIGNMENT != 1
    offset += pad;
#endif
    ofbCtx->feedCtx.xorVector = buffer + offset;
    offset += blockSize;
    ofbCtx->feedCtx.initVector = buffer + offset;

    /* Populate the contexts.
     */
    Z2Memcpy (ofbCtx->feedCtx.initVector, iv->data, iv->len);
    ofbCtx->feedCtx.blockSize = blockSize;
    ofbCtx->AlgEncryptInit = cipherCtx->EncryptInit;
    ofbCtx->AlgEncryptUpdate = cipherCtx->EncryptUpdate;
    blockCtx->feedbackCtx = (Pointer)ofbCtx;
    blockCtx->FeedbackCtxDestroy = VoltSimpleCtxDestroy;

    cipherCtx->EncryptInit = OFBEncryptInit;
    cipherCtx->EncryptUpdate = OFBEncryptUpdate;
    cipherCtx->DecryptInit = OFBEncryptInit;
    cipherCtx->DecryptUpdate = OFBEncryptUpdate;
    cipherCtx->plainBlockSize = 1;
    cipherCtx->cipherBlockSize = 1;
    cipherCtx->GetOutputSize = VoltStreamEncDecGetOutputSize;
    cipherCtx->setState = VOLT_BLOCK_SET_STATE_FEED;

    obj->subAlg2 = VOLT_SUB_ALG_OFB;

    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.
   */
  if (buffer != (unsigned char *)0)
    Z2Free (buffer);

  obj->state = VOLT_STATE_ERROR;

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

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99热精品国产| 亚洲va国产va欧美va观看| 欧美一区二区精品在线| 欧美性受xxxx黑人xyx| 91女厕偷拍女厕偷拍高清| 91丝袜美女网| 欧美私模裸体表演在线观看| 欧美亚洲禁片免费| 欧美日韩日本视频| 日韩一区二区在线观看视频| 日韩一区二区免费视频| 久久综合色8888| 中文字幕在线不卡视频| 中文字幕在线不卡国产视频| 在线电影国产精品| 国产欧美日韩中文久久| 国产曰批免费观看久久久| 91精品国产麻豆国产自产在线 | 亚洲黄色片在线观看| 亚洲一区二区三区视频在线| 日本不卡高清视频| 国产综合成人久久大片91| 成人高清视频免费观看| 精品视频免费在线| 久久综合九色综合欧美就去吻 | 日韩va亚洲va欧美va久久| 老司机精品视频线观看86| 国产电影精品久久禁18| 色天天综合久久久久综合片| 4hu四虎永久在线影院成人| 精品久久人人做人人爰| 亚洲欧洲无码一区二区三区| 午夜不卡av免费| 国产成人精品免费看| 欧美在线观看视频一区二区三区| 日韩免费在线观看| 亚洲欧美综合另类在线卡通| 裸体健美xxxx欧美裸体表演| 国产.欧美.日韩| 在线播放国产精品二区一二区四区| 精品噜噜噜噜久久久久久久久试看 | 日韩免费电影网站| 亚洲免费看黄网站| 国产精品1024| 欧美精品成人一区二区三区四区| 国产日韩成人精品| 天天色图综合网| 色婷婷综合久色| 国产日产精品一区| 免费观看在线综合| 欧美日韩一区在线观看| 国产精品成人网| 国产乱码精品1区2区3区| 91精品国产综合久久小美女| 亚洲丝袜自拍清纯另类| 国产精品12区| 精品久久久久久久一区二区蜜臀| 亚洲一区二区三区激情| 岛国精品在线观看| 国产色一区二区| 捆绑调教美女网站视频一区| 欧美日韩国产精品自在自线| 亚洲免费av高清| 懂色av中文字幕一区二区三区| 精品蜜桃在线看| 六月丁香婷婷久久| 欧美一区二区黄| 日韩av电影免费观看高清完整版在线观看| 91在线国内视频| 亚洲欧美视频在线观看| 97久久久精品综合88久久| 中文字幕巨乱亚洲| 成人小视频在线| 1000部国产精品成人观看| 成人开心网精品视频| 欧美激情自拍偷拍| 99久久精品国产观看| 亚洲欧洲综合另类| 色成人在线视频| 亚洲成人动漫av| 日韩欧美一二区| 国产精品99久久久久| 国产精品五月天| 91在线丨porny丨国产| 亚洲一区中文日韩| 欧美精品在线一区二区三区| 天天色综合天天| www国产成人免费观看视频 深夜成人网 | 国产成人综合亚洲网站| 午夜国产不卡在线观看视频| 《视频一区视频二区| 国产欧美日韩综合精品一区二区| 777a∨成人精品桃花网| 色婷婷狠狠综合| 99国产精品久久久久久久久久久| 久久99在线观看| 男女男精品视频| 日韩高清不卡一区二区三区| 亚洲成人av资源| 蜜桃av噜噜一区| 视频在线观看一区| 亚洲在线成人精品| 亚洲精品乱码久久久久久久久| 欧美国产国产综合| 国产日韩在线不卡| 久久亚洲二区三区| 亚洲精品在线免费播放| 精品人在线二区三区| 欧美一区二区在线免费播放| 欧美日韩在线播放一区| 欧美性受极品xxxx喷水| 欧美中文字幕一区二区三区亚洲| 97久久久精品综合88久久| 99久久99久久综合| 97超碰欧美中文字幕| 91麻豆国产福利在线观看| 色综合久久99| 欧美亚日韩国产aⅴ精品中极品| 色94色欧美sute亚洲线路一久| 在线精品视频一区二区三四| 色综合天天综合网国产成人综合天| 99精品1区2区| 欧美午夜理伦三级在线观看| 国产亚洲综合性久久久影院| 欧美精品九九99久久| 99精品久久只有精品| 国产精品白丝jk黑袜喷水| 日韩黄色一级片| 一区二区三区日韩| 国产精品久久影院| 精品三级在线看| 欧美一卡二卡在线| 欧美自拍偷拍一区| 91久久一区二区| 92国产精品观看| 99久久国产综合精品麻豆| 国产99久久久国产精品潘金网站| 看电视剧不卡顿的网站| 亚洲6080在线| 亚洲午夜久久久久久久久电影网| 国产精品超碰97尤物18| 中文字幕免费观看一区| 国产性天天综合网| 久久久久久亚洲综合| 精品日韩成人av| 精品99一区二区三区| 欧美一区二区精品| 精品国产免费人成电影在线观看四季| 欧美日韩午夜在线| 欧美日韩一区二区三区免费看| 色婷婷久久综合| 欧美性生交片4| 91精品1区2区| 欧美日韩卡一卡二| 777久久久精品| 日韩一区二区精品葵司在线| 欧美va在线播放| 久久综合狠狠综合久久激情 | 欧美在线999| 91久久线看在观草草青青| 欧美做爰猛烈大尺度电影无法无天| 91视视频在线直接观看在线看网页在线看| 成人国产精品免费观看视频| 99国产精品国产精品毛片| 97久久超碰国产精品| 欧洲生活片亚洲生活在线观看| 欧美日韩精品一区二区三区四区| 欧美日韩国产美| 久久久亚洲高清| 国产精品不卡在线| 亚洲自拍与偷拍| 免费不卡在线视频| 国产精品一级在线| 在线视频你懂得一区二区三区| 欧美精品1区2区3区| 2020国产精品自拍| 亚洲图片激情小说| 日本 国产 欧美色综合| 福利一区二区在线| 欧美在线三级电影| 久久久一区二区三区捆绑**| 亚洲乱码国产乱码精品精的特点 | fc2成人免费人成在线观看播放| 99久久er热在这里只有精品66| 欧美色网一区二区| 2020国产精品自拍| 亚洲国产sm捆绑调教视频 | 99国产精品久久| 在线综合视频播放| 国产精品久久久久三级| 日日夜夜一区二区| 成人中文字幕在线| 制服丝袜亚洲色图| 17c精品麻豆一区二区免费| 美国欧美日韩国产在线播放| 99久久国产综合精品色伊| 精品国产凹凸成av人导航| 亚洲综合小说图片| 播五月开心婷婷综合| 精品国产一区二区亚洲人成毛片|