1、SM2实现( 利openssl的evp)加解密#include #include #include #include openssl/ec.h #include openssl/evp.h/* Main function return value:0: main function executes successfully-1: an error occurs*/ int main(void)int ret = -1, i;EVP_PKEY_CTX *pctx = NULL, *ectx = NULL; EVP_PKEY *p...
(sctx = EVP_PKEY_CTX_new(pkey, NULL)) ) { goto clean_up; } if ( EVP_PKEY_CTX_set1_id(sctx, sm2_id, sm2_id_len) <= 0 ) { goto clean_up; } EVP_MD_CTX_set_pkey_ctx(md_ctx, sctx); if ( (EVP_DigestSignInit(md_ctx, NULL, EVP_sm3(), NULL, pkey)) != 1 ) {...
{ int ret = 0; FILE *fp = NULL; EVP_PKEY* private_evp_key = NULL; RSA *rsa = NULL; BIO *bp = NULL; EVP_PKEY_CTX *ctx = NULL; EVP_MD_CTX *evp_md_ctx = NULL; /*Check the user input.*/ if (sign_rom == NULL || sign_rom_len == 0 || result == NULL || *result...
if ( (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, NID_sm2)) <= 0 ){ goto clean_up;} if ( (EVP_PKEY_keygen_init(pctx)) != 1 ){ goto clean_up;} if ( (EVP_PKEY_keygen(pctx, &pkey)) != 1 ){ goto clean_up;} /* print SM2 key pair */ if ( !(key_pair = EVP_...
(pkey->ameth->priv_decode != NULL) { if (!pkey->ameth->priv_decode(pkey, p8)) { ERR_raise(ERR_LIB_EVP, EVP_R_PRIVATE_KEY_DECODE_ERROR); goto error; } } else { ERR_raise(ERR_LIB_EVP, EVP_R_METHOD_NOT_SUPPORTED); goto error; } return pkey; error: EVP_PKEY_free(pkey...
i = ssl_cert_type(x, pkey);if(i <0) { SSLerr(SSL_F_SSL_SET_CERT, SSL_R_UNKNOWN_CERTIFICATE_TYPE);return0; }#ifndefOPENSSL_NO_ECif(i == SSL_PKEY_ECC && !EC_KEY_can_sign(EVP_PKEY_get0_EC_KEY(pkey))) { SSLerr(SSL_F_SSL_SET_CERT, SSL_R_ECC_CERT_NOT_FOR_SIGNING);retu...
{ int ret = 0; FILE *fp = NULL; EVP_PKEY* private_evp_key = NULL; RSA *rsa = NULL; BIO *bp = NULL; EVP_PKEY_CTX *ctx = NULL; EVP_MD_CTX *evp_md_ctx = NULL; /*Check the user input.*/ if (sign_rom == NULL || sign_rom_len == 0 || result == NULL || *result...
//来自国标官方的标准SM2数据,包括公私钥和sig签名,digest,加解密用的数据 //公钥q为 04(未压缩标志符号) + 64字节X + 64字节Y 总计130字节 char pkey_sexp[] = "(public-key (ecc (curve sm2p256v1) (q #0409F9DF311E5421A150DD7D161E4BC5C672179FAD1833FC076BB08FF356F35020CCEA490CE26775A52...
示例1: ec_pkey_ctrl ▲点赞 6▼ staticintec_pkey_ctrl(EVP_PKEY *pkey,intop,longarg1,void*arg2){switch(op) {caseASN1_PKEY_CTRL_PKCS7_SIGN:if(arg1 ==0) {intsnid, hnid; X509_ALGOR *alg1, *alg2; PKCS7_SIGNER_INFO_get0_algs(arg2,NULL, &alg1, &alg2);if(alg1 ==NULL|| al...
{ EVP_PKEY * pkey_t=NULL; //pkey_t=d2i_PublicKey(EVP_PKEY_SM2,NULL, &pub_str, len); pkey_t=d2i_PUBKEY(NULL, &pub_str, len);//导入 std::string error; if(pkey_t==NULL){ error=GetErrorStr(); errorL(error); return; } EVP_CUNSTOM *cst=new EVP_CUNSTOM{pkey_t}; m_pkey...