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

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

?? bbtk.h

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

/* This file, bbtk.h, is to be included inside ictk.h. This is simply
 * more definitions that belong in ictk.h, but we'll put them into
 * bbtk.h for convenience. You should not include bbtk.h in any file
 * other than ictk.h.
 */

/* In many structs are fields that contain references to other objects.
 * They do not contain new objects created by the struct. When
 * destroying the struct, do not destroy the references. Such fields
 * are indicated as references.
 */

/* bbCtx is a reference
 * curve is a reference
 * fld is a reference
 * ord is a reference
 */
typedef struct
{
  ec1_t      *curve;
  z_t        *fld;    /* to point to curve->p */
  z_t        *ord;    /* to point to curve->q */
  pt1_t      *g;
  pt1_t      *g1;
  pt1_t      *g2;
  pt1_t      *g3;
  fp2_t      *v;
  mul1_t     *mulg;
  mul1_t     *mulg1;
  mul1_t     *mulg3;
  Pointer     bbCtx;
} bb1common_s;

typedef bb1common_s bb1common_t;

/* common is a reference
 * bbCtx is a reference
 */
typedef struct
{
  bb1common_t  *common;
  z_t          *alpha;
  z_t          *beta;
  z_t          *gamma;
  Pointer       bbCtx;
} bb1secret_s;

typedef bb1secret_s bb1secret_t;

/* The bb1 ctx needs a bfCtx because many of the BB operations call
 * functions that need a bfCtx (it is an object created by the bbCtx
 * and is to be destroyed when the bbCtx is destroyed).
 */
typedef struct
{
  bb1common_t   *common;
  bb1secret_t   *secret;
  int            bits;
  unsigned int   bytes;
  unsigned int   ordbyts;
  bf_context_t  *bfCtx;
} bb1_context_s;

typedef bb1_context_s  bb1_context_t;

typedef struct
{
  VoltLibCtx      *libCtx;
  int              type;
  z_t             *p;      /* prime */
  z_t             *order;  /* subprime */
  unsigned char   *a;
  int              aSize;
  unsigned char   *b;
  int              bSize;
  unsigned char   *g;
  int              gSize;
  unsigned char   *g1;
  int              g1Size;
  unsigned char   *g2;
  int              g2Size;
  unsigned char   *g3;
  int              g3Size;
} bb1_parameters_simple_s;

typedef bb1_parameters_simple_s bb1_parameters_simple_t;

typedef struct
{
  unsigned int    sz;
  char           *buf;
  bb1_context_t  *bbCtx;
} bb1msg_s;

typedef bb1msg_s bb1msg_t;

typedef struct
{
  z_t            *val;
  bb1_context_t  *bbCtx;
} bb1publ_s;

typedef bb1publ_s bb1publ_t;

typedef struct
{
  pt1_t          *d0;
  pt1_t          *d1;
#if  ICTK_DO_PRE_DISTORT
  pt1_t          *d0dist;
  pt1_t          *d1dist;
#endif
  bb1_context_t  *bbCtx;
} bb1priv_s;

typedef  bb1priv_s  bb1priv_t;

typedef struct
{
  unsigned int    sz;
  char           *buf;
  bb1_context_t  *bbCtx;
} bb1ident_s;

typedef bb1ident_s bb1ident_t;

typedef struct
{
  pt1_t         *c0;
  pt1_t         *c1;
  z_t           *h;
  char          *c;        /* points to buf */
  unsigned int   sz;
  char          *buf;
  bb1_context_t  *bbCtx;
} bb1ciph_s;

typedef bb1ciph_s bb1ciph_t;

/* sets up the BB1 context (does NOT set up the parameters)
 */
int bb1New (
   VoltLibCtx *libCtx,
   VoltMpIntCtx *mpCtx,
   bb1_context_t **bbCtx
   );

void bb1Del (
   bb1_context_t *bbCtx
   );

/* constructor for bb1_parameters_simple_t with initialization
 */
int bb1ParsNew (
   bb1_context_t *bbCtx,
   bb1_parameters_simple_t **bbPars
   );

/* destructor for bb1_parameters_simple_t
 */
void bb1ParsDel (
   bb1_parameters_simple_t *bbPars
   );

/* export PUBLIC bb1_context_t to bb1_parameters_simple_t
 */
int bb1ContextExportToIcPars (
   bb1_parameters_simple_t *bbPars,
   bb1_context_t *bbCtx
   );

int bb1commonNew (
   bb1common_t **newCommon,
   bb1_context_t *bbCtx
   );

void bb1commonDel (
   bb1common_t *common
   );

int bb1secretNew (
   bb1secret_t **newSecret,
   bb1_context_t *bbCtx
   );

void bb1secretDel (
   bb1secret_t *secret
   );

int bb1msgNew (
   bb1msg_t **newBb1Msg,
   unsigned char *dat,
   unsigned int sz,
   bb1_context_t *bbCtx
   );

void bb1msgDel (
   bb1msg_t *bb1msg
   );

int bb1publNew (
   bb1publ_t **newPubl,
   bb1_context_t *bbCtx
   );

void bb1publDel (
   bb1publ_t *publ
   );

int bb1privNew (
   bb1priv_t **newPriv,
   bb1_context_t *bbCtx
   );

void bb1privDel (
   bb1priv_t *priv
   );

int bb1identNew (
   bb1ident_t **newIdent,
   unsigned char *dat,
   unsigned int sz,
   bb1_context_t *bbCtx
   );

void bb1identDel (
   bb1ident_t *ident
   );

int bb1ciphNew (
   bb1ciph_t **newBb1ciph,
   unsigned int sz,
   bb1_context_t *bbCtx
   );

void bb1ciphDel (
   bb1ciph_t *bb1ciph
   );

/* set bb based on bb1pars.
 */
int bb1ContextImportFromIcPars (
   bb1_context_t *bbCtx,
   bb1_parameters_simple_t *bb1pars,
   unsigned int accelCount,
   unsigned char *accelG,
   unsigned char *accelG1,
   unsigned char *accelG3,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* populate BB1 context with random curve, public parameters, and
 * master secrets
 */
int bb1RandomSetup (
   bb1_context_t *bb,
   VtRandomObject random,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   int type,
   int primeBits,
   int subprimeBits
   );

/* finds an elliptic curve of prescribed size
 */
int xidBB1corePickEC (
   bb1common_t *common,
   int fld_bits,
   int ord_bits,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   VtRandomObject random
   );

/* picks the master secret and parameters ASSUMING common->curve is
 * already present!
 */
int xidBB1corePickParams (
   bb1common_t *common,
   bb1secret_t *secret,
   VtRandomObject random,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* loads up the common parameters ASSUMING common->curve is already
 * present!
 */
int xidBB1coreLoadCommonParams (
   bb1common_t *common,
   pt1_t *g,
   pt1_t *g1,
   pt1_t *g2,
   pt1_t *g3,
   unsigned int accelCount,
   unsigned char *accelG1,
   unsigned char *accelG3,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* loads up the master secret ASSUMING the curve and common parameters
 * are already present!
 */
int xidBB1coreLoadMasterSecret (
   bb1secret_t *secret,
   bb1common_t *common,
   z_t *alpha,
   z_t *beta,
   z_t *gamma,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* loads up the master secrets (verifying compatibility with the
 * common pars)
 * There are three secrets, they should be in the data buffer
 * consecutively (alph | beta | gamma).
 * return 0 for success or non-zero error code.
 */
int bb1RawLoadSecret (
   bb1_context_t *bbCtx,
   unsigned char *data,
   unsigned int sz,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

/* dumps the master secret
 * There will be three values dumped into the buf. Each will be
 * secretLen bytes long. If one is longer than the others, each of the
 * shorter values will be prepended by a 00 byte. Actually, all might
 * be prepended by one or more 00 bytes.
 * Hence, secret alpha is at buf, secret beta is at buf + *secretLen
 * and secret gamma is at buf + (2 * (*secretLen)).
 * The function will set totalLen to the total number of bytes placed
 * into buf.
 */
int bb1RawDumpSecret (
   unsigned char *buf,
   unsigned int bufSize,
   unsigned int *secretLen,
   unsigned int *totalLen,
   bb1_context_t *bbCtx
   );

/* get the size of private keys
 */
unsigned int bb1GetRawPrivateKeySize (
   bb1_context_t *bbCtx
   );

/* extract a private key
 */
int bb1RawExtract (
   unsigned char *key,
   unsigned int buf_sz,
   unsigned int *keyLen,
   unsigned char *id,
   unsigned int id_sz,
   VtRandomObject random,
   bb1_context_t *bbCtx
   );

/* extracts a private key from given public key using the PKG
 * master secret
 */
int xidBB1coreExtract (
   bb1priv_t *priv,
   bb1publ_t *publ,
   bb1secret_t *secret,
   VtRandomObject random
   );

/* get the ciphertext size given the plaintext size
 */
unsigned int bb1GetRawEncryptedSize (
   unsigned int msg_sz,
   bb1_context_t *bbCtx
   );

/* get the plaintext size given the ciphertext size
 */
unsigned int bb1GetRawDecryptedSize (
   unsigned int ciph_sz,
   bb1_context_t *bbCtx
   );

/* encrypt for a given identity
 * return 0 for success, non-zero error code.
 */
int bb1RawEncrypt (
   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,
   bb1_context_t *bbCtx
   );

/* decrypt using a given private key
 * return 0 for success, non-zero error code.
 */
int bb1RawDecrypt (
   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,
   bb1_context_t *bbCtx
   );

int xidBB1ibeStrongDecrypt (
   bb1ciph_t *ciph,
   fp2_t *decapsk,
   bb1common_t *common,
   bb1msg_t **bb1msg,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

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

/* calculates the x coordinate of a point given its y-coordinate.
 * The return is the ASN.1 compressed version (y[0], x-coord).
 * return 0 for success, non-zero error code.
 */
int bb1CalculatePointX (
   unsigned char *xcoord,
   unsigned int buf_sz,
   unsigned int *xcoordLen,
   unsigned char *ycoord,
   unsigned int ycoordSize,
   bb1_context_t *bbCtx
   );

/* export raw private key (as given by bfRawExtract) to ASN1 compressed
 * point representation.
 * The input is a single buffer with the y-coordinate of one point or
 * the y-coordinates of two points. If one point, the output will be
 * placed into privkey0, if two points, the output will be placed in
 * privkey0 and privkey1. These will be the x-coordinates of the one or
 * two points (with an extra leading byte).
 * The function will know how many points to produce based on the
 * length of raw_sz.
 * Return 0 for success or a non-zero error code.
 */
int bb1PrivateKeyExportToPoints (
   unsigned char *privkey0,
   unsigned char *privkey1,
   unsigned int *keyLen,
   int bufSizes,
   unsigned char *raw,
   unsigned int raw_sz,
   bb1_context_t  *bbCtx
   );

/* import raw private key (for use by bbRawDecrypt) from ASN1
 * compressed point representation
 * return 0 for success, non-zero error code.
 */
int bb1PrivateKeyImportFromPoints (
   unsigned char *raw,
   unsigned int buf_sz,
   unsigned int *keyLen,
   unsigned char *privkey0,
   unsigned char *privkey1,
   int privkeySizes,
   bb1_context_t *bbCtx
   );

/* derives a public key from given identity using the common parameters
 */
int xidBB1coreGetPubl (
   bb1publ_t *publ,
   bb1ident_t *id,
   bb1common_t *common
   );

/* BF IBE Encrypt
 */
int xidBB1ibeEncrypt (
   bb1msg_t *msg,
   bb1publ_t *publ,
   bb1common_t *common,
   bb1ciph_t **bb1ciph,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber,
   VtRandomObject userRandom
   );

/* BB IBE Decrypt
 */
int xidBB1ibeDecrypt (
   bb1ciph_t *ciph,
   bb1priv_t *priv,
   bb1common_t *common,
   bb1msg_t **bb1msg,
   VoltSurrenderCtx *surrCtx,
   unsigned int surrFlag,
   unsigned int *callNumber
   );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品嫩草影院久久| 亚洲成人免费在线观看| 亚洲永久免费视频| 国内精品写真在线观看| 欧美日韩一卡二卡三卡| 国产精品视频一二三区 | 337p亚洲精品色噜噜| 国产精品日韩成人| 精品在线一区二区三区| 欧美色区777第一页| 中文字幕亚洲一区二区av在线 | 国产亚洲成年网址在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲色图欧洲色图婷婷| 国产69精品久久久久777| 欧美一区二区大片| 亚洲韩国精品一区| 在线观看国产精品网站| 亚洲人成亚洲人成在线观看图片 | 国产91精品一区二区麻豆网站| 3atv在线一区二区三区| 天天色天天爱天天射综合| 在线观看日韩一区| 洋洋av久久久久久久一区| av色综合久久天堂av综合| 国产精品视频线看| 成人黄色在线视频| 综合色中文字幕| 99国产欧美另类久久久精品| 日韩理论在线观看| 色综合天天综合狠狠| 中文字幕制服丝袜一区二区三区 | 日韩中文字幕亚洲一区二区va在线| 一本久久a久久免费精品不卡| 亚洲色图欧美激情| 色综合色综合色综合| 亚洲一区成人在线| 欧美二区在线观看| 国产在线精品一区二区三区不卡| 26uuu成人网一区二区三区| 国产成人精品亚洲777人妖| 中日韩av电影| 精品视频在线视频| 久久精品国产秦先生| 国产欧美1区2区3区| 91在线观看地址| 首页国产欧美久久| 久久久三级国产网站| 99视频在线精品| 亚洲国产欧美另类丝袜| 精品久久久久香蕉网| 岛国精品在线播放| 一区二区三区视频在线看| 91精品视频网| 国产成人在线观看| 亚洲国产精品一区二区www | 日韩美女视频一区二区在线观看| 国内精品嫩模私拍在线| 亚洲欧美一区二区三区国产精品 | 久久精品国产亚洲a| 国产精品免费观看视频| 欧美日韩国产区一| 国产成人一区在线| 五月婷婷色综合| 欧美国产在线观看| 欧美精三区欧美精三区| 成人教育av在线| 奇米影视7777精品一区二区| 中文欧美字幕免费| 91精品免费在线观看| 99精品国产热久久91蜜凸| 日本v片在线高清不卡在线观看| 国产婷婷色一区二区三区四区| 欧美日韩你懂得| 99国产精品国产精品毛片| 麻豆精品一二三| 一区二区三区高清| 欧美国产综合色视频| 日韩欧美一级片| 欧美亚一区二区| 成人网在线免费视频| 精品一区二区三区欧美| 亚洲www啪成人一区二区麻豆| 国产精品久久久久影院老司| 日韩精品中午字幕| 欧美另类变人与禽xxxxx| 91丨九色丨尤物| 大胆亚洲人体视频| 国产在线看一区| 美女看a上一区| 丝袜亚洲精品中文字幕一区| 亚洲最新在线观看| 亚洲精品综合在线| 最新日韩av在线| 欧美激情一区二区在线| 国产清纯白嫩初高生在线观看91 | 国产精品无圣光一区二区| 欧美电影免费观看高清完整版 | 国产精品911| 极品少妇xxxx精品少妇| 久久精品国产精品亚洲精品| 日本中文一区二区三区| 日韩影院精彩在线| 午夜日韩在线电影| 日韩专区一卡二卡| 日韩电影在线观看电影| 日韩电影一二三区| 麻豆国产一区二区| 麻豆精品国产传媒mv男同| 麻豆视频观看网址久久| 久久99精品久久久| 国产一二三精品| 国产一区二区电影| 国产成人日日夜夜| jvid福利写真一区二区三区| eeuss鲁片一区二区三区在线看| 99这里只有精品| 欧美亚洲丝袜传媒另类| 欧美日韩第一区日日骚| 91精品国产色综合久久不卡电影| 91精品国产综合久久蜜臀| 欧美一区二区免费观在线| 精品少妇一区二区三区在线视频 | 国产精品亚洲成人| 成人avav影音| 欧美性极品少妇| 日韩一区二区视频| 国产欧美日本一区视频| 亚洲欧美另类综合偷拍| 性久久久久久久久| 看片的网站亚洲| av中文字幕不卡| 欧美亚洲愉拍一区二区| 日韩免费视频一区二区| 国产精品乱码妇女bbbb| 一区二区欧美视频| 另类中文字幕网| av一二三不卡影片| 91精品综合久久久久久| 日本一区二区三区在线观看| 亚洲高清在线精品| 国产乱人伦精品一区二区在线观看 | 在线观看日韩毛片| 精品三级在线看| 最近中文字幕一区二区三区| 日本v片在线高清不卡在线观看| 懂色av中文字幕一区二区三区| 色哟哟精品一区| www国产精品av| 亚洲第一主播视频| 国产成人在线视频网站| 欧美美女一区二区三区| 中文字幕成人网| 日日摸夜夜添夜夜添亚洲女人| 成人免费视频app| 91精品国产综合久久婷婷香蕉| 国产精品久久久久久久岛一牛影视 | 国产一区视频导航| 91久久一区二区| 久久久www免费人成精品| 亚洲18影院在线观看| 成人国产精品免费观看视频| 欧美日韩一区二区三区四区五区| 国产女主播一区| 久久精品国产免费看久久精品| 欧美视频一二三区| 中文字幕巨乱亚洲| 久久国产精品第一页| 欧美军同video69gay| 综合久久一区二区三区| 国产不卡视频一区| 日韩午夜在线观看| 午夜精品在线看| 欧洲精品一区二区三区在线观看| 国产情人综合久久777777| 精品一区二区在线观看| 欧美一级日韩免费不卡| 亚洲综合图片区| 色婷婷综合激情| 国产精品网站一区| 国产精品一区免费视频| 精品国产麻豆免费人成网站| 日本免费新一区视频| 欧美午夜理伦三级在线观看| 亚洲精品视频自拍| 一本到不卡精品视频在线观看| 欧美极品xxx| av中文字幕不卡| 国产精品久久久久久久久免费樱桃| 国产一区二区0| 久久精品亚洲国产奇米99| 国产一区欧美日韩| 久久综合九色综合欧美亚洲| 精品在线观看免费| 精品国产一二三| 国产一区二区中文字幕| 久久夜色精品国产噜噜av| 国产综合一区二区| 久久久久88色偷偷免费| 国产精品影音先锋|