structdh_st{BIGNUM*p;BIGNUM*g;longlength;/* optional */BIGNUM*pub_key;/* g^x */BIGNUM*priv_key;/* x */} 2)EVP封装中的密钥结构EVP_PKEY structevp_pkey_st{inttype;intsave_type;intreferences;constEVP_PKEY_ASN1_METHOD*ameth;ENGINE*engine;union{char*ptr;#ifndefOPENSSL_NO_RSAstructrsa_st...
2)EVP封装中的密钥结构EVP_PKEY struct evp_pkey_st { int type; int save_type; int references; const EVP_PKEY_ASN1_METHOD *ameth; ENGINE *engine; union { char *ptr; #ifndef OPENSSL_NO_RSA struct rsa_st *rsa; /* RSA */ #endif #ifndef OPENSSL_NO_DSA struct dsa_st *dsa; /* DSA ...
可以看出,这两个结构体与rsa的非常相似,为了不触动EVP_PKEY的优良结构,必然需要一个同样设计优良的ec_key_st结构体,这个结构体可以动态决定是使用ECDH_DATA还是使用ECDSA_DATA,也就是一个engine开关的作用,从设计的层面来理解ec_key_st的话,它的内容实际上就是ecdh和ecdsa公共的信息,根据ecc的原理,它们公共的信息...
constEVP_PKEY_ASN1_METHOD *ameth; ENGINE *engine; union{ char*ptr; #ifndef OPENSSL_NO_RSA structrsa_st *rsa;/* RSA */ #endif #ifndef OPENSSL_NO_DSA structdsa_st *dsa;/* DSA */ #endif #ifndef OPENSSL_NO_DH structdh_st *dh;/* DH */ #endif #ifndef OPENSSL_NO_EC structec_key...
EVP_PKEY *pk = NULL; stack_st_X509* chain = NULL; X509_EXTENSION *pex = NULL; if (!m_pX509) { return CERT_ERR_INVILIDCALL; } if (!pulType) { return CERT_ERR_INVALIDPARAM; } pk = X509_get_pubkey(m_pX509); if (!pk) ...
int CRYPTO_set_mem_debug(int onoff);int CRYPTO_mem_ctrl(int模式);int OPENSSL_mem_debug_push(...
struct evp_pkey_st { int type; int save_type; int references; union{ char *ptr; #ifndef OPENSSL_NO_RSA struct rsa_st *rsa; /* RSA */ #endif ... #ifndef OPENSSL_NO_EC struct ec_key_st *ec; /* ECC */ #endif } pkey; ...
int(*copy)(EVP_MD_CTX*to,constEVP_MD_CTX*from);int(*cleanup)(EVP_MD_CTX*ctx);intblock_size;intctx_size;/* how big does the ctx->md_data need to be *//* control function */int(*md_ctrl)(EVP_MD_CTX*ctx,intcmd,intp1,void*p2);}/* EVP_MD */;typedefstructevp_md_stEVP_...
EVP_PKEY structevp_pkey_st{inttype;intsave_type;intreferences;constEVP_PKEY_ASN1_METHOD*ameth;ENGINE*engine;union{char*ptr;#ifndefOPENSSL_NO_RSAstructrsa_st*rsa;/* RSA */#endif#ifndefOPENSSL_NO_DSAstructdsa_st*dsa;/* DSA */#endif#ifndefOPENSSL_NO_DHstructdh_st*dh;/* DH */#endif#if...
EVP_Cipher*...* 得以实现的一个基本结构是下面定义的一个算法结构,它定义了 E VP_Cipher 系列函数应该采用什么算法进行数据处理,其定义如下( evp.h ): typedef struct evp_cipher_st { int nid; int block_size; int key_len; int iv_len; unsigned long flags; int (*init)(EVP_CIPHER_CTX *ctx,...