2)EVP封装中的密钥结构EVP_PKEY structevp_pkey_st { inttype; intsave_type; intreferences; 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 OP...
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的原理,它们公共的信息...
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...
struct evp_pkey_st { int type; int save_type; CRYPTO_REF_COUNT references; const EVP_PKEY_ASN1_METHOD *ameth; ENGINE *engine; ENGINE *pmeth_engine; union { #ifndef OPENSSL_NO_RSA struct rsa_st *rsa; #endif struct dsa_st *dsa; ...
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 CRYPTO_set_mem_debug(int onoff);int CRYPTO_mem_ctrl(int模式);int OPENSSL_mem_debug_push(...
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_PKEY_CTX_new从EVP_PKEY* 值创建EVP_PKEY_CTX*。例如
EVP_PKEY *EVP_PKEY_new(void); void EVP_PKEY_free(EVP_PKEY *pkey); 这两个函数用于创建和释放PKEY上下文对象。 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); 为PKEY关联指定算法类型的上下文结构,如为RSA关联的宏定义如下: # define EVP_SignInit(a,b) EVP_DigestInit(a,b) # de...