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

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

?? p5pad.c

?? IBE是一種非對稱密碼技術(shù)
?? 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 "p5pad.h"
#include "errorctx.h"

int VtPaddingPkcs5 (
   VtAlgorithmObject object,
   VtPaddingInfo *padInfo,
   unsigned int flag
   )
{
  int status;
  VoltAlgorithmObject *obj = (VoltAlgorithmObject *)object;
  VoltCipherClassCtx *cipherCtx;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

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

    /* The associated info should be NULL pointer.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (padInfo->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.
     */
    cipherCtx = (VoltCipherClassCtx *)(obj->classCtx);

    /* 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_FEED)
      break;

    /* P5 Padding is only used if there is a block size > 1.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (cipherCtx->plainBlockSize < 2)
      break;

    /* All we have to do is set the Pad and Unpad fields in the Cipher
     * context. There is no context and no need to have a destructor.
     */
    cipherCtx->Pad = P5Pad;
    cipherCtx->Unpad = P5Unpad;
    cipherCtx->setState = VOLT_BLOCK_SET_STATE_PAD;

    obj->subAlg2 |= VOLT_SUB_ALG_P5_PAD;
    
    status = 0;

  } while (0);

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

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

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

  return (status);
}

int P5Pad (
   VoltAlgorithmObject *obj,
   VtRandomObject random,
   Pointer padCtx,
   unsigned char *block,
   unsigned int inputLen,
   unsigned int blockSize
   )
{
  int status;
  unsigned int padLen;
  unsigned char padByte;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Make sure the inputLen is less than the block size.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_INPUT_LENGTH;
    if (inputLen >= blockSize)
      break;

    /* P5 padding places the number of pad bytes into each of the bytes
     * following the input data.
     */
    padLen = blockSize - inputLen;
    padByte = (unsigned char)padLen;
    /* Move to the end of the input data.
     */
    block += inputLen;
    do
    {
      /* Place a pad byte, then move on to the next byte in the buffer.
       */
      *block = padByte;
      padLen--;
      block++;
    } while (padLen > 0);

    status = 0;
  } while (0);

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

  return (status);
}

int P5Unpad (
   VoltAlgorithmObject *obj,
   Pointer padCtx,
   unsigned char *block,
   unsigned int blockSize,
   unsigned int *outputLen
   )
{
  int status;
  unsigned int padLen;
  unsigned char padByte;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* P5 unpadding simply tells how many of the blocks bytes are not
     * pad, checking to make sure all the purported pad bytes are indeed
     * pad bytes.
     */
    padByte = *(block + blockSize - 1);
    padLen = (unsigned int)padByte;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_PAD;
    if ( (padLen > blockSize) || (padLen == 0) )
      break;

    *outputLen = blockSize - padLen;

    /* Move to the end of the actual data. That is, set block to point to
     * the first byte of pad.
     */
    block += (*outputLen);
    do
    {
      /* Check a pad byte, then move on to the next byte in the buffer.
       * If the current byte is not the padBytes, error. status is set
       * to INVALID_PAD.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      if (*block != padByte)
        break;
      padLen--;
      block++;
    } while (padLen > 0);

    /* If we went through the entire loop, there was no error. If
     * padLen is not 0, we broke out early because of an error.
     */
    if (padLen == 0)
      status = 0;

  } while (0);

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

  return (status);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一道本成人在线| 亚洲国产精品久久久男人的天堂| 国产suv一区二区三区88区| 国产精品视频你懂的| 一本高清dvd不卡在线观看| 亚洲成年人影院| 精品福利一区二区三区| 激情成人午夜视频| 亚洲视频香蕉人妖| 欧美电影免费观看高清完整版在 | 91精品久久久久久久久99蜜臂| 麻豆精品久久久| **性色生活片久久毛片| 777亚洲妇女| 成人av综合一区| 青青青爽久久午夜综合久久午夜 | 91.麻豆视频| 成人免费视频caoporn| 午夜精品视频一区| 亚洲国产高清在线| 日韩欧美中文字幕精品| 色婷婷综合久久| 国产高清精品网站| 人人超碰91尤物精品国产| 亚洲国产经典视频| 欧美一区二区国产| 91久久精品一区二区| 精品无人区卡一卡二卡三乱码免费卡| 亚洲免费大片在线观看| 国产日韩高清在线| 精品欧美一区二区久久| 在线看不卡av| 91麻豆国产精品久久| 国产乱码精品一区二区三区av | 欧美性受xxxx| 成人免费av在线| 国产一区免费电影| 日韩成人免费看| 五月激情综合网| 亚洲精品国产一区二区三区四区在线| 久久久久99精品国产片| 日韩欧美电影一二三| 欧美日韩国产美| 欧美亚洲另类激情小说| 在线观看亚洲成人| 91久久国产综合久久| 色综合久久天天综合网| 成人激情动漫在线观看| 国产精品一区免费视频| 久久超碰97人人做人人爱| 日韩精品福利网| 亚洲电影一区二区三区| 亚洲午夜久久久| 亚洲中国最大av网站| 国产日韩欧美在线一区| 久久久久99精品一区| 久久久久国产精品麻豆| 91美女片黄在线观看91美女| 91免费看`日韩一区二区| 91捆绑美女网站| 日本高清免费不卡视频| 欧美日韩专区在线| 在线播放国产精品二区一二区四区| 色噜噜夜夜夜综合网| 色呦呦日韩精品| 欧美天堂一区二区三区| 欧美精品免费视频| 欧美一级午夜免费电影| 日韩欧美在线不卡| 精品国产91乱码一区二区三区 | 亚洲成人免费视频| 丝袜美腿成人在线| 蜜桃一区二区三区在线| 国内欧美视频一区二区| 国产91清纯白嫩初高中在线观看 | 国产欧美视频一区二区| 国产精品私人影院| 中文字幕制服丝袜一区二区三区| 中文字幕国产精品一区二区| 国产欧美一区二区精品性色超碰| 国产精品久久福利| 亚洲在线视频免费观看| 亚洲成人免费观看| 国产一区二区成人久久免费影院| 东方aⅴ免费观看久久av| www.久久精品| 欧美美女一区二区在线观看| 欧美不卡一区二区三区四区| 欧美一区二区免费| 国产区在线观看成人精品| 亚洲欧洲成人精品av97| 偷拍与自拍一区| 国产一区在线观看视频| 91美女福利视频| 日韩三级视频在线观看| 日韩精品一区二区三区中文精品| 国产女人18水真多18精品一级做| 尤物视频一区二区| 久久99国产精品尤物| 国产99精品视频| 7777精品伊人久久久大香线蕉超级流畅 | 中文成人av在线| 亚洲一区二区精品3399| 久久电影网站中文字幕| 色综合天天综合狠狠| 日韩精品综合一本久道在线视频| 国产精品天干天干在线综合| 五月婷婷欧美视频| 精品一区二区影视| 在线观看精品一区| 久久久国产一区二区三区四区小说| 一区二区三区四区在线| 国内精品伊人久久久久av一坑| 色婷婷狠狠综合| 日本一区二区三区免费乱视频| 亚洲第一综合色| 99久久久国产精品| 久久婷婷色综合| 一区二区三区四区在线免费观看| 国产91精品欧美| 成av人片一区二区| 久久综合久久鬼色中文字| 日本午夜一区二区| 欧美丰满一区二区免费视频 | 欧美一区二区视频免费观看| 一个色妞综合视频在线观看| 东方aⅴ免费观看久久av| 色综合色综合色综合色综合色综合| 韩国av一区二区| 麻豆极品一区二区三区| 久久久久久久久久久久久久久99 | 欧美日韩一区二区不卡| 国产成人av影院| 成人免费的视频| 欧美变态tickling挠脚心| 亚洲一级二级三级| 成人看片黄a免费看在线| 91精品国产综合久久久久久久久久| 国产精品久久一级| 国产毛片精品国产一区二区三区| 欧美另类z0zxhd电影| 又紧又大又爽精品一区二区| 国产成人免费视频一区| 欧美电视剧在线看免费| 午夜视频在线观看一区二区| 91在线观看一区二区| 国产亚洲欧美日韩俺去了| 美女mm1313爽爽久久久蜜臀| 欧美日韩成人在线一区| 一区二区在线观看不卡| aaa国产一区| 国产精品入口麻豆九色| 国产成人精品免费一区二区| 日韩午夜在线观看| 麻豆成人在线观看| 日韩午夜激情av| 日本aⅴ亚洲精品中文乱码| 在线成人小视频| 亚洲bt欧美bt精品777| 91黄色免费看| 夜夜嗨av一区二区三区| 色综合久久中文综合久久牛| 亚洲欧洲成人av每日更新| 99精品视频中文字幕| 日韩毛片精品高清免费| 一本久道久久综合中文字幕| 一区在线中文字幕| 94色蜜桃网一区二区三区| 亚洲情趣在线观看| 欧美亚洲国产一区二区三区va | 一区二区三区精品视频| 91官网在线免费观看| 亚洲美女视频在线观看| 欧美写真视频网站| 亚洲成人在线免费| 5月丁香婷婷综合| 久久99久久99精品免视看婷婷| 欧美成人性福生活免费看| 狠狠色伊人亚洲综合成人| 精品国产精品一区二区夜夜嗨| 国内偷窥港台综合视频在线播放| 久久综合色鬼综合色| 国产高清精品网站| 亚洲乱码国产乱码精品精小说| 欧美综合在线视频| 日韩国产精品久久久久久亚洲| 欧美一区二区三区免费大片| 激情伊人五月天久久综合| 国产偷v国产偷v亚洲高清| www.视频一区| 婷婷成人综合网| 久久久久国产免费免费| av不卡在线播放| 视频一区二区不卡| 国产亚洲欧美日韩俺去了| 色先锋资源久久综合| 久久成人18免费观看| 国产精品美女久久久久aⅴ国产馆| 欧美最新大片在线看| 精品在线亚洲视频|