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

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

?? sign.h

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

#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "algobj.h"
#include "keyobj.h"
#include "pad.h"

#ifndef _SIGN_H
#define _SIGN_H

#ifdef __cplusplus
extern "C" {
#endif

/* If the class is SIGN, this is the classCtx (the data struct and
 * the types that are the fields).
 */

/* Call this routine to get an algorithm object that will digest data
 * as specified by the sign/verify object. This is generally used when
 * the sign/verify object was created using an algId. The caller
 * doesn't know what the digest algorithm is, so get the signing
 * algorithm to build it.
 * <p>The caller passes in an address of a VtAlgorithmObject, the
 * implementation will deposit a digest algorithm object there. The
 * digest object belongs to the sign/verify object, the caller can use
 * that object, but must not destroy it.
 *
 * @param obj The sign or verify object. The object built to sign or
 * verify signatures.
 * @param digestObject The address where the implementation will
 * deposit the digest object.
 * @return an int, 0 if the function completed successfully or a
 * non-zero error code.
 */
typedef int VOLT_CALLING_CONV (*VGetDigestObject) VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VtAlgorithmObject *digestObject
));

/* The implementation of this typedef will check the input arguments to
 * see if they can create a signature. It will also determine how big
 * the signature buffer needs to be.
 * <p>The checks include matching the key and algorithm object,
 * determining if the random is valid, and seeing if the data is too
 * large or small. The signCtx->digestAlg field will be set to the
 * algorithm used, the function should check that as well.
 * <p>The function also must set the paddedBlockLen field in the
 * signCtx. If the input is not to be padded, the paddedBlockLen is
 * simply the same length as the digest.
 *
 * @param obj The object set to create signatures.
 * @param key The object containing the key.
 * @param random The object to use in generating random bytes if
 * necessary.
 * @param dataToSign
 * @param dataToSignLen
 * @param signatureSize The address where the implementation will
 * deposit the length of the signature.
 * @return an int, 0 if the function completed successfully or a
 * non-zero error code.
 */
typedef int VOLT_CALLING_CONV (*VCheckSignatureInput) VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VoltKeyObject *key,
   VtRandomObject random,
   unsigned char *dataToSign,
   unsigned int dataToSignLen,
   unsigned int *signatureSize
));

/* Create the signature from the data and key.
 * <p>This function does no argument checking. The caller should have
 * called the GetSignatureSize function to make sure the args were
 * valid. The implementation will assume the address given by signature
 * is valid and big enough.
 * <p>The signCtx->digestAlg field will be set.
 *
 * @param obj The algorithm object containing the context.
 * @param key The key object containing the key data.
 * @param random The object to use in generating random bytes if
 * necessary.
 * @param dataToSign
 * @param dataToSignLen
 * @param signature The buffer into which the implementation will place
 * the signature.
 * @return an int, 0 if the function completed successfully or a
 * non-zero error code.
 */
typedef int VOLT_CALLING_CONV (*VSignData) VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VoltKeyObject *key,
   VtRandomObject random,
   unsigned char *dataToSign,
   unsigned int dataToSignLen,
   unsigned char *signature,
   unsigned int *sigLen
));

/* Verify the signature. The dataToVerify is the digest.
 * <p>Set verifyResult to 1 (yes, true) if the signature verifies, or
 * else set it to 0 (no, flase) if it does not.
 * <p>If the signature does not verify, the return value will still be
 * 0 (success, no error). There was no error in the function, it did
 * what it was supposed to do, determine if a signature verified or not.
 * <p>If the return value is not 0, then the verifyResult value is
 * meaningless.
 * <p>The signCtx->digestAlg field will be set.
 * <p>If there is any unpadding to do, it is the responsibility of this
 * function to do it. If needed, it should find the Unpad function and
 * padCtx in the signCtx in the obj.
 */
typedef int VOLT_CALLING_CONV (*VVerifyData) VOLT_PROTO_LIST ((
   VoltAlgorithmObject *obj,
   VoltKeyObject *key,
   VtRandomObject random,
   unsigned char *dataToVerify,
   unsigned int dataToVerifyLen,
   unsigned char *signature,
   unsigned int sigLen,
   unsigned int *verifyResult
));

/* The digestAlg field might be temporary. If an algorithm object is
 * built from an algID, then the digestAlg is fixed. If not, then it
 * might be possible to use a different digest alg each signature (or
 * not, it depends on the signature algorithm and the implementation).
 * If the digest algorithm is changeable, that will be set by the
 */
typedef struct
{
  VGetDigestObject       GetDigestObject;
  VCheckSignatureInput   CheckSignatureInput;
  VSignData              SignData;
  VVerifyData            VerifyData;
  VtAlgorithmObject      digestObject;
  unsigned int           algorithm;
  unsigned int           digestAlg;
  unsigned int           paddedBlockLen;
  VPad                   Pad;
  VUnpad                 Unpad;
  Pointer                padCtx;
  VCtxDestroy            PadCtxDestroy;
  Pointer                localSignCtx;
  VCtxDestroy            LocalSignCtxDestroy;
} VoltSignClassCtx;

/* Use one of these values for the algorithm field in the SignClassCtx.
 * <p>This is a bit field.
 * <p>The ALG_ID bit is to be set if the object was built from an algID.
 */
#define VOLT_SIGNATURE_ALG_DSA   0x0001
#define VOLT_SIGNATURE_ALG_RSA   0x0002
#define VOLT_SIGNATURE_ALG_ID    0x8000

/* Implements VCtxDestroy.
 */
void VOLT_CALLING_CONV VoltSignCtxDestroy VOLT_PROTO_LIST ((
   Pointer obj,
   Pointer ctx
));

#ifdef __cplusplus
}
#endif

#endif /* _SIGN_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美夫妻性生活| 亚洲人成在线播放网站岛国 | 麻豆精品一区二区av白丝在线| 国内精品写真在线观看| 97久久精品人人澡人人爽| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲一区二区在线免费观看视频| 国产高清久久久久| 欧美理论在线播放| 综合久久给合久久狠狠狠97色 | 欧美三级中文字幕| 亚洲欧洲精品一区二区精品久久久| 免费成人在线视频观看| 欧美日韩中文一区| 亚洲乱码精品一二三四区日韩在线| 久久99国产精品久久| 欧美日韩激情在线| 一区二区三区国产豹纹内裤在线| 大白屁股一区二区视频| 欧美哺乳videos| 美女久久久精品| 欧美一区二区三区成人| 亚洲va欧美va人人爽| 欧洲av一区二区嗯嗯嗯啊| 国产精品理论片在线观看| 国产精品自拍三区| 久久久蜜桃精品| 国内精品自线一区二区三区视频| 91精品国产综合久久福利| 豆国产96在线|亚洲| 欧美xxxxxxxxx| 久久99国产精品尤物| 日韩写真欧美这视频| 免费的成人av| 久久综合九色综合97婷婷女人 | 成人激情综合网站| 国产欧美日韩视频一区二区| 国产成人av电影免费在线观看| 久久亚洲私人国产精品va媚药| 久久国产精品一区二区| 久久影院午夜论| 成人做爰69片免费看网站| 中文字幕一区二区三区视频| 91免费视频大全| 亚洲成人av中文| 日韩一区和二区| 激情五月播播久久久精品| 国产婷婷色一区二区三区| av在线播放成人| 偷偷要91色婷婷| 精品久久久久久久久久久久久久久| 黄色小说综合网站| 欧美激情综合五月色丁香小说| 97久久精品人人澡人人爽| 性做久久久久久| 久久久av毛片精品| 一本一本大道香蕉久在线精品 | 欧美日韩国产小视频| 蜜臀91精品一区二区三区| 久久众筹精品私拍模特| 91免费视频观看| 琪琪久久久久日韩精品| 国产欧美日韩不卡| 91久久免费观看| 奇米精品一区二区三区四区| 久久久精品蜜桃| 91国偷自产一区二区开放时间| 青娱乐精品在线视频| 中文字幕欧美三区| 欧美丰满一区二区免费视频| 国产白丝网站精品污在线入口| 亚洲视频在线观看一区| 日韩欧美国产不卡| 91视视频在线观看入口直接观看www | 一本到高清视频免费精品| 五月天婷婷综合| 欧美国产日韩亚洲一区| 欧美精品在线视频| av动漫一区二区| 激情综合亚洲精品| 亚洲综合色网站| 精品国产乱码久久久久久图片 | 91免费看`日韩一区二区| 美腿丝袜在线亚洲一区| 成人在线综合网站| 亚洲成国产人片在线观看| 中文字幕av一区二区三区高| 欧美日韩国产精品成人| 91免费国产在线观看| 国产老妇另类xxxxx| 日本vs亚洲vs韩国一区三区二区| 亚洲色图在线视频| 国产日韩欧美不卡| 欧美日韩国产首页| 色综合久久精品| 丁香激情综合五月| 国产一区二区三区蝌蚪| 首页国产欧美日韩丝袜| 亚洲欧美日韩国产一区二区三区| 久久精品视频免费观看| 日韩欧美国产不卡| 欧美一卡二卡三卡四卡| 欧美美女bb生活片| 欧美日韩视频在线第一区| 一本高清dvd不卡在线观看| youjizz久久| 96av麻豆蜜桃一区二区| 99国产精品一区| 91网站在线观看视频| 国产传媒欧美日韩成人| 国产原创一区二区| 国产黑丝在线一区二区三区| 国产一区二区电影| 国产激情精品久久久第一区二区| 国产在线精品免费| 国产成人av电影在线| 成人涩涩免费视频| 99免费精品在线观看| av不卡在线播放| 色嗨嗨av一区二区三区| 欧美性生活大片视频| 欧美日韩国产一区| 日韩精品一区二区三区视频在线观看| 日韩欧美一卡二卡| 久久美女艺术照精彩视频福利播放| 26uuu国产日韩综合| 中文字幕av免费专区久久| 国产精品视频免费| 尤物视频一区二区| 亚洲韩国一区二区三区| 秋霞午夜av一区二区三区| 国产中文字幕精品| 91亚洲国产成人精品一区二三| 91看片淫黄大片一级| 制服丝袜av成人在线看| 久久久影院官网| 亚洲美女视频一区| 日本不卡的三区四区五区| 国产成人亚洲综合色影视| 91丨九色丨蝌蚪富婆spa| 欧美在线不卡一区| 精品乱人伦小说| 18欧美亚洲精品| 日本sm残虐另类| www.色精品| 337p亚洲精品色噜噜| 久久亚洲精华国产精华液| 国产精品进线69影院| 午夜伦理一区二区| 国产成人av福利| 欧美日韩1区2区| 国产精品网曝门| 三级不卡在线观看| 国产美女视频一区| 欧美性猛交xxxx黑人交| 久久综合色天天久久综合图片| 亚洲免费在线观看| 精品一区二区免费在线观看| 91在线云播放| 久久精品一区二区三区不卡| 亚洲国产欧美在线人成| 国产精品99久久久久久久vr| 欧美日韩在线观看一区二区| 久久亚洲捆绑美女| 99久久久久久| 久久久久久免费毛片精品| 亚洲国产成人高清精品| 国产成人av一区| 欧美tickle裸体挠脚心vk| 亚洲午夜成aⅴ人片| 国产高清视频一区| 日韩欧美一二区| 亚洲高清不卡在线| 99精品国产视频| 中文字幕精品—区二区四季| 美女网站色91| 欧美精品一二三区| 亚洲精品videosex极品| 国产传媒日韩欧美成人| 精品国产制服丝袜高跟| 午夜精品久久久久久久久久久| 99re热视频这里只精品| 国产精品污www在线观看| 国产伦精品一区二区三区免费| 欧美一区二区三区在线看| 亚洲电影视频在线| 欧美丝袜丝交足nylons| 夜夜精品浪潮av一区二区三区| 97超碰欧美中文字幕| 日韩一区中文字幕| av在线一区二区| 亚洲天堂网中文字| 91在线免费看| 中文字幕一区二区三区精华液| 国产自产高清不卡| 久久久久久久网| 国产乱码字幕精品高清av| 久久久不卡网国产精品二区| 精品一区二区av| 精品国产123|