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

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

?? encodeid.c

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

/* Set up the OpenSSL ASN.1 templates.
 */
ASN1_SEQUENCE (Asn1Identity) =
{
  ASN1_OPT (Asn1Identity, version, ASN1_INTEGER),
  ASN1_SEQUENCE_OF_OPT (Asn1Identity, profiles, Asn1ObjectId),
  ASN1_SIMPLE (Asn1Identity, district, ASN1_UTF8STRING),
  ASN1_SIMPLE (Asn1Identity, schema, Asn1Encoded)
} ASN1_SEQUENCE_END (Asn1Identity);

IMPLEMENT_ASN1_FUNCTIONS (Asn1Identity)

int VoltEncodeIdentity (
   VoltIdentityObject *idObj,
   unsigned int version,
   unsigned char *encoding,
   unsigned int bufferSize,
   unsigned int *encodingLen
   )
{
  int status, asn1Ret;
  unsigned int index, totalLen, schemaEncodingLen;
  VoltLibCtx *libCtx = (VoltLibCtx *)(idObj->voltObject.libraryCtx);
  VoltDistrictObject *distObj = (VoltDistrictObject *)(idObj->district);
  VtItem *distOid;
  VoltIdentitySchema *schema = idObj->schema;
  unsigned char *schemaEncoding = (unsigned char *)0;
  Asn1ObjectId *oid = (Asn1ObjectId *)0;
  ASN1_INTEGER *vers = (ASN1_INTEGER *)0;
  STACK *profiles = (STACK *)0;
  Asn1Identity *ident = (Asn1Identity *)0;
  unsigned char *temp;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  *encodingLen = 0;

  /* If the encoding is already there, free it.
   */
  if (idObj->encoding.data != (unsigned char *)0)
    Z2Free (idObj->encoding.data);
  idObj->encoding.data = (unsigned char *)0;
  idObj->encoding.len = 0;
  idObj->encodingVersion = 0;

  do
  {
    /* Does the district support the schema in the id object? Go through
     * the district's list of supported schemas.
     */
    for (index = 0; index < distObj->keySchemas.count; ++index)
    {
      distOid = &(distObj->keySchemas.oids[index]);

      /* If the OID's match, use the given schema.
       */
      if (schema->oid.len != distOid->len)
        continue;

      if (Z2Memcmp (schema->oid.data, distOid->data, distOid->len) == 0)
        break;
    }

    /* Did we run through all the supported schemas and not find a match?
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_NO_MATCHING_SCHEMA;
    if (index >= distObj->keySchemas.count)
      break;

    /* Encode the schema.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = schema->EncodeSchemaAlloc (
      (VtIdentityObject)idObj, (Pointer)schema, version,
      &schemaEncoding, &schemaEncodingLen);
    if (status != 0)
      break;

    /* Create the struct.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    ident = Asn1Identity_new ();
    if (ident == (Asn1Identity *)0)
      break;

    /* Set the district name.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    asn1Ret = ASN1_STRING_set (
      ident->district, distObj->qualDistrictName.data,
      distObj->qualDistrictName.len);
    if (asn1Ret != 1)
      break;

    /* Set the schema.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    asn1Ret = Asn1Encoded_set (
      ident->schema, schemaEncoding, schemaEncodingLen);
    if (asn1Ret != 1)
      break;

    if (version == VT_ENCODE_IBCS_2_V_1)
    {
      /* Version 1 exercises the option on the profiles, create the
       * object inside the Identity template.
       * Although the definition says this is a SEQUENCE OF, the
       * defintion in v1 is confined to one OID. Hence, just build one
       * ASN1_OBJECT.
       * We know the schema is email, otherwise the encodeSchema
       * function would have returned an error.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      oid = Asn1ObjectId_new ();
      if (oid == (Asn1ObjectId *)0)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      asn1Ret = Asn1ObjectId_set (oid, schema->oid.data, schema->oid.len);
      if (asn1Ret != 1)
        break;

      profiles = sk_new_null ();
      if (profiles == (STACK *)0)
        break;

      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_INVALID_INPUT;
      asn1Ret = sk_push (profiles, (char *)oid);
      if (asn1Ret == 0)
        break;

      ident->profiles = profiles;
    }
    else
    {
      /* Version 2 uses the version number.
       */
      VOLT_SET_FNCT_LINE (fnctLine)
      vers = ASN1_INTEGER_new ();
      if (vers == (ASN1_INTEGER *)0)
        break;
      ASN1_INTEGER_set (vers, VT_ENCODE_IBCS_2_V_2);

      ident->version = vers;
    }

    /* How big does the buffer need to be?
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_INPUT;
    totalLen = (unsigned int)i2d_Asn1Identity (ident, (unsigned char **)0);
    if (totalLen == 0)
      break;

    /* Allocate the space.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    idObj->encoding.data = (unsigned char *)Z2Malloc (totalLen, 0);
    if (idObj->encoding.data == (unsigned char *)0)
      break;

    /* Encode into the buffer.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_INPUT;
    temp = idObj->encoding.data;
    totalLen = (unsigned int)i2d_Asn1Identity (ident, &temp);
    if (totalLen == 0)
      break;

    idObj->encoding.len = totalLen;
    idObj->encodingVersion = version;

    /* Is the supplied buffer big enough?
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_BUFFER_TOO_SMALL;
    *encodingLen = totalLen;
    if (bufferSize < totalLen)
      break;

    Z2Memcpy (encoding, idObj->encoding.data, idObj->encoding.len);
    status = 0;

  } while (0);

  if (schemaEncoding != (unsigned char *)0)
    Z2Free (schemaEncoding);

  if (oid != (Asn1ObjectId *)0)
    Asn1ObjectId_free (oid);

  if (profiles != (STACK *)0)
  {
    sk_zero (profiles);
    sk_free (profiles);
  }
  if (vers != (ASN1_INTEGER *)0)
    ASN1_INTEGER_free (vers);

  if (ident != (Asn1Identity *)0)
  {
    ident->version = (ASN1_INTEGER *)0;
    ident->profiles = (STACK *)0;

    Asn1Identity_free (ident);
  }

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, idObj, status, 0, errorType,
    (char *)0, "VoltEncodeIdentity", fnctLine, (char *)0)

  return (status);
}

void VoltIsSameIdentity(
   VtIdentityObject id1,
   VtIdentityObject id2,
   unsigned int *compareResult
   )
{
  VoltIdentityObject *obj1;
  VoltIdentityObject *obj2;
  VoltLibCtx *libCtx;

  *compareResult = 0;

  if ( (id1 == (VtIdentityObject)0) || (id2 == (VtIdentityObject)0) )
    return;

  if (VOLT_OBJECT_TYPE_NOT_EQUAL (id1, VOLT_OBJECT_TYPE_IDENTITY))
    return;
  if (VOLT_OBJECT_TYPE_NOT_EQUAL (id2, VOLT_OBJECT_TYPE_IDENTITY))
    return;

  obj1 = (VoltIdentityObject *)id1;
  obj2 = (VoltIdentityObject *)id2;

  /* This function compares encoded ID's only.
   */
  if ( (obj1->encoding.data == (unsigned char *)0) ||
       (obj2->encoding.data == (unsigned char *)0) )
    return;

  libCtx = (VoltLibCtx *)(obj1->voltObject.libraryCtx);

  if (obj1->encoding.len != obj2->encoding.len)
    return;

  if (Z2Memcmp (
    obj1->encoding.data, obj2->encoding.data, obj1->encoding.len) != 0)
    return;

  *compareResult = 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本道免费精品一区二区三区| 91女厕偷拍女厕偷拍高清| 不卡电影一区二区三区| 欧美卡1卡2卡| 最新国产精品久久精品| 久久99精品久久久久久国产越南| 色成人在线视频| 国产精品三级在线观看| 理论片日本一区| 91精品国产综合久久香蕉麻豆| 青娱乐精品视频在线| 色天天综合久久久久综合片| 久久精品一区四区| 日韩高清在线电影| 欧美在线999| 中文字幕在线观看一区二区| 国产精品影视网| 日韩视频免费直播| 午夜精品福利一区二区蜜股av| 91热门视频在线观看| 国产精品久久久久久亚洲毛片 | 精品蜜桃在线看| 一级中文字幕一区二区| 色噜噜狠狠成人中文综合| |精品福利一区二区三区| 风间由美一区二区三区在线观看| 欧美成人一区二区| 极品美女销魂一区二区三区| 欧美一二三区在线| 精品一区二区三区的国产在线播放 | 午夜一区二区三区视频| 在线免费观看视频一区| 亚洲黄色av一区| 欧洲中文字幕精品| 图片区小说区区亚洲影院| 91麻豆精品国产自产在线观看一区| 亚洲妇女屁股眼交7| 欧美日韩国产在线观看| 琪琪一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av | 国产午夜精品久久久久久免费视| 国产中文一区二区三区| 国产欧美日韩三级| 成人aa视频在线观看| 综合久久久久久| 欧美午夜精品久久久| 丝袜诱惑制服诱惑色一区在线观看| 正在播放一区二区| 久久超级碰视频| 中文字幕精品一区二区精品绿巨人| 成人禁用看黄a在线| 亚洲精品伦理在线| 91精品久久久久久蜜臀| 国产综合色产在线精品| 国产成人综合网站| 成人免费一区二区三区在线观看| 在线亚洲一区二区| 久久草av在线| 亚洲人成7777| 欧美一级高清大全免费观看| 国产69精品久久久久777| 亚洲精品一二三| 欧美成人精品福利| 一本到高清视频免费精品| 日本不卡一区二区三区| 久久精品免视看| 欧美四级电影网| 国产精品1024| 亚洲h动漫在线| 中文字幕欧美国产| 91麻豆精品国产91久久久使用方法 | 色婷婷综合久久| 蜜桃精品视频在线| 一区免费观看视频| 精品久久久久久综合日本欧美| 99久久久精品| 国产精品中文字幕一区二区三区| 亚洲综合一区二区精品导航| 精品99一区二区三区| 在线观看免费成人| 国产99久久久精品| 美女久久久精品| 亚洲在线视频一区| 国产精品理伦片| 久久亚洲一区二区三区四区| 欧美日韩三级一区二区| 91丝袜美腿高跟国产极品老师 | 国产精品综合在线视频| 五月婷婷综合在线| 国产精品麻豆视频| 2021中文字幕一区亚洲| 欧美日韩在线亚洲一区蜜芽| 国产91精品露脸国语对白| 蜜桃一区二区三区在线| 亚洲成人动漫精品| 亚洲午夜电影网| 亚洲午夜在线观看视频在线| 亚洲桃色在线一区| 国产精品大尺度| 亚洲国产精品黑人久久久| 欧美mv和日韩mv国产网站| 欧美美女bb生活片| 欧美三级视频在线| 欧美性猛交xxxxxx富婆| 91视频在线观看免费| 91一区二区在线观看| 99re这里都是精品| 一本一道波多野结衣一区二区| 91老师片黄在线观看| 成人中文字幕合集| 成人高清免费观看| 99久久久久久| 在线观看网站黄不卡| 欧美影院午夜播放| 欧美精品三级日韩久久| 777亚洲妇女| 日韩限制级电影在线观看| 制服丝袜一区二区三区| 日韩一区二区影院| 精品对白一区国产伦| 久久久久久久久久看片| 日本一区二区三区久久久久久久久不| 亚洲国产精品久久人人爱| 中文字幕一区二区三区在线观看| 91麻豆免费视频| 一本大道久久a久久综合| 色欧美乱欧美15图片| 欧美日韩五月天| 精品奇米国产一区二区三区| 精品国产一区二区三区四区四| 久久久国产午夜精品| 一区视频在线播放| 亚洲 欧美综合在线网络| 日本不卡视频一二三区| 激情综合色播五月| a在线播放不卡| 欧美日韩aaa| 欧美tickling网站挠脚心| 国产欧美1区2区3区| 日韩一区欧美一区| 天涯成人国产亚洲精品一区av| 日本sm残虐另类| 国产激情一区二区三区| 95精品视频在线| 91精品国产综合久久久久| 久久久国产精品不卡| 一区在线观看视频| 免费视频最近日韩| 免费精品视频最新在线| 成人av电影在线观看| 欧美精品日韩精品| xnxx国产精品| 亚洲黄色免费电影| 黄页网站大全一区二区| 色综合久久精品| 久久综合久久综合久久| 亚洲中国最大av网站| 国产乱色国产精品免费视频| 在线观看视频91| 中国av一区二区三区| 麻豆国产欧美一区二区三区| 91亚洲精品久久久蜜桃网站| 欧美va亚洲va| 无码av中文一区二区三区桃花岛| 成人性生交大合| 日韩精品一区二区三区在线观看| 亚洲视频香蕉人妖| 懂色中文一区二区在线播放| 欧美精品乱人伦久久久久久| 国产精品久久久久影院| 久久超碰97中文字幕| 欧美绝品在线观看成人午夜影视| 中文字幕一区二区三区在线观看 | 99国产精品视频免费观看| 激情欧美日韩一区二区| 久久精品一区蜜桃臀影院| 久久这里只有精品首页| 亚洲欧美日本在线| 国产自产视频一区二区三区 | 裸体在线国模精品偷拍| 91国偷自产一区二区三区观看| 国产肉丝袜一区二区| 久久激情五月激情| 欧美一级艳片视频免费观看| 一区二区三区在线观看视频| av在线不卡观看免费观看| 国产欧美日本一区视频| 国产精品888| xfplay精品久久| 国产在线观看一区二区| 久久综合久久99| 精品亚洲国产成人av制服丝袜| 91精品久久久久久久久99蜜臂 | 日韩毛片在线免费观看| 岛国一区二区在线观看| 国产三级精品三级在线专区| 国产毛片精品一区| 国产网站一区二区三区| 成人高清免费在线播放| 国产精品第四页|