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

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

?? p7settype.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */
#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "p7obj.h"
#include "certobj.h"
#include "vcert.h"
#include "idobj.h"
#include "algobj.h"
#include "cipher.h"
#include "recipinfo.h"
#include "errorctx.h"

ASN1_SEQUENCE (Asn1Pkcs7Data) =
{
  ASN1_SIMPLE (Asn1Pkcs7Data, contentType, Asn1ObjectId),
  ASN1_EXP (Asn1Pkcs7Data, content, ASN1_OCTET_STRING, 0)
} ASN1_SEQUENCE_END (Asn1Pkcs7Data);

IMPLEMENT_ASN1_FUNCTIONS (Asn1Pkcs7Data)

ASN1_SEQUENCE (Asn1SignedData) =
{
  ASN1_SIMPLE (Asn1SignedData, version, ASN1_INTEGER),
  ASN1_SET_OF (Asn1SignedData, digestAlgs, Asn1Encoded),
  ASN1_SIMPLE (Asn1SignedData, content, Asn1Pkcs7Data),
  ASN1_IMP_SET_OF_OPT (Asn1SignedData, certs, Asn1Encoded, 0),
  ASN1_IMP_SET_OF_OPT (Asn1SignedData, crls, Asn1Encoded, 1),
  ASN1_SET_OF (Asn1SignedData, signerInfos, Asn1SignerInfo)
} ASN1_SEQUENCE_END (Asn1SignedData);

IMPLEMENT_ASN1_FUNCTIONS (Asn1SignedData)

ASN1_SEQUENCE (Asn1SignedContent) =
{
  ASN1_SIMPLE (Asn1SignedContent, contentType, Asn1ObjectId),
  ASN1_EXP (Asn1SignedContent, signedData, Asn1SignedData, 0),
} ASN1_SEQUENCE_END (Asn1SignedContent);

IMPLEMENT_ASN1_FUNCTIONS (Asn1SignedContent)

/* The function when getting a recipient list our of an object.
 */
int VOLT_CALLING_CONV VoltP7ParamGetRecipList VOLT_PROTO_LIST ((
   VtPkcs7Object pkcs7Obj,
   Pointer *getInfo
));

/* The function when getting a RecipientInfoList our of an object.
 */
int VOLT_CALLING_CONV P7GetRecipientInfoList VOLT_PROTO_LIST ((
   VoltPkcs7Object *obj,
   Pointer *getInfo
));

int VtPkcs7ParamDataLen (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int *dataLen;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_PKCS7_GET_TYPE_FLAG)
      break;

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

    /* The P7 object must not be set with dataLen yet.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->dataLen != 0)
      break;
#if VT_64_BIT_LENGTH == 64
    if (obj->dataLen64 != (VtUInt64)0)
      break;
#endif

    /* The state must be SET or INIT, in either SIGN_WRITE or ENV_WRITE.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if ((obj->state & VOLT_P7_STATE_WRITE) == 0)
      break;
    if ((obj->state & (VOLT_P7_STATE_SIGN | VOLT_P7_STATE_ENV)) == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if ((obj->state & (VOLT_P7_STATE_SET | VOLT_P7_STATE_INIT)) == 0)
      break;

    /* The info should be an unsigned int.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    dataLen = (unsigned int *)info;

    obj->dataLen = *dataLen;
#if VT_64_BIT_LENGTH == 64
    obj->dataLen64 = (VtUInt64)(obj->dataLen);
#endif

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtPkcs7ParamDataLen", fnctLine, (char *)0)

  return (status);
}

#if VT_64_BIT_LENGTH == 64
int VtPkcs7ParamDataLen64 (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VtUInt64 *dataLen;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_PKCS7_GET_TYPE_FLAG)
      break;

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

    /* The P7 object must not be set with dataLen yet.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->dataLen != 0)
      break;
    if (obj->dataLen64 != (VtUInt64)0)
      break;

    /* The state must be SET or INIT, in either SIGN_WRITE or ENV_WRITE.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if ((obj->state & VOLT_P7_STATE_WRITE) == 0)
      break;
    if ((obj->state & (VOLT_P7_STATE_SIGN | VOLT_P7_STATE_ENV)) == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if ((obj->state & (VOLT_P7_STATE_SET | VOLT_P7_STATE_INIT)) == 0)
      break;

    /* The info should be a VtUInt64
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    dataLen = (VtUInt64 *)info;
    obj->dataLen64 = *dataLen;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtPkcs7ParamDataLen64", fnctLine, (char *)0)

  return (status);
}

int VtGetOutputLen64ImplPkcs7 (
   VtLibCtx libraryCtx,
   Pointer associatedInfo,
   VtUInt64 *totalOutputLen,
   unsigned int flag
   )
{
  int status;
  unsigned int state;
  VoltPkcs7Object *obj;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param must be called by VtGetTotalOutputLen64.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_IMPL;
    if (flag != VOLT_GET_OUTPUT_LEN_64_TYPE_FLAG)
      break;

    /* The associated info is supposed to be a PKCS 7 object.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (associatedInfo == (Pointer)0)
      break;

    obj = (VoltPkcs7Object *)associatedInfo;

    /* Paranoid programming check.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (obj, VOLT_OBJECT_TYPE_PKCS7))
      break;

    /* The object should be built to write (either Signed or
     * Enveloped), and the state must be INIT.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if ((obj->state & VOLT_P7_STATE_WRITE) == 0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_GET_INFO_UNAVAILABLE;
    if ((obj->state & VOLT_P7_STATE_INIT) == 0)
      break;

    /* The object must be set with the data length.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (obj->dataLen64 == (VtUInt64)0)
      break;

    /* If the outputLen64 field is not set, call WriteUpdate to set it.
     */
    if (obj->outputLen64 == (VtUInt64)0)
    {
      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VtPkcs7WriteUpdate (
        (VtPkcs7Object)obj, (VtRandomObject)0, (unsigned char *)0, 1,
        (unsigned char *)0, 0, &state);
      if (status == 0)
        status = VT_ERROR_GENERAL;
      if (status != VT_ERROR_BUFFER_TOO_SMALL)
        break;
    }

    *totalOutputLen = obj->outputLen64;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, libraryCtx, 0, status, 0, errorType,
    (char *)0, "VtGetOutputLen64ImplPkcs7", fnctLine, (char *)0)

  return (status);
}
#endif

int VtPkcs7ParamRecipientList (
   VtPkcs7Object pkcs7Obj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  unsigned int count, maxIndex;
  Pointer *getInfo;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltPkcs7WriteEnvCtx *envCtx = (VoltPkcs7WriteEnvCtx *)(obj->localCtx);
  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_TYPE;
    if ( (flag != VOLT_PKCS7_SET_TYPE_FLAG) &&
         (flag != VOLT_PKCS7_GET_TYPE_FLAG) )
      break;

    /* If the state is not VOLT_P7_STATE_ENV_WRITE_SET, we can only Get.
     */
    if (obj->state != VOLT_P7_STATE_ENV_WRITE_SET)
    {
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_INVALID_SET;
      if (flag != VOLT_PKCS7_GET_TYPE_FLAG)
        break;

      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VoltP7ParamGetRecipList (pkcs7Obj, (Pointer *)info);
      break;
    }

    /* The state is WRITE, if Getting, just return whatever is in the
     * recipients field of the ctx.
     */
    if (flag == VOLT_PKCS7_GET_TYPE_FLAG)
    {
      getInfo = (Pointer *)info;
      *getInfo = (Pointer)(envCtx->recipList);
      status = 0;
      break;
    }

    /* The info should be an identity list object.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    if (VOLT_OBJECT_TYPE_NOT_EQUAL (info, VOLT_OBJECT_TYPE_IDENTITY_LIST))
      break;

    /* Make sure there are identities in the recipient list.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtGetIdentityListCount ((VtIdentityList)info, &count, &maxIndex);
    if (status != 0)
      break;

    if (count == 0)
      break;

    /* There can't be an id list there already.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (envCtx->recipList != (VtIdentityList)0)
      break;

    /* We need our own copy of the list.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtCloneObject (info, (Pointer *)&(envCtx->recipList));

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, errorType,
    (char *)0, "VtPkcs7ParamRecipientList", fnctLine, (char *)0)

  return (status);
}

int VoltP7ParamGetRecipList (
   VtPkcs7Object pkcs7Obj,
   Pointer *getInfo
   )
{
  int status;
  VoltPkcs7Object *obj = (VoltPkcs7Object *)pkcs7Obj;
  VoltPkcs7ReadEnvCtx *readCtx = (VoltPkcs7ReadEnvCtx *)(obj->localCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* The P7 object must be set to read envelope data.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_P7_OBJ;
    if (obj->contentType != VOLT_PKCS7_ENVELOPED_DATA_READ)
      break;

    /* The state must be VOLT_P7_STATE_ENV_READ_PREPARE_ENC.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_CALL_ORDER;
    if (obj->state != VOLT_P7_STATE_ENV_READ_PREPARE_ENC)
      break;

    /* Return the IdentityList that is the recipient list.
     */
    *getInfo = (Pointer)(readCtx->recipList);

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, pkcs7Obj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VoltP7ParamGetRecipList", fnctLine, (char *)0)

  return (status);
}

int VtPkcs7ParamRecipientIndex (

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区久久| proumb性欧美在线观看| 日韩精品电影在线观看| 亚洲午夜电影在线| 亚洲一级在线观看| 偷拍一区二区三区| 午夜精品福利一区二区三区av| 亚洲成国产人片在线观看| 亚洲一区二区av在线| 日韩精品一卡二卡三卡四卡无卡| 日韩av电影免费观看高清完整版| 美国三级日本三级久久99| 麻豆精品视频在线观看视频| 黄色精品一二区| 国产91精品精华液一区二区三区 | 91在线高清观看| 一本到不卡免费一区二区| 欧美最猛性xxxxx直播| 欧美亚洲精品一区| 欧美一区二区在线视频| 精品免费日韩av| 国产精品嫩草99a| 亚洲免费在线视频一区 二区| 亚洲综合色网站| 日本在线不卡视频一二三区| 极品少妇xxxx精品少妇偷拍| 成人免费的视频| 欧美三区在线视频| 精品国产91九色蝌蚪| 国产精品久久午夜夜伦鲁鲁| 亚洲欧美日韩在线播放| 日韩不卡手机在线v区| 国产一区中文字幕| 久久蜜桃av一区二区天堂| 国产精品久久久久婷婷| 亚洲福利视频导航| 国产一区二区视频在线| 91论坛在线播放| 欧美一级片在线观看| 欧美国产欧美综合| 亚洲国产综合91精品麻豆| 精品中文字幕一区二区小辣椒| 国产精品88av| 欧美日韩电影在线| 国产精品欧美久久久久无广告| 亚洲制服丝袜av| 韩国av一区二区| 欧美中文字幕亚洲一区二区va在线| 日韩精品一区二区在线| 亚洲情趣在线观看| 激情欧美一区二区三区在线观看| 色先锋aa成人| 久久精品综合网| 日韩精品一二三四| 99国产精品99久久久久久| 日韩午夜在线影院| 亚洲三级电影网站| 国产最新精品精品你懂的| 欧美影院精品一区| 国产精品入口麻豆九色| 蜜臀av在线播放一区二区三区| 91毛片在线观看| 久久亚洲精精品中文字幕早川悠里 | 欧美激情综合五月色丁香| 婷婷久久综合九色综合伊人色| 成人精品视频.| 精品国产乱码久久| 日日摸夜夜添夜夜添精品视频| 成人精品一区二区三区四区| 精品99999| 午夜成人免费视频| 色视频成人在线观看免| 国产三级三级三级精品8ⅰ区| 日本伊人色综合网| 欧美性生交片4| 亚洲激情在线播放| 成a人片亚洲日本久久| 欧美精品一区二区在线观看| 婷婷中文字幕综合| 色94色欧美sute亚洲13| 中文字幕一区二区三区精华液| 国产一区不卡在线| 日韩精品一区二区三区三区免费| 午夜在线成人av| 欧美中文字幕一区二区三区| 自拍偷拍欧美激情| 99久久99久久精品国产片果冻| 精品写真视频在线观看| 91精品婷婷国产综合久久 | 激情偷乱视频一区二区三区| 欧美一二三四区在线| 天堂一区二区在线| 欧美男生操女生| 调教+趴+乳夹+国产+精品| 欧美日韩一区高清| 亚洲国产综合在线| 欧美色图一区二区三区| 亚洲一区自拍偷拍| 欧美影视一区二区三区| 亚洲国产日韩一级| 欧美肥大bbwbbw高潮| 视频一区视频二区中文字幕| 欧美久久高跟鞋激| 日韩av电影天堂| 欧美成人精品3d动漫h| 久国产精品韩国三级视频| 欧美精品一区二区三区视频| 国产在线精品一区二区夜色| 国产欧美一区二区三区在线看蜜臀| 国产精品一卡二卡在线观看| 亚洲国产成人自拍| 99视频超级精品| 一区二区理论电影在线观看| 欧美天天综合网| 日本不卡一二三区黄网| 欧美tk丨vk视频| 国产剧情av麻豆香蕉精品| 中文字幕av免费专区久久| 色综合色狠狠天天综合色| 亚洲激情网站免费观看| 欧美日韩1区2区| 久久成人免费网站| 国产精品丝袜久久久久久app| 成人涩涩免费视频| 一区二区欧美在线观看| 91精品国产欧美一区二区18| 极品少妇xxxx精品少妇偷拍| 国产精品网站在线播放| 一本到不卡精品视频在线观看| 亚洲超碰精品一区二区| 精品国产乱码久久久久久夜甘婷婷| 国产福利一区二区三区| 亚洲免费观看在线观看| 91精品久久久久久久99蜜桃| 国产大陆精品国产| 夜夜精品视频一区二区| 日韩欧美123| 不卡视频在线看| 午夜精品福利一区二区三区av | 亚洲国产精品黑人久久久| 91蜜桃在线免费视频| 青青草原综合久久大伊人精品优势 | 国产精品蜜臀av| 欧美日韩国产综合一区二区| 国产一区二区三区久久悠悠色av | 日韩视频在线一区二区| 成人激情动漫在线观看| 日韩影院免费视频| 亚洲欧洲国产专区| 欧美一卡二卡在线观看| 波多野结衣亚洲一区| 视频一区二区中文字幕| 中文子幕无线码一区tr| 欧美日韩国产片| 不卡视频在线观看| 久久国内精品自在自线400部| 自拍偷自拍亚洲精品播放| 欧美电影免费提供在线观看| 色综合天天综合网天天狠天天| 久久99日本精品| 亚洲第一精品在线| 国产精品三级视频| 欧美电视剧在线观看完整版| 色婷婷久久一区二区三区麻豆| 狠狠网亚洲精品| 亚洲地区一二三色| 亚洲欧美综合另类在线卡通| 精品国产区一区| 欧美二区乱c少妇| 色狠狠一区二区| 国产宾馆实践打屁股91| 麻豆成人av在线| 亚洲18女电影在线观看| 亚洲精品一卡二卡| 国产欧美日韩不卡免费| 日韩欧美国产综合一区 | 一区二区三区在线视频免费 | 风间由美性色一区二区三区| 免费视频一区二区| 亚洲h精品动漫在线观看| 日韩一区在线看| 国产无一区二区| 欧美精品一区二区三区在线播放| 在线不卡中文字幕播放| 欧美午夜电影一区| 色综合久久久久综合| av一区二区久久| 丁香亚洲综合激情啪啪综合| 国内久久精品视频| 麻豆精品一区二区综合av| 五月天网站亚洲| 午夜免费久久看| 亚洲午夜av在线| 亚洲国产日韩a在线播放| 亚洲免费电影在线| 亚洲天堂福利av| 亚洲女与黑人做爰| 一区二区三区资源| 亚洲一区二区三区中文字幕在线| 依依成人综合视频|