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

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

?? dsaalgid.c

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

int VtDerCoderDSAwSHA1 (
   VtDerCoderInfo *coderInfo,
   Pointer object,
   unsigned int flag
   )
{
  int status;
  unsigned int bufferSize;
  VoltLibCtx *libCtx;
  VoltAlgorithmObject **obj = (VoltAlgorithmObject **)0;
  VoltSignClassCtx *signCtx;
  VoltDerCoderEncodeData *encodeData = &(coderInfo->info.encodeData);
  VoltDerCoderGetAlgData *getAlgData = &(coderInfo->info.getAlgData);
  VoltDerCoderDecodeData *decodeData = &(coderInfo->info.decodeData);
  Asn1AlgorithmId *algId;
  unsigned char dsaAlgID[VoltDsaSHA1AlgIdBytesLen] =
    { VoltDsaSHA1AlgIdBytes };
  /* Alternate OID to read (never produce). See comments in DECODE case.
   */
  unsigned char altDsaSHA1Oid[VoltDsaKeyOidBytesLen] = { VoltDsaKeyOidBytes };
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  switch (flag)
  {
    default:
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_INVALID_TYPE;
      break;

    case VOLT_DER_TYPE_ENCODE_FLAG:
      /* If the flag is ENCODE, return the DSA sign algID.
       */

      /* Check the args.
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NON_NULL_ARG;
      if (object != (Pointer) 0)
        break;

      /* We need a place to drop the length.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      if (encodeData->encodingLen == (unsigned int *)0)
        break;

      /* The info should be NULL.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NON_NULL_ARG;
      if (encodeData->info != (Pointer)0)
        break;

      bufferSize = encodeData->bufferSize;
      if (encodeData->encoding == (unsigned char *)0)
        bufferSize = 0;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_BUFFER_TOO_SMALL;
      *(encodeData->encodingLen) = VoltDsaSHA1AlgIdBytesLen;
      if (bufferSize < VoltDsaSHA1AlgIdBytesLen)
        break;

      /* There's only one possible DSA alg ID.
       */
      libCtx = encodeData->libCtx;
      Z2Memcpy (encodeData->encoding, dsaAlgID, VoltDsaSHA1AlgIdBytesLen);
      status = 0;
      break;

    case VOLT_DER_TYPE_DECODE_FLAG:
      /* If the flag is decode, set the object to perform DSA with SHA-1.
       */

      /* Check the args, the type should be VOLT_DER_TYPE_ALG_ID_FLAG.
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_UNKNOWN_BER;
      if (decodeData->type != VOLT_DER_TYPE_ALG_ID_FLAG)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      if (object == (Pointer)0)
        break;

      obj = (VoltAlgorithmObject **)object;
      VOLT_SET_FNCT_LINE (fnctLine)
      if (*obj == (VoltAlgorithmObject *)0)
        break;

      /* Make sure this is the algId for DSA.
       */
      algId = (Asn1AlgorithmId *)(decodeData->asn1Object);
      libCtx = (VoltLibCtx *)((*obj)->voltObject.libraryCtx);

      if (algId->oid->base.length == VoltDsaSHA1OidBytesLen)
      {
        if (Z2Memcmp (
          algId->oid->base.data, dsaAlgID + VoltDsaSHA1AlgIdOidOffset,
          VoltDsaSHA1OidBytesLen) == 0)
          status = 0;
      }

      /* If the alg ID is not DSA with SHA-1, it might be that the alg
       * ID contains the OID for DSA key. Although that is not the
       * correct OID, standards committees require reading it as DSA
       * With SHA-1 when determining a signature alg because so many
       * clients have made that mistake. If we are at this point in
       * the code, the info's type is VOLT_DER_TYPE_ALG_ID_FLAG, so we
       * know we're not trying to read a key.
       */
      if (status != 0)
      {
        if (algId->oid->base.length != VoltDsaKeyOidBytesLen)
          break;

        if (Z2Memcmp (
          algId->oid->base.data, altDsaSHA1Oid, VoltDsaKeyOidBytesLen) != 0)
          break;
      }

      VtDestroyAlgorithmObject((VtAlgorithmObject *)object);

      /* Use bufferSize as a variable to pass in the signature format.
       */
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      bufferSize = VT_DSA_SIGNATURE_DER_ENCODED;
      status = VtCreateAlgorithmObject (
        (VtLibCtx)libCtx, VtAlgorithmImplDSASignVerify, (Pointer)&bufferSize, 
        (VtAlgorithmObject *)object);
      if (status != 0)
        break;

      obj = (VoltAlgorithmObject **)object;

      /* Set the ALG_ID bit in the classCtx->algorithm field. Also, set
       * the classCtx->digestAlg field, the digest algorithm to use is
       * fixed.
       */
      signCtx =
        (VoltSignClassCtx *)(((VoltAlgorithmObject *)(*obj))->classCtx);
      signCtx->algorithm |= VOLT_SIGNATURE_ALG_ID;
      signCtx->digestAlg = VT_DIGEST_ALG_SHA1;

      break;

    case VOLT_DER_TYPE_GET_ALG_FLAG:
      /* If the flag is get alg, check the input to see if it's the
       * DSA OID.
       */

      /* Check the args.
       */
      VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NON_NULL_ARG;
      if (object != (Pointer)0)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_NULL_ARG;
      if ( (getAlgData->algorithm == (unsigned int *)0) ||
           (getAlgData->oid == (unsigned char *)0) )
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_UNKNOWN_BER;
      if (getAlgData->oidLen != VoltDsaSHA1OidBytesLen)
        break;

      libCtx = getAlgData->libCtx;
      if (Z2Memcmp (
        getAlgData->oid, dsaAlgID + VoltDsaSHA1AlgIdOidOffset,
        VoltDsaSHA1OidBytesLen) != 0)
        break;

      /* The OID matches, the algorithm is DSA with SHA-1
       */
      *(getAlgData->algorithm) = VT_ALG_ID_DSA_SHA1_SIGN;
      getAlgData->DigestImpl = VtAlgorithmImplSHA1;
      getAlgData->SymKeyParam = (VtKeyParam *)0;

      status = 0;
  }

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, object, status, 0, errorType,
    (char *)0, "VtDerCoderDSAwSHA1", fnctLine, (char *)0)

  return (status);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国v欧美v日本v亚洲v| 欧美男同性恋视频网站| 欧美中文字幕一区二区三区| 欧美一区二区黄色| 亚洲人妖av一区二区| 精品在线你懂的| 欧美午夜免费电影| 中国色在线观看另类| 久久精品国产秦先生| 欧美日韩另类国产亚洲欧美一级| 国产欧美视频一区二区| 青青草国产成人99久久| 日本高清不卡视频| 国产精品久久久久久久午夜片| 久久er99热精品一区二区| 色妞www精品视频| 国产精品盗摄一区二区三区| 韩国成人在线视频| 欧美不卡在线视频| 日韩精品成人一区二区在线| 一本大道久久a久久综合| 国产欧美在线观看一区| 国产麻豆精品在线| 久久久久久久久久久久久夜| 久久精品国产免费看久久精品| 欧美色偷偷大香| 亚洲一线二线三线久久久| 99免费精品视频| 国产精品麻豆欧美日韩ww| 丁香婷婷综合色啪| 欧美国产精品专区| 粉嫩欧美一区二区三区高清影视 | 色婷婷一区二区| 国产精品久久久久永久免费观看 | 国产在线精品一区二区夜色| 91精品久久久久久久91蜜桃| 亚洲综合图片区| 日本高清免费不卡视频| 亚洲一区二区三区四区在线| 在线视频国内自拍亚洲视频| 亚洲黄色av一区| 欧美三级电影网| 日本不卡一二三| 欧美成人女星排名| 国产福利视频一区二区三区| 国产精品免费丝袜| 在线精品视频免费播放| 亚洲bt欧美bt精品777| 91精品国产色综合久久久蜜香臀| 日本vs亚洲vs韩国一区三区| 精品久久久久久综合日本欧美| 国产精品一区二区免费不卡| 欧美国产国产综合| 91小视频免费看| 日日夜夜精品视频天天综合网| 日韩亚洲欧美高清| 国产精品综合av一区二区国产馆| 国产欧美日韩三级| 精品视频1区2区| 狠狠色丁香久久婷婷综| 136国产福利精品导航| 欧美性色综合网| 精品一区二区三区香蕉蜜桃| 国产精品污网站| 欧美日韩高清一区二区三区| 精品系列免费在线观看| 亚洲免费高清视频在线| 欧美一区二区三区在线观看| 丁香五精品蜜臀久久久久99网站| 亚洲综合一区二区三区| 精品动漫一区二区三区在线观看| 成人午夜电影小说| 天堂va蜜桃一区二区三区漫画版| 亚洲精品在线电影| 91丨九色丨尤物| 九色|91porny| 一区二区三区毛片| 精品久久久久久亚洲综合网| 日本高清不卡视频| 国产福利一区二区三区视频在线 | 伊人婷婷欧美激情| 日韩久久免费av| 在线观看不卡一区| 国产成人一区在线| 日韩电影在线观看网站| 亚洲日韩欧美一区二区在线| 日韩色视频在线观看| 欧美少妇xxx| 成人黄色小视频| 久久精品国产网站| 日韩中文字幕区一区有砖一区| 国产欧美精品在线观看| 日韩美女视频在线| 欧美肥妇free| 欧美性色黄大片| 91福利在线导航| 成人永久免费视频| 国产在线播放一区二区三区| 丝袜美腿成人在线| 亚洲一区国产视频| 成人免费小视频| 中文字幕一区av| 中文字幕va一区二区三区| 精品999在线播放| 欧美一级高清大全免费观看| 欧美肥妇free| 欧美一区二区三区系列电影| 欧美日精品一区视频| 色综合咪咪久久| 色视频成人在线观看免| 国产不卡视频一区二区三区| 国产剧情在线观看一区二区| 免费成人美女在线观看| 免费观看一级欧美片| 奇米四色…亚洲| 久久99精品视频| 久久99九九99精品| 国产一区亚洲一区| 国产高清不卡一区二区| 国产精品自拍av| 懂色av噜噜一区二区三区av| 成人午夜短视频| 色婷婷综合久久| 欧美日韩久久一区二区| 欧美男人的天堂一二区| 欧美一级一级性生活免费录像| 欧美蜜桃一区二区三区| 日韩一级大片在线观看| 日韩精品影音先锋| 26uuu精品一区二区| 亚洲国产成人自拍| 亚洲人成网站色在线观看| 亚洲欧美激情在线| 亚洲成人福利片| 激情五月播播久久久精品| 粉嫩欧美一区二区三区高清影视| 91尤物视频在线观看| 欧美精品久久久久久久久老牛影院| 欧美精品日韩精品| 国产欧美日韩久久| 夜夜精品视频一区二区| 丝袜国产日韩另类美女| 精品一区二区三区免费视频| 国产精品夜夜爽| 日本精品免费观看高清观看| 欧美人与禽zozo性伦| 久久综合网色—综合色88| 中文字幕中文字幕在线一区 | 欧美成人精品高清在线播放| 26uuu国产日韩综合| 国产精品护士白丝一区av| 亚洲成人一区在线| 国产乱一区二区| 欧美三级欧美一级| 国产婷婷色一区二区三区四区| 亚洲精品高清在线| 久久成人免费电影| 日本黄色一区二区| 久久你懂得1024| 亚洲一二三区不卡| 国产伦精品一区二区三区免费迷 | 日韩久久久久久| 亚洲日本va午夜在线影院| 久久99精品久久久久久动态图| 精品国精品国产| 亚洲视频一区二区在线观看| 日韩激情av在线| 国产999精品久久| 91精品国产欧美一区二区| 国产精品三级av| 日韩精品午夜视频| 日本高清成人免费播放| 久久婷婷久久一区二区三区| 亚洲高清不卡在线观看| 国产91精品一区二区麻豆网站 | 欧美午夜免费电影| 欧美国产精品一区二区| 美脚の诱脚舐め脚责91| 91国偷自产一区二区开放时间| 26uuuu精品一区二区| 日日夜夜一区二区| 欧美午夜电影一区| 国产精品久久夜| 国产美女精品人人做人人爽| 91精品国产综合久久福利| 一区二区三区四区不卡视频 | 欧美精选午夜久久久乱码6080| 国产欧美va欧美不卡在线 | 日韩av一二三| 欧美日韩综合在线免费观看| 一区二区三区日本| 99视频热这里只有精品免费| 国产精品久久毛片av大全日韩| 国产精品综合一区二区| 欧美不卡一二三| 久久99精品视频| 久久久精品影视| 国产成人超碰人人澡人人澡| 国产视频一区在线播放| 国产成人av电影免费在线观看|