📄 hw_zencod.h
字号:
/* File : /crypto/engine/vendor_defns/hw_zencod.h *//* ==================================================================== * Written by Donnat Frederic (frederic.donnat@zencod.com) from ZENCOD * for "zencod" ENGINE integration in OpenSSL project. */ #ifndef _HW_ZENCOD_H_#define _HW_ZENCOD_H_#include <stdio.h>#ifdef __cplusplusextern "C" {#endif /* __cplusplus */#define ZENBRIDGE_MAX_KEYSIZE_RSA 2048#define ZENBRIDGE_MAX_KEYSIZE_RSA_CRT 1024#define ZENBRIDGE_MAX_KEYSIZE_DSA_SIGN 1024#define ZENBRIDGE_MAX_KEYSIZE_DSA_VRFY 1024/* Library version computation */#define ZENBRIDGE_VERSION_MAJOR(x) (((x) >> 16) | 0xff)#define ZENBRIDGE_VERSION_MINOR(x) (((x) >> 8) | 0xff)#define ZENBRIDGE_VERSION_PATCH(x) (((x) >> 0) | 0xff)#define ZENBRIDGE_VERSION(x, y, z) ((x) << 16 | (y) << 8 | (z))/* * Memory type */typedef struct zencod_number_s { unsigned long len; unsigned char *data;} zen_nb_t;#define KEY zen_nb_t/* * Misc */typedef int t_zencod_lib_version (void);typedef int t_zencod_hw_version (void);typedef int t_zencod_test (void);typedef int t_zencod_dump_key (FILE *stream, char *msg, KEY *key);/* * Key management tools */typedef KEY *t_zencod_new_number (unsigned long len, unsigned char *data);typedef int t_zencod_init_number (KEY *n, unsigned long len, unsigned char *data);typedef unsigned long t_zencod_bytes2bits (unsigned char *n, unsigned long bytes);typedef unsigned long t_zencod_bits2bytes (unsigned long bits);/* * RSA API *//* Compute modular exponential : y = x**e | n */typedef int t_zencod_rsa_mod_exp (KEY *y, KEY *x, KEY *n, KEY *e);/* Compute modular exponential : y1 = (x | p)**edp | p, y2 = (x | p)**edp | p, y = y2 + (qinv * (y1 - y2) | p) * q */typedef int t_zencod_rsa_mod_exp_crt (KEY *y, KEY *x, KEY *p, KEY *q, KEY *edp, KEY *edq, KEY *qinv);/* * DSA API */typedef int t_zencod_dsa_do_sign (unsigned int hash, KEY *data, KEY *random, KEY *p, KEY *q, KEY *g, KEY *x, KEY *r, KEY *s);typedef int t_zencod_dsa_do_verify (unsigned int hash, KEY *data, KEY *p, KEY *q, KEY *g, KEY *y, KEY *r, KEY *s, KEY *v);/* * DH API */ /* Key generation : compute public value y = g**x | n */typedef int t_zencod_dh_generate_key (KEY *y, KEY *x, KEY *g, KEY *n, int gen_x);typedef int t_zencod_dh_compute_key (KEY *k, KEY *y, KEY *x, KEY *n);/* * RNG API */#define ZENBRIDGE_RNG_DIRECT 0#define ZENBRIDGE_RNG_SHA1 1typedef int t_zencod_rand_bytes (KEY *rand, unsigned int flags);/* * Math API */typedef int t_zencod_math_mod_exp (KEY *r, KEY *a, KEY *e, KEY *n);/* * Symetric API *//* Define a data structure for digests operations */typedef struct ZEN_data_st{ unsigned int HashBufferSize ; unsigned char *HashBuffer ;} ZEN_MD_DATA ;/* * Functions for Digest (MD5, SHA1) stuff *//* output : output data buffer *//* input : input data buffer *//* algo : hash algorithm, MD5 or SHA1 *//* typedef int t_zencod_hash ( KEY *output, const KEY *input, int algo ) ; * typedef int t_zencod_sha_hash ( KEY *output, const KEY *input, int algo ) ; *//* For now separate this stuff that mad it easier to test */typedef int t_zencod_md5_init ( ZEN_MD_DATA *data ) ;typedef int t_zencod_md5_update ( ZEN_MD_DATA *data, const KEY *input ) ;typedef int t_zencod_md5_do_final ( ZEN_MD_DATA *data, KEY *output ) ;typedef int t_zencod_sha1_init ( ZEN_MD_DATA *data ) ;typedef int t_zencod_sha1_update ( ZEN_MD_DATA *data, const KEY *input ) ;typedef int t_zencod_sha1_do_final ( ZEN_MD_DATA *data, KEY *output ) ;/* * Functions for Cipher (RC4, DES, 3DES) stuff *//* output : output data buffer *//* input : input data buffer *//* key : rc4 key data *//* index_1 : value of index x from RC4 key structure *//* index_2 : value of index y from RC4 key structure *//* Be carefull : RC4 key should be expanded before calling this method (Should we provide an expand function ??) */typedef int t_zencod_rc4_cipher ( KEY *output, const KEY *input, const KEY *key, unsigned char *index_1, unsigned char *index_2, int mode ) ;/* output : output data buffer *//* input : input data buffer *//* key_1 : des first key data *//* key_2 : des second key data *//* key_3 : des third key data *//* iv : initial vector *//* mode : xdes mode (encrypt or decrypt) *//* Be carefull : In DES mode key_1 = key_2 = key_3 (as far as i can see !!) */typedef int t_zencod_xdes_cipher ( KEY *output, const KEY *input, const KEY *key_1, const KEY *key_2, const KEY *key_3, const KEY *iv, int mode ) ;#undef KEY#ifdef __cplusplus}#endif /* __cplusplus */#endif /* !_HW_ZENCOD_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -