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

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

?? ictk.h

?? IBE是一種非對稱密碼技術
?? H
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */

#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "mpint.h"
#include "surrender.h"

#ifndef ICTK_H
#define ICTK_H

#ifdef __cplusplus
extern "C" {
#endif

typedef int bool_t;
#define true_n     1
#define false_n    0
#define isTrue(b)  (b!=false_n)
#define isFalse(b) (b==false_n)

typedef int sign_t;
#define zero_n    0
#define plus_n    1
#define minus_n  -1

typedef int curvetype_e;
#define undefinedcurve_n    0
#define y2equalsx3plus1_n   1   /* y^2 = x^3 + 1 */
#define erroneouscurve_n   -1

typedef curvetype_e curvetype_t;

typedef struct
{
  curvetype_t  type;
} curve_s;

typedef curve_s curve_t;

typedef struct
{
  VoltMpIntCtx  *mpCtx;
  VoltMpInt     *mpInt;
} vsmath_s;

typedef vsmath_s vsmath_t;
typedef vsmath_t vsm_z_t;
typedef vsm_z_t z_t;

/* We use a "complex" represention of F_p^2 as Z_p[i] where i = sqrt(-1)
 */
typedef struct
{
  z_t *re;
  z_t *im;
  Pointer bf;
} fp2_s;

typedef fp2_s fp2_t;

typedef struct
{
  /* expression of Solinas prime as:
   * 2 ^ a + s * 2 ^ b + c
   */
  unsigned int  a;
  unsigned int  b;
  sign_t        s;
  sign_t        c;
} solinas_s;

typedef solinas_s solinas_t;

typedef struct
{
  curve_t    curve; /* used for inheritance --- don't (re)move! */
  z_t       *p;
  z_t       *q;
  z_t       *p1byq;
  z_t       *cbrtpwr;
  z_t       *tatepwr;
  fp2_t     *zeta;
  solinas_t  sol;
  Pointer    bf;
} ec1_s;

typedef ec1_s ec1_t;

typedef struct
{
  int        m;
  z_t      **prex;
  z_t      **prey;
  Pointer    bf;
} mul1_s;

typedef mul1_s mul1_t;

typedef struct
{
  curvetype_t  type;
} point_s;

typedef point_s point_t;

typedef struct
{
  point_t  point; /* used for inheritance --- don't (re)move! */
  fp2_t    *x;
  fp2_t    *y;
  bool_t   inf;
  Pointer  bf;
} pt1_s;

typedef pt1_s pt1_t;

#ifndef ICTK_DO_PRE_DISTORT
#define ICTK_DO_PRE_DISTORT 1
#endif

typedef struct
{
  ec1_t      *curve;
  mul1_t     *mul;
  z_t        *fld;    /* points to curve->p, is not a "new" object */
  z_t        *ord;    /* points to curve->q, is not a "new" object */
  pt1_t      *gener;
  pt1_t      *refer;
#if ICTK_DO_PRE_DISTORT
  pt1_t      *generphi;
  pt1_t      *referphi;
  fp2_t      *sanity_check_cache;
#endif
  Pointer     bf;
} common_s;

typedef common_s common_t;

typedef struct
{
  common_t   *common;  /* points to an existing common_t, not its own. */
  z_t        *master;
  Pointer     bf;
} secret_s;

typedef secret_s secret_t;

typedef struct
{
  common_t      *common;
  secret_t      *secret;
  int            bits;
  unsigned int   bytes;
  VoltMpIntCtx  *mpCtx;
  VoltLibCtx    *libCtx;
} bf_context_s;

typedef bf_context_s  bf_context_t;

typedef struct
{
  VoltLibCtx      *libCtx;
  int              type;
  z_t             *prime;
  z_t             *subprime;
  unsigned char   *a;
  int              aSize;
  unsigned char   *b;
  int              bSize;
  unsigned char   *base;
  int              baseSize;
  unsigned char   *reference;
  int              referenceSize;
} ic_parameters_simple_s;

typedef ic_parameters_simple_s ic_parameters_simple_t;

/* More definitions that belong in ictk.h, but are in a separate file
 * for convenience.
 */
#include "bbtk.h"

/*=========================================================*/
/*                                                         */
/* Utility Functions                                       */
/*                                                         */
/*=========================================================*/

/* sets up the BF context (does NOT set up the parameters)
 */
int bfNew (
   VoltLibCtx *libCtx,
   VoltMpIntCtx *mpCtx,
   bf_context_t **bfCtx
   );

/* deletes the BF context
 */
void bfDel (
   bf_context_t *bf
   );

/* populate BF context with random curve, public parameters, and master
 * secret
 * return 0 for success and non-zero error code.
 */
int bfRandomSetup (
   bf_context_t *bf,
   VtRandomObject random,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   int type,
   int primeBits,
   int subprimeBits
   );

/* dumps the master secret
 * return 0 for success, non-zero error code.
 */
int bfRawDumpSecret (
   void *buf,
   unsigned int buf_sz,
   unsigned int *secretLen,
   bf_context_t *bf
   );

/* loads up the master secret (verifying compatibility with the
 * common pars)
 * return 0 for success or non-zero error code.
 */
int bfRawLoadSecret (
   bf_context_t *bf,
   unsigned char *data,
   unsigned int sz,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/*=========================================================*/
/*                                                         */
/* Data Import/Export Functions                            */
/*                                                         */
/*=========================================================*/

/* constructor for ic_parameters_simple_t with initialization
 */
int bfIcParsNew (
   bf_context_t *bf,
   ic_parameters_simple_t **icPars
   );

/* destructor for ic_parameters_simple_t
 */
void bfIcParsDel (
   ic_parameters_simple_t *icp
   );

/* export PUBLIC bf_context_t to ic_parameters_simple_t
 * (returns 0 if ok; non-zero code otherwise)
 */
int bfContextExportToIcPars (
   ic_parameters_simple_t *icp,
   bf_context_t *bf
   );

/* import PUBLIC ic_parameters_simple_t to bf_context_t
 * (returns 0 if ok; non-zero code otherwise)
 */
int bfContextImportFromIcPars (
   bf_context_t *bf,
   ic_parameters_simple_t *icp,
   unsigned int accelCount,
   unsigned char *accelTable,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* ASN1-compliant point compression for non-zero points in F_p only
 */
int bfPointCompressSpecial (
   unsigned char *buf,
   unsigned int sz,
   pt1_t *pt,
   ec1_t *ec,
   bf_context_t *bf
   );

/* ASN1-compliant point decompression for compressed non-zero points
 * in F_p only.
 */
int bfPointDecompressSpecial (
   pt1_t *pt,
   unsigned char *buf,
   unsigned int sz,
   ec1_t *ec,
   bf_context_t *bf
   );

/* export raw private key (as given by bfRawExtract) to ASN1 compressed
 * point representation
 * Return 0 for success or a non-zero error code.
 */
int bfPrivateKeyExportToPoint (
   unsigned char *privkey,
   int bufSize,
   int *keyLen,
   unsigned char *raw,
   unsigned int raw_sz,
   bf_context_t  *bf
   );

/* import raw private key (for use by bfRawDecrypt) from ASN1
 * compressed point representation
 * return 0 for success, non-zero error code.
 */
int bfPrivateKeyImportFromPoint (
   unsigned char *raw,
   unsigned int buf_sz,
   unsigned int *keyLen,
   unsigned char *privkey,
   int privkeySize,
   bf_context_t *bf
   );

/* calculates the y coordinate of a point given its (x, y[0])
 * ASN1 compressed representation
 * return 0 for success, non-zero error code.
 */
int bfCalculatePointY (
   unsigned char *ycoord,
   unsigned int buf_sz,
   unsigned int *ycoordLen,
   unsigned char *point,
   unsigned int pointSize,
   bf_context_t *bf
   );

/* calculates the x coordinate of a point given its y coordinate.
 * Normally, the function declaration would look like this.
 * <pre>
 * <code>
 *   int bfCalculatePointX (
 *      unsigned char *xcoord,
 *      unsigned int buf_sz,
 *      unsigned int *xcoordLen,
 *      unsigned char *ycoord,
 *      unsigned int ysize,
 *      bf_context_t *bf
 *      );
 * </code>
 * </pre>
 * But top calculate X, the toolkit will do the same thing a
 * bfPrivateKeyExportToPoint. So call that instead.
 */
#define bfCalculatePointX bfPrivateKeyExportToPoint

/*=========================================================*/
/*                                                         */
/* IB Encryption Functions                                 */
/*                                                         */
/*=========================================================*/

/* get the size of private keys
 */
unsigned int bfGetRawPrivateKeySize (
   bf_context_t *bf
   );

/* extract a private key
 */
int bfRawExtract (
   unsigned char *key,
   unsigned int buf_sz,
   unsigned int *keyLen,
   unsigned char *id,
   unsigned int id_sz,
   bf_context_t *bf
   );

/* get the ciphertext size given the plaintext size
 */
unsigned int bfGetRawEncryptedSize (
   unsigned int msg_sz,
   bf_context_t *bf
   );

/* encrypt for a given identity
 * return 0 for success, non-zero error code.
 *
 * This function will call the surrender function (if there is a
 * surrender ctx) twice with a callCount of 4. That is, the first call
 * to Surrender, the callCount will be 4 and the callNumber will be 2.
 * The second call, the callCount will be 4 and the callNumber will be
 * 3.
 */
int bfRawEncrypt (
   unsigned char *ciph,
   unsigned int buf_sz,
   unsigned int *outputLen,
   unsigned char *id,
   unsigned int id_sz,
   unsigned char *msg,
   unsigned int msg_sz,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   VtRandomObject userRandom,
   bf_context_t *bf
   );

/* get the plaintext size given the ciphertext size
 */
unsigned int bfGetRawDecryptedSize (
   unsigned int ciph_sz,
   bf_context_t *bf
   );

/* decrypt using a given private key
 * return 0 for success, non-zero error code.
 *
 * This function will call the surrender function (if there is a
 * surrender ctx) once with a callCount of 3. That is, for the call to
 * Surrender, the callCount will be 3 and the callNumber will be 2.
 */
int bfRawDecrypt (
   unsigned char *msg,
   unsigned int buf_sz,
   unsigned int *outputLen,
   unsigned char *key,
   unsigned int key_sz,
   unsigned char *ciph,
   unsigned int ciph_sz,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   bf_context_t *bf
   );

#ifdef __cplusplus
}
#endif

#endif /* ICTK_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美特级限制片免费在线观看| 精品一区二区三区免费视频| 99久久er热在这里只有精品66| 国产亲近乱来精品视频| 懂色av中文字幕一区二区三区 | 五月天一区二区| 欧美日韩在线播| 日韩中文字幕不卡| 精品精品国产高清a毛片牛牛| 国产精品69毛片高清亚洲| 国产欧美综合在线| 91传媒视频在线播放| 日日摸夜夜添夜夜添亚洲女人| 日韩一级精品视频在线观看| 国产在线一区二区| 亚洲人成精品久久久久久| 欧美色区777第一页| 国产综合久久久久久鬼色| 亚洲日本丝袜连裤袜办公室| 欧美日韩久久久| 国产91精品久久久久久久网曝门| 亚洲欧美在线另类| 制服丝袜中文字幕亚洲| 国产成人精品影视| 亚洲成人午夜影院| 久久久99久久| 欧美日韩国产一级| 国产精品一区二区果冻传媒| 亚洲永久免费视频| 精品国产91洋老外米糕| 色婷婷综合久久久中文一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美国产一区视频在线观看| 欧美日本韩国一区| 国产精品69久久久久水密桃| 亚洲丶国产丶欧美一区二区三区| 久久女同精品一区二区| 欧美亚洲日本国产| 成人久久视频在线观看| 轻轻草成人在线| 亚洲影院免费观看| 国产精品久久国产精麻豆99网站 | www.一区二区| 久久国产精品色婷婷| 亚洲一区免费在线观看| 国产精品国产三级国产aⅴ原创 | 国产精品久久久久一区| 日韩欧美在线影院| 欧日韩精品视频| 成人美女在线观看| 久久99国产精品麻豆| 午夜视频一区二区| 一区二区三区四区不卡在线| 国产欧美一区视频| 精品久久久久久久人人人人传媒| 欧美日韩国产综合草草| 色婷婷久久综合| av中文字幕在线不卡| 国产大片一区二区| 国产精品资源网| 久久国产日韩欧美精品| 日韩激情中文字幕| 午夜精品久久一牛影视| 亚洲国产日产av| 亚洲风情在线资源站| 一区二区三区精品在线观看| |精品福利一区二区三区| 欧美激情综合网| 国产日本一区二区| 久久久不卡影院| 国产欧美1区2区3区| 中日韩av电影| 国产精品久久久久久久久快鸭| 国产免费成人在线视频| 国产三级一区二区| 国产三级三级三级精品8ⅰ区| 久久久99精品免费观看不卡| 欧美激情一二三区| 亚洲欧美综合色| 亚洲综合激情网| 亚洲五月六月丁香激情| 午夜精品久久久久久久久久久| 偷拍与自拍一区| 麻豆成人久久精品二区三区小说| 蜜桃视频一区二区三区 | 国产日韩欧美综合一区| 久久综合狠狠综合久久综合88| 久久综合九色综合97_久久久| 国产亚洲精品福利| 国产精品萝li| 亚洲香肠在线观看| 青青草国产成人99久久| 激情文学综合插| 成人性生交大片免费看中文| www.色精品| 欧美三级日本三级少妇99| 91麻豆精品国产| 亚洲精品一区二区三区香蕉| 欧美经典一区二区| 亚洲综合精品久久| 久色婷婷小香蕉久久| 懂色中文一区二区在线播放| 色视频成人在线观看免| 制服丝袜日韩国产| 久久精品亚洲国产奇米99| 综合激情成人伊人| 日韩国产一二三区| 国产精品1区2区3区| 一本大道久久a久久综合| 日韩欧美一区在线观看| 亚洲国产精品激情在线观看| 亚洲精品乱码久久久久久久久| 日韩在线一二三区| 懂色一区二区三区免费观看| 欧美午夜理伦三级在线观看| 久久综合九色综合欧美98| 一区二区三区四区在线免费观看| 美国欧美日韩国产在线播放| proumb性欧美在线观看| 91麻豆精品国产91久久久更新时间 | 国产亚洲一本大道中文在线| ●精品国产综合乱码久久久久| 天天色综合成人网| 粉嫩嫩av羞羞动漫久久久| 欧美日韩高清不卡| 中文字幕五月欧美| 国产在线国偷精品免费看| 欧美在线999| 国产精品免费人成网站| 美国十次综合导航| 欧美日韩在线三级| 国产精品午夜免费| 精品一区二区免费看| 99国产精品99久久久久久| 日韩天堂在线观看| 一区二区三区四区在线免费观看| 国产很黄免费观看久久| 欧美日韩成人综合天天影院 | 精品电影一区二区三区| 亚洲自拍偷拍综合| 成人h动漫精品一区二区 | 国产精品毛片高清在线完整版| 日本不卡一二三| 欧美日韩不卡在线| 亚洲影视在线观看| av午夜精品一区二区三区| 欧美极品aⅴ影院| 久草精品在线观看| 91麻豆精品国产91久久久久久 | 亚洲色图色小说| 国产高清久久久| 欧美不卡视频一区| 日韩影视精彩在线| 精品视频在线视频| 国产精品亚洲成人| 欧美一区二区精美| 一区二区三区四区亚洲| 国产黄人亚洲片| 2023国产一二三区日本精品2022| 日韩理论片在线| 色综合婷婷久久| 中文字幕在线不卡一区| 国产成a人亚洲精品| 久久综合色播五月| 极品少妇一区二区| 精品黑人一区二区三区久久 | 国产一区二区剧情av在线| 欧美大片一区二区| 九九**精品视频免费播放| 欧美高清视频www夜色资源网| 樱桃国产成人精品视频| 色94色欧美sute亚洲线路一ni| 亚洲欧洲日韩一区二区三区| 91亚洲国产成人精品一区二区三| 欧美国产综合色视频| www.色综合.com| 亚洲欧美日韩国产手机在线| 在线视频国产一区| 亚洲自拍偷拍综合| 在线播放中文一区| 久久精品国产**网站演员| xnxx国产精品| 99久久久无码国产精品| 亚洲午夜av在线| 欧美成人精品1314www| 国产成人在线视频免费播放| 亚洲欧洲精品天堂一级| 欧美日韩国产综合视频在线观看| 午夜视频久久久久久| 精品国产123| 国产白丝精品91爽爽久久| 亚洲欧洲日本在线| 欧美日本免费一区二区三区| 蜜臀久久99精品久久久久久9 | 日韩精品中文字幕一区二区三区| 国产原创一区二区三区| 亚洲视频综合在线| 欧美片在线播放| 国产盗摄一区二区| 亚洲一区二区免费视频|