} 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; /* D...
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; /* D...
copy——指向一个能够在两个EVP_MD_CTX结构之间拷贝參数值的函数 required_pkey_type——指向一个用来签名的算法EVP_PKEY的类型,如SHA算法就指向EVP_PKEY_RSA_method block_size——一个用来进行信息摘要的输入块的的长度(单位是字节)。如SHA算法就是SHA_CBLOCK ctx_size——是CTX结构的长度,在SHA算法里面应该就...
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*rsa;/* RSA */#endif#ifndefOPENSSL_NO_DSAstructdsa_st*dsa;/* DSA */#endif#ifndefOPENSSL_NO_DHstructdh_st*dh...
这样只需要实现引擎中注册的相关接口即可,例如前面通过ENGINE_set_pkey_meths接口设置的gmssl_engine_pkey接口。以Pkey接口为例,通过EVP_PKEY_meth_set_x接口完成PKEY方法的注册。这里也可以通过PKEY的子方法完成注册,例如ECC相关的EC_KEY_METHOD,OpenSSL speed速度测试中直接调用字方法完成,这样的好处是可以使用speed工...
key-loading - loading public and/or private EVP_PKEY keys 这里我只看了第一项:RSA_METHOD,在qat_engine中大概是这样绑定的: RSA_METHOD*qat_get_RSA_methods(void){…res&=RSA_meth_set_pub_enc(qat_rsa_method,qat_rsa_pub_enc);res&=RSA_meth_set_pub_dec(qat_rsa_method,qat_rsa_pub_dec);...
pkey_type——指向一个用来签名的算法EVP_PKEY的类型,如SHA算法就指向EVP_PKEY_RSA_method blocksize——一个用来进行信息摘要的输入块的的长度(单位是字节),如SHA算法就是SHA_CBLOCK ctxsize——是CTX结构的长度,在SHA算法里面应该就是sizeof(EVP_MD*)+sizeof(SHA_CTX) 如果要增加新的算法,那么可以定义...
/* method (ECDSA) specific part */ ENGINE *engine; int flags; const ECDSA_METHOD *meth; CRYPTO_EX_DATA ex_data; } ECDSA_DATA; 可以看出,这两个结构体与rsa的非常相似,为了不触动EVP_PKEY的优良结构,必然需要一个同样设计优良的ec_key_st结构体,这个结构体可以动态决定是使用ECDH_DATA还是使用ECDSA_...
== NULL) return -2; r = EC_POINT_cmp(group, pa, pb, NULL); if (r == 0) return 1; if (r == 1) return 0; return -2; /* <=== non allowed return value for EVP_PKEY_ASN1_METHOD pub_cmp() method */ } --- Reviewing the code is visible that method could return -2....