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

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

?? dsaparamtype.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "paramobj.h"
#include "dsa.h"
#include "mpint.h"
#include "errorctx.h"

/* Gets the system params out of a parameter object.
 *
 * @param paramObj The object from which the params are to be extracted.
 * @param getInfo The address where the function will deposit the
 * pointer to the info.
 * @return an int, 0 if the function completed successfully or a
 * non-zero error code.
 */
static int VOLT_CALLING_CONV VoltParameterGetDsaParams VOLT_PROTO_LIST ((
   VtParameterObject paramObj,
   Pointer *getInfo
));

int VtParameterParamDSAParams (
   VtParameterObject object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltParameterObject *obj = (VoltParameterObject *)object;
  VtDSAParamInfo *paramInfo = (VtDSAParamInfo *)info;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    if (flag == VOLT_PARAM_GET_TYPE_FLAG)
    {
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VoltParameterGetDsaParams (object, (Pointer *)info);
      break;
    }

    /* Check the flag, it should be VOLT_PARAM_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_PARAM_SET_TYPE_FLAG)
      break;

    /* Check the paramType of the object. It should be 0.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (obj->paramType != 0)
      break;

    /* The associated info should be a pointer to VoltageDsaParameters.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    /* The primeP must be 1024 bits long and the subprimeQ must be 160
     * bits long.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (paramInfo->primeP.len != 128)
      break;
    if ((paramInfo->primeP.data[0] & 0x80) == 0)
      break;
    if (paramInfo->subprimeQ.len != 20)
      break;
    if ((paramInfo->subprimeQ.data[0] & 0x80) == 0)
      break;

    /* If using this ParameterParam, the key must already have an mpCtx
     * loaded.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_PARAM_OBJ;
    if (obj->mpCtx == (VoltMpIntCtx *)0)
      break;

    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = SetDSAParameters (
      obj, &(paramInfo->primeP), &(paramInfo->subprimeQ),
      &(paramInfo->baseG));

  } while (0);

  /* If everything worked, return 0.
   */
  if (status == 0)
  {
    /* Set the FIPS bit in the object type, this object is a FIPS
     * object.
     */
    obj->voltObject.objectType |= VOLT_OBJECT_TYPE_FIPS;
    return (0);
  }

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

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

  return (status);
}

static int VoltParameterGetDsaParams (
   VtParameterObject paramObj,
   Pointer *getInfo
   )
{
  int status;
  VoltParameterObject *obj = (VoltParameterObject *)paramObj;
  VoltDsaParams *params;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  *getInfo = (Pointer)0;

  do
  {
    /* Check the paramType in the object, it should contain
     * VOLT_PARAM_ALG_DSA.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if(obj->paramType == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if ((obj->paramType & VOLT_PARAM_TYPE_MASK_ALG) != VOLT_PARAM_ALG_DSA)
      break;

    /* Make sure this object contains params and is not set to generate.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if ((obj->paramType & VOLT_PARAM_TYPE_CONTENTS) == 0)
      break;

    /* Are the parameters in data format? If so, we're done. (Set the
     * return values.)
     */
    if ((obj->paramType & VOLT_PARAM_TYPE_MASK_DATA) == VOLT_PARAM_TYPE_DATA)
    {
      status = 0;
      params = (VoltDsaParams *)(obj->paramData);
      *getInfo = (Pointer)&(params->paramInfo);
      break;
    }

    /* The data is not available, does the object have a GetData
     * function?
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if (obj->GetParamData == (VGetParamData)0)
      break;

    /* Call the Get function.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = obj->GetParamData ((VtParameterObject)obj, getInfo);

  } while (0);

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

  return (status);
}

int VtParameterParamDSAParamsFips (
   VtParameterObject object,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltParameterObject *obj = (VoltParameterObject *)object;
  VoltDsaParams *params;
  Pointer *getInfo = (Pointer *)info;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  *getInfo = (Pointer)0;

  do
  {
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SET;
    if (flag == VOLT_PARAM_SET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_PARAM_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if ((obj->paramType & VOLT_PARAM_TYPE_MASK_ALG) != VOLT_PARAM_ALG_DSA)
      break;

    /* Check the paramType in the object, it should contain
     * VOLT_PARAM_ALG_DSA.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (obj->paramType == 0)
      break;

    /* Make sure this object contains params and is not set to generate.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if ((obj->paramType & VOLT_PARAM_TYPE_CONTENTS) == 0)
      break;

    /* This works only if the params are in data format.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if ((obj->paramType & VOLT_PARAM_TYPE_MASK_DATA) != VOLT_PARAM_TYPE_DATA)
      break;

    params = (VoltDsaParams *)(obj->paramData);

    /* The FIPS information may not be there.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (params->fipsInfo.SEED.data == (unsigned char *)0)
      break;

    *getInfo = (Pointer)&(params->fipsInfo);
    status = 0;

  } while (0);

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

  return (status);
}

int SetDSAParameters (
   VoltParameterObject *obj,
   VtItem *primePItem,
   VtItem *subprimeQItem,
   VtItem *baseGItem
   )
{
  int status;
  VoltMpIntCtx *mpCtx = obj->mpCtx;
  VoltMpInt *primeP = (VoltMpInt *)0;
  VoltMpInt *subprimeQ = (VoltMpInt *)0;
  VoltMpInt *baseG = (VoltMpInt *)0;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_MP_INT_CTX;
    if (mpCtx == (VoltMpIntCtx *)0)
      break;

    /* Create and set MpInt's with the data.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->CreateMpInt ((Pointer)mpCtx, &primeP);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->OctetStringToMpInt (
      0, primePItem->data, primePItem->len, primeP);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->CreateMpInt ((Pointer)mpCtx, &subprimeQ);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->OctetStringToMpInt (
      0, subprimeQItem->data, subprimeQItem->len, subprimeQ);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->CreateMpInt ((Pointer)mpCtx, &baseG);
    if (status != 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = mpCtx->OctetStringToMpInt (
      0, baseGItem->data, baseGItem->len, baseG);
    if (status != 0)
      break;

    /* Now call the Add routine that takes MpInt's.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = AddDSAParametersMpInt (
      obj, primeP, subprimeQ, baseG, (VoltMpInt *)0,
      (unsigned char *)0, 0, 0);

  } while (0);

  /* If successful, we're done.
   */
  if (status == 0)
    return (0);

  /* If error, clean up some things.
   */
  if (mpCtx != (VoltMpIntCtx *)0)
  {
    mpCtx->DestroyMpInt (&primeP);
    mpCtx->DestroyMpInt (&subprimeQ);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品五月天| 99re66热这里只有精品3直播 | 欧美日韩精品一区二区三区蜜桃| 国产麻豆9l精品三级站| 国产成+人+日韩+欧美+亚洲| 精品午夜久久福利影院| 精品综合免费视频观看| 欧美美女一区二区三区| 国产精品久久久久一区| 2021中文字幕一区亚洲| 日韩欧美国产三级电影视频| 2014亚洲片线观看视频免费| 日韩精品一区二区三区在线| 久久综合九色综合97婷婷| 欧美精品一区二区久久婷婷| 久久久久国色av免费看影院| 欧美国产精品中文字幕| 自拍偷自拍亚洲精品播放| 一级特黄大欧美久久久| 日本怡春院一区二区| 久久99精品久久久久久动态图| 国产精品18久久久久久久久| 99r国产精品| 精品噜噜噜噜久久久久久久久试看 | 久久精品人人做人人爽人人| 国产日韩欧美在线一区| 亚洲美女少妇撒尿| 免费的成人av| 成人av免费在线观看| 欧美伊人久久久久久午夜久久久久| 欧美日韩国产色站一区二区三区| 日韩亚洲欧美成人一区| 国产精品视频yy9299一区| 亚洲高清免费观看高清完整版在线观看 | 欧美性大战xxxxx久久久| 日韩精品一区二区三区视频播放| 欧美国产成人在线| 香蕉影视欧美成人| 成人激情午夜影院| 欧美日韩的一区二区| 国产精品毛片久久久久久 | 亚洲精品在线电影| 亚洲美女免费视频| 国产综合一区二区| 欧美精三区欧美精三区| 欧美国产一区二区| 久久99精品国产.久久久久| 色婷婷综合久久久| 国产日韩欧美一区二区三区乱码| 亚洲成av人片一区二区梦乃| 成人视屏免费看| 日韩三级电影网址| 亚洲一卡二卡三卡四卡| bt7086福利一区国产| 激情文学综合丁香| 精品一区二区免费看| 91亚洲男人天堂| 国产亚洲精品超碰| 美女脱光内衣内裤视频久久网站| 色香色香欲天天天影视综合网| www国产成人免费观看视频 深夜成人网| 亚洲一区二区欧美日韩| 99久久精品99国产精品 | 中文字幕亚洲一区二区av在线| 美女网站色91| 日韩免费观看2025年上映的电影 | 国产欧美日韩亚州综合| 日本va欧美va精品发布| 欧美日韩国产美| 亚洲国产精品影院| 在线观看av一区二区| 韩国av一区二区三区| 久久欧美中文字幕| 日韩一区精品视频| 色欧美片视频在线观看在线视频| 欧美激情中文字幕一区二区| 国产成人一区在线| 久久这里只有精品6| 国产麻豆精品在线观看| 欧美一级免费大片| 久久99精品网久久| 精品久久久久av影院| 国产综合一区二区| 国产欧美一区二区精品秋霞影院| 久久国产三级精品| 久久久久国产精品厨房| 国产成人免费网站| **性色生活片久久毛片| 91丝袜美女网| 国产精品自拍一区| 91麻豆精品国产自产在线观看一区| 亚洲国产精品欧美一二99| 欧美日韩免费视频| 日韩精品午夜视频| 亚洲精品一区二区三区香蕉| 国产一级精品在线| 国产精品久久久久一区二区三区共 | 亚洲精品视频观看| 欧美日韩国产天堂| 国产乱人伦偷精品视频不卡| 国产精品视频看| 欧美日韩国产三级| 国产激情一区二区三区四区 | 欧美精品在线视频| 国产精品一区二区在线播放 | 91麻豆免费在线观看| 亚洲国产视频在线| 精品久久国产老人久久综合| 国产suv精品一区二区6| 亚洲香肠在线观看| xvideos.蜜桃一区二区| 在线亚洲欧美专区二区| 紧缚捆绑精品一区二区| 亚洲精品乱码久久久久久| 亚洲精品一区二区三区精华液| 91在线国内视频| 奇米精品一区二区三区在线观看 | 欧美色男人天堂| 久久99精品国产91久久来源| 亚洲免费在线观看| 久久嫩草精品久久久精品| 欧美三级欧美一级| 丁香一区二区三区| 天天综合日日夜夜精品| 国产精品美女www爽爽爽| 欧美第一区第二区| 欧美中文字幕久久| 欧美日韩中字一区| 国产.欧美.日韩| 日本人妖一区二区| 亚洲一区二区av电影| 亚洲天堂免费在线观看视频| 欧美大片一区二区| 777a∨成人精品桃花网| 在线观看免费成人| 国产午夜精品一区二区三区视频| 在线观看一区二区精品视频| bt欧美亚洲午夜电影天堂| 国产精品自拍网站| 国产精品资源在线| 久久精品国产99久久6| 日韩高清在线不卡| 亚洲国产精品自拍| 亚洲va欧美va人人爽| 亚洲人成网站在线| 亚洲欧美日韩久久| 亚洲色大成网站www久久九九| 久久精品人人做人人爽97| 久久久午夜精品理论片中文字幕| 日韩欧美一级二级三级| 日韩一区二区三区视频| 欧美一区二区三区在线视频| 欧美日韩国产在线播放网站| 欧洲精品一区二区| 欧亚洲嫩模精品一区三区| 色综合一个色综合| 在线观看日韩高清av| 欧美性大战久久久久久久蜜臀| 色美美综合视频| 欧美日韩亚州综合| 欧美日韩国产免费一区二区 | 欧洲视频一区二区| 91精品免费在线观看| 欧美无砖专区一中文字| 一区二区视频免费在线观看| 国内一区二区视频| 欧美三级电影在线看| 亚洲国产精品成人综合| 日韩av在线播放中文字幕| av一区二区三区在线| 日韩欧美高清dvd碟片| 一区二区欧美精品| 国产成人福利片| 日韩欧美国产一区二区三区| 一区二区在线看| 成人午夜激情在线| 欧美精品一区二区高清在线观看| 亚洲激情av在线| 懂色中文一区二区在线播放| 精品国产乱码久久久久久久| 一区二区三区不卡在线观看| 不卡视频一二三四| 色婷婷激情综合| 日本一区免费视频| 国产在线精品一区二区夜色| 精品视频1区2区3区| 亚洲女人的天堂| 不卡的av中国片| 国产精品免费视频一区| 国产一区二区三区精品欧美日韩一区二区三区 | 五月天激情综合| 欧洲一区二区av| 亚洲成在线观看| 色欧美日韩亚洲| 亚洲精品国产视频| 92精品国产成人观看免费| 亚洲男人的天堂在线观看| 91亚洲国产成人精品一区二三| 国产精品久久久久一区二区三区 | 亚洲与欧洲av电影|