static int pkey_ec_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen) { EC_PKEY_CTX *dctx = ctx->data; EC_KEY *ec_key = ctx->pkey->pkey.ec; switch (dctx->ec_scheme) { case NID_sm_scheme: if (!SM2_decrypt(dctx->ec_encrypt_param, in, inlen, out, outlen, ec_key)) { ECerr(EC_F_PKEY_EC_DECRYPT, EC_R_SM2_DECRYPT_FAILED); return 0; } break; case NID_secg_scheme: if (!ECIES_decrypt(dctx->ec_encrypt_param, in, inlen, out, outlen, ec_key)) { ECerr(EC_F_PKEY_EC_DECRYPT, EC_R_ECIES_DECRYPT_FAILED); return 0; } break; default: ECerr(EC_F_PKEY_EC_DECRYPT, EC_R_INVALID_ENC_TYPE); return 0; } return 1; }
static int pkey_ec_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen) { EC_KEY *ec_key = ctx->pkey->pkey.ec; ECIES_PARAMS *param = ECIES_get_parameters(ec_key); fprintf(stderr, "%s %s %d\n", __FUNCTION__, __FILE__, __LINE__); return ECIES_decrypt(out, outlen, param, in, inlen, ec_key); }