⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asn1types.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 "derhelp.h"
#include <openssl/asn1t.h>

#ifdef  OPENSSL_EXPORT_VAR_AS_FUNCTION

const ASN1_ITEM *Asn1ObjectId_it ()
{
  static const ASN1_EXTERN_FUNCS oidExternFuncs =
  {
    0,
    Asn1CommonNew,
    Asn1CommonFree,
    Asn1CommonClear,
    Asn1CommonDecode,
    Asn1CommonEncode
  };

  static const ASN1_ITEM local_it = {
    ASN1_ITYPE_EXTERN,
    6,
    0,
    0,
    (void *)&oidExternFuncs,
    sizeof (Asn1ObjectId),
    "Asn1ObjectId"
  };

  return (&local_it);
}

Asn1ObjectId *d2i_Asn1ObjectId (
   Asn1ObjectId **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1ObjectId *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (Asn1ObjectId_it ())));
}

int i2d_Asn1ObjectId (
   Asn1ObjectId *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (Asn1ObjectId_it ())));
}

void Asn1ObjectId_free (
   Asn1ObjectId *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (Asn1ObjectId_it ()));
}

const ASN1_ITEM *Asn1Encoded_it ()
{
  static const ASN1_EXTERN_FUNCS encodedExternFuncs =
  {
    0,
    Asn1CommonNew,
    Asn1CommonFree,
    Asn1CommonClear,
    Asn1CommonDecode,
    Asn1CommonEncode
  };

  static const ASN1_ITEM local_it = {
    ASN1_ITYPE_EXTERN,
    0,
    0,
    0,
    (void *)&encodedExternFuncs,
    sizeof (Asn1Encoded),
    "Asn1Encoded"
  };

  return (&local_it);
}

Asn1Encoded *d2i_Asn1Encoded (
   Asn1Encoded **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1Encoded *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (Asn1Encoded_it ())));
}

int i2d_Asn1Encoded (
   Asn1Encoded *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (Asn1Encoded_it ())));
}

void Asn1Encoded_free (
   Asn1Encoded *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (Asn1Encoded_it ()));
}

const ASN1_ITEM *Asn1EcPoint_it ()
{
  static const ASN1_EXTERN_FUNCS ecPointFuncs =
  {
    0,
    Asn1EcPointNew,
    Asn1EcPointFree,
    Asn1EcPointClear,
    Asn1EcPointDecode,
    Asn1EcPointEncode
  };

  static const ASN1_ITEM local_it = {
    ASN1_ITYPE_EXTERN,
    4,
    0,
    0,
    (void *)&ecPointFuncs,
    sizeof (Asn1EcPoint),
    "Asn1EcPoint"
  };

  return (&local_it);
}

Asn1EcPoint *d2i_Asn1EcPoint (
   Asn1EcPoint **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1EcPoint *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (Asn1EcPoint_it ())));
}

int i2d_Asn1EcPoint (
   Asn1EcPoint *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (Asn1EcPoint_it ())));
}

void Asn1EcPoint_free (
   Asn1EcPoint *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (Asn1EcPoint_it ()));
}

const ASN1_ITEM *Asn1EncryptedContent_it ()
{
  static const ASN1_EXTERN_FUNCS encContentFuncs =
  {
    0,
    Asn1EncryptedContentNew,
    Asn1EncryptedContentFree,
    Asn1EncryptedContentClear,
    Asn1EncryptedContentDecode,
    Asn1EncryptedContentEncode
  };

  static const ASN1_ITEM local_it = {
    ASN1_ITYPE_EXTERN,
    4,
    0,
    0,
    (void *)&encContentFuncs,
    sizeof (Asn1EncryptedContent),
    "Asn1EncryptedContent"
  };

  return (&local_it);
}

Asn1EncryptedContent *d2i_Asn1EncryptedContent (
   Asn1EncryptedContent **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1EncryptedContent *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (Asn1EncryptedContent_it ())));
}

int i2d_Asn1EncryptedContent (
   Asn1EncryptedContent *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (Asn1EncryptedContent_it ())));
}

void Asn1EncryptedContent_free (
   Asn1EncryptedContent *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (Asn1EncryptedContent_it ()));
}

#else

static const ASN1_EXTERN_FUNCS oidExternFuncs =  {
    0,
    Asn1CommonNew,
    Asn1CommonFree,
    Asn1CommonClear,
    Asn1CommonDecode,
    Asn1CommonEncode
};

const ASN1_ITEM Asn1ObjectId_it = {
    ASN1_ITYPE_EXTERN,
    6,
    0,
    0,
    (void *)&oidExternFuncs,
    sizeof (Asn1ObjectId),
    "Asn1ObjectId"
};


Asn1ObjectId *d2i_Asn1ObjectId (
   Asn1ObjectId **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1ObjectId *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (&(Asn1ObjectId_it))));
}

int i2d_Asn1ObjectId (
   Asn1ObjectId *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (&(Asn1ObjectId_it))));
}

void Asn1ObjectId_free (
   Asn1ObjectId *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (&(Asn1ObjectId_it)));
}


static const ASN1_EXTERN_FUNCS encodedExternFuncs =  {
    0,
    Asn1CommonNew,
    Asn1CommonFree,
    Asn1CommonClear,
    Asn1CommonDecode,
    Asn1CommonEncode
};

const ASN1_ITEM Asn1Encoded_it = {
    ASN1_ITYPE_EXTERN,
    0,
    0,
    0,
    (void *)&encodedExternFuncs,
    sizeof (Asn1Encoded),
    "Asn1Encoded"
};
 

Asn1Encoded *d2i_Asn1Encoded (
   Asn1Encoded **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1Encoded *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (&(Asn1Encoded_it))));
}

int i2d_Asn1Encoded (
   Asn1Encoded *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (&(Asn1Encoded_it))));
}

void Asn1Encoded_free (
   Asn1Encoded *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (&(Asn1Encoded_it)));
}


static const ASN1_EXTERN_FUNCS ecPointFuncs =  {
    0,
    Asn1EcPointNew,
    Asn1EcPointFree,
    Asn1EcPointClear,
    Asn1EcPointDecode,
    Asn1EcPointEncode
};
  
const ASN1_ITEM Asn1EcPoint_it = {
    ASN1_ITYPE_EXTERN,
    4,
    0,
    0,
    (void *)&ecPointFuncs,
    sizeof (Asn1EcPoint),
    "Asn1EcPoint"
};


Asn1EcPoint *d2i_Asn1EcPoint (
   Asn1EcPoint **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1EcPoint *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (&(Asn1EcPoint_it))));
}

int i2d_Asn1EcPoint (
   Asn1EcPoint *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (&(Asn1EcPoint_it))));
}

void Asn1EcPoint_free (
   Asn1EcPoint *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (&(Asn1EcPoint_it)));
}


static const ASN1_EXTERN_FUNCS encContentFuncs = {
    0,
    Asn1EncryptedContentNew,
    Asn1EncryptedContentFree,
    Asn1EncryptedContentClear,
    Asn1EncryptedContentDecode,
    Asn1EncryptedContentEncode
};

const ASN1_ITEM Asn1EncryptedContent_it = {
    ASN1_ITYPE_EXTERN,
    4,
    0,
    0,
    (void *)&encContentFuncs,
    sizeof (Asn1EncryptedContent),
    "Asn1EncryptedContent"
};
   

Asn1EncryptedContent *d2i_Asn1EncryptedContent (
   Asn1EncryptedContent **a,
   unsigned char **in,
   long len
   )
{
  return ((Asn1EncryptedContent *)ASN1_item_d2i (
    (ASN1_VALUE **)a, in, len, (&(Asn1EncryptedContent_it) )));
}

int i2d_Asn1EncryptedContent (
   Asn1EncryptedContent *a,
   unsigned char **out
   )
{
  return (ASN1_item_i2d (
    (ASN1_VALUE *)a, out, (&(Asn1EncryptedContent_it) )));
}

void Asn1EncryptedContent_free (
   Asn1EncryptedContent *a
   )
{
  ASN1_item_free ((ASN1_VALUE *)a, (&(Asn1EncryptedContent_it)) );
}

#endif



Asn1ObjectId *Asn1ObjectId_new ()
{
  Asn1ObjectId *retVal = (Asn1ObjectId *)0;

  Asn1CommonNew ((ASN1_VALUE **)&retVal, (const ASN1_ITEM *)0);
  return (retVal);
}


int Asn1ObjectId_set (
   Asn1ObjectId *value,
   unsigned char *data,
   unsigned int len
   )
{
  return (Asn1CommonSet ((VoltAsn1String *)value, data, len));
}


Asn1Encoded *Asn1Encoded_new ()
{
  Asn1Encoded *retVal = (Asn1Encoded *)0;

  Asn1CommonNew ((ASN1_VALUE **)&retVal, (const ASN1_ITEM *)0);
  return (retVal);
}


int Asn1Encoded_setCreate (
   Asn1Encoded **value,
   unsigned char *data,
   unsigned int len
   )
{
  Asn1Encoded *newValue = (Asn1Encoded *)0;

  if ( (data == (unsigned char *)0) || (len == 0) )
    return (1);

  /* If there is no value, create one.
   */
  if (*value == (Asn1Encoded *)0)
  {
    Asn1CommonNew ((ASN1_VALUE **)&newValue, (const ASN1_ITEM *)0);
    if (newValue == (Asn1Encoded *)0)
      return (0);
    *value = newValue;
  }
  return (Asn1CommonSet ((VoltAsn1String *)(*value), data, len));
}


int Asn1Encoded_set (
   Asn1Encoded *value,
   unsigned char *data,
   unsigned int len
   )
{
  return (Asn1CommonSet ((VoltAsn1String *)value, data, len));
}


Asn1EcPoint *Asn1EcPoint_new ()
{
  Asn1EcPoint *retVal = (Asn1EcPoint *)0;

  Asn1EcPointNew ((ASN1_VALUE **)&retVal, (const ASN1_ITEM *)0);
  return (retVal);
}


int Asn1EcPoint_set (
   Asn1EcPoint *value,
   unsigned int primeLen,
   unsigned char *xCoord,
   unsigned int xLen,
   unsigned char *yCoord,
   unsigned int yLen
   )
{
  if (value == (Asn1EcPoint *)0)
    return (0);

  Asn1EcPointClear ((ASN1_VALUE **)&value, (ASN1_ITEM *)0);
  value->vFlags |= VOLT_ASN1_COPY_FLAG_FIXED;

  if ( (xCoord == (unsigned char *)0) || (xLen == 0) )
    return (0);
  if ( (yCoord == (unsigned char *)0) || (yLen == 0) )
    return (0);
  if ( (xLen > primeLen) || (yLen > primeLen) )
    return (0);

  /* If copy by ref, copy the addresses, if copy by value, allocate and
   * copy.
   */
  if ((value->vFlags & VOLT_ASN1_COPY_MASK) == VOLT_ASN1_COPY_DATA)
  {
    value->xCoord.data = (unsigned char *)OPENSSL_malloc (xLen);
    if (value->xCoord.data == (unsigned char *)0)
      return (0);

    Asn1Memcpy (value->xCoord.data, xCoord, xLen);
    value->xCoord.len = xLen;

    value->yCoord.data = (unsigned char *)OPENSSL_malloc (yLen);
    if (value->yCoord.data == (unsigned char *)0)
      return (0);

    Asn1Memcpy (value->yCoord.data, yCoord, yLen);
    value->yCoord.len = primeLen;
  }
  else
  {
    value->xCoord.data = xCoord;
    value->xCoord.len = xLen;
    value->yCoord.data = yCoord;
    value->yCoord.len = yLen;
  }

  value->primeLen = primeLen;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -