📄 evp.h
字号:
#define EVP_PKEY_RSA_method EVP_PKEY_NULL_method#define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method#endif#endif /* !EVP_MD */struct env_md_ctx_st { const EVP_MD *digest; ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */ unsigned long flags; void *md_data; } /* EVP_MD_CTX */;/* values for EVP_MD_CTX flags */#define EVP_MD_CTX_FLAG_ONESHOT 0x0001 /* digest update will be called * once only */#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been * cleaned */#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data * in EVP_MD_CTX_cleanup */struct evp_cipher_st { int nid; int block_size; int key_len; /* Default value for variable length ciphers */ int iv_len; unsigned long flags; /* Various flags */ int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); /* init key */ int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl);/* encrypt/decrypt data */ int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */ int ctx_size; /* how big ctx->cipher_data needs to be */ int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */ int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Get parameters from a ASN1_TYPE */ int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr); /* Miscellaneous operations */ void *app_data; /* Application data */ } /* EVP_CIPHER */;/* Values for cipher flags *//* Modes for ciphers */#define EVP_CIPH_STREAM_CIPHER 0x0#define EVP_CIPH_ECB_MODE 0x1#define EVP_CIPH_CBC_MODE 0x2#define EVP_CIPH_CFB_MODE 0x3#define EVP_CIPH_OFB_MODE 0x4#define EVP_CIPH_MODE 0x7/* Set if variable length cipher */#define EVP_CIPH_VARIABLE_LENGTH 0x8/* Set if the iv handling should be done by the cipher itself */#define EVP_CIPH_CUSTOM_IV 0x10/* Set if the cipher's init() function should be called if key is NULL */#define EVP_CIPH_ALWAYS_CALL_INIT 0x20/* Call ctrl() to init cipher parameters */#define EVP_CIPH_CTRL_INIT 0x40/* Don't use standard key length function */#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80/* Don't use standard block padding */#define EVP_CIPH_NO_PADDING 0x100/* ctrl() values */#define EVP_CTRL_INIT 0x0#define EVP_CTRL_SET_KEY_LENGTH 0x1#define EVP_CTRL_GET_RC2_KEY_BITS 0x2#define EVP_CTRL_SET_RC2_KEY_BITS 0x3#define EVP_CTRL_GET_RC5_ROUNDS 0x4#define EVP_CTRL_SET_RC5_ROUNDS 0x5typedef struct evp_cipher_info_st { const EVP_CIPHER *cipher; unsigned char iv[EVP_MAX_IV_LENGTH]; } EVP_CIPHER_INFO;struct evp_cipher_ctx_st { const EVP_CIPHER *cipher; ENGINE *engine; /* functional reference if 'cipher' is ENGINE-provided */ int encrypt; /* encrypt or decrypt */ int buf_len; /* number we have left */ unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ unsigned char buf[EVP_MAX_BLOCK_LENGTH];/* saved partial block */ int num; /* used by cfb/ofb mode */ void *app_data; /* application stuff */ int key_len; /* May change for variable length cipher */ unsigned long flags; /* Various flags */ void *cipher_data; /* per EVP data */ int final_used; int block_mask; unsigned char final[EVP_MAX_BLOCK_LENGTH];/* possible final block */ } /* EVP_CIPHER_CTX */;typedef struct evp_Encode_Ctx_st { int num; /* number saved in a partial encode/decode */ int length; /* The length is either the output line length * (in input bytes) or the shortest input line * length that is ok. Once decoding begins, * the length is adjusted up each time a longer * line is decoded */ unsigned char enc_data[80]; /* data to encode */ int line_num; /* number read on current line */ int expect_nl; } EVP_ENCODE_CTX;/* Password based encryption function */typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, int en_de);#ifndef OPENSSL_NO_RSA#define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ (char *)(rsa))#endif#ifndef OPENSSL_NO_DSA#define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ (char *)(dsa))#endif#ifndef OPENSSL_NO_DH#define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ (char *)(dh))#endif/* Add some extra combinations */#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))#define EVP_MD_type(e) ((e)->type)#define EVP_MD_nid(e) EVP_MD_type(e)#define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))#define EVP_MD_pkey_type(e) ((e)->pkey_type)#define EVP_MD_size(e) ((e)->md_size)#define EVP_MD_block_size(e) ((e)->block_size)#define EVP_MD_CTX_md(e) ((e)->digest)#define EVP_MD_CTX_size(e) EVP_MD_size((e)->digest)#define EVP_MD_CTX_block_size(e) EVP_MD_block_size((e)->digest)#define EVP_MD_CTX_type(e) EVP_MD_type((e)->digest)#define EVP_CIPHER_nid(e) ((e)->nid)#define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))#define EVP_CIPHER_block_size(e) ((e)->block_size)#define EVP_CIPHER_key_length(e) ((e)->key_len)#define EVP_CIPHER_iv_length(e) ((e)->iv_len)#define EVP_CIPHER_flags(e) ((e)->flags)#define EVP_CIPHER_mode(e) (((e)->flags) & EVP_CIPH_MODE)#define EVP_CIPHER_CTX_cipher(e) ((e)->cipher)#define EVP_CIPHER_CTX_nid(e) ((e)->cipher->nid)#define EVP_CIPHER_CTX_block_size(e) ((e)->cipher->block_size)#define EVP_CIPHER_CTX_key_length(e) ((e)->key_len)#define EVP_CIPHER_CTX_iv_length(e) ((e)->cipher->iv_len)#define EVP_CIPHER_CTX_get_app_data(e) ((e)->app_data)#define EVP_CIPHER_CTX_set_app_data(e,d) ((e)->app_data=(char *)(d))#define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))#define EVP_CIPHER_CTX_flags(e) ((e)->cipher->flags)#define EVP_CIPHER_CTX_mode(e) ((e)->cipher->flags & EVP_CIPH_MODE)#define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)#define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)#define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)#define EVP_SignInit(a,b) EVP_DigestInit(a,b)#define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)#define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)#define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)#define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)#define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)#define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) #ifdef CONST_STRICTvoid BIO_set_md(BIO *,const EVP_MD *md);#else# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md)#endif#define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)#define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)#define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)#define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)#define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)#define EVP_Cipher(c,o,i,l) (c)->cipher->do_cipher((c),(o),(i),(l))#define EVP_add_cipher_alias(n,alias) \ OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))#define EVP_add_digest_alias(n,alias) \ OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))#define EVP_delete_cipher_alias(alias) \ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);#define EVP_delete_digest_alias(alias) \ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);void EVP_MD_CTX_init(EVP_MD_CTX *ctx);int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);EVP_MD_CTX *EVP_MD_CTX_create(void);void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in); #define EVP_MD_CTX_set_flags(ctx,flgs) ((ctx)->flags|=(flgs))#define EVP_MD_CTX_clear_flags(ctx,flgs) ((ctx)->flags&=~(flgs))#define EVP_MD_CTX_test_flags(ctx,flgs) ((ctx)->flags&(flgs))int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);int EVP_DigestUpdate(EVP_MD_CTX *ctx,const void *d, unsigned int cnt);int EVP_DigestFinal_ex(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);int EVP_Digest(void *data, unsigned int count, unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl);int EVP_MD_CTX_copy(EVP_MD_CTX *out,const EVP_MD_CTX *in); int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify);void EVP_set_pw_prompt(char *prompt);char * EVP_get_pw_prompt(void);int EVP_BytesToKey(const EVP_CIPHER *type,const EVP_MD *md, const unsigned char *salt, const unsigned char *data, int datal, int count, unsigned char *key,unsigned char *iv);int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv);int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv);int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl);int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);int EVP_DecryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv);int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv);int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl);int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);int EVP_CipherInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, const unsigned char *key,const unsigned char *iv, int enc);int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key,const unsigned char *iv, int enc);int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl);int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s, EVP_PKEY *pkey);int EVP_VerifyFinal(EVP_MD_CTX *ctx,unsigned char *sigbuf, unsigned int siglen,EVP_PKEY *pkey);int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,unsigned char *ek, int ekl,unsigned char *iv,EVP_PKEY *priv);int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, unsigned char **ek, int *ekl, unsigned char *iv,EVP_PKEY **pubk, int npubk);int EVP_SealFinal(EVP_CIPHER_CTX *ctx,unsigned char *out,int *outl);void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out, int *outl,unsigned char *in,int inl);void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl);int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl, unsigned char *in, int inl);int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);#ifndef OPENSSL_NO_BIOBIO_METHOD *BIO_f_md(void);BIO_METHOD *BIO_f_base64(void);BIO_METHOD *BIO_f_cipher(void);BIO_METHOD *BIO_f_reliable(void);void BIO_set_cipher(BIO *b,const EVP_CIPHER *c,unsigned char *k, unsigned char *i, int enc);#endifconst EVP_MD *EVP_md_null(void);#ifndef OPENSSL_NO_MD2const EVP_MD *EVP_md2(void);#endif#ifndef OPENSSL_NO_MD4const EVP_MD *EVP_md4(void);#endif#ifndef OPENSSL_NO_MD5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -