EVP_PKEY_SM2
st = !((pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SM2, NULL)) == NULL
case EVP_PKEY_SM2:
if (EVP_PKEY_get_id(pkey) == EVP_PKEY_SM2) {
EVP_PKEY_SM2,
{ OSSL_ACTION_SET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN,
{ OSSL_ACTION_SET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN,
{ OSSL_ACTION_NONE, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_NONE, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_SET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_GET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_SET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_GET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_SET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
{ OSSL_ACTION_GET, EVP_PKEY_SM2, 0, EVP_PKEY_OP_DERIVE,
int keytype = nid == EVP_PKEY_SM2 ? EVP_PKEY_SM2 : EVP_PKEY_EC;
{ EVP_PKEY_SM2, "SM2" },
case EVP_PKEY_SM2:
if ((key != NULL) && (pktype == EVP_PKEY_EC || pktype == EVP_PKEY_SM2)) {
type = EVP_PKEY_SM2;
else if (curve != NID_sm2 && pktype == EVP_PKEY_SM2)
if (type == EVP_PKEY_EC || type == EVP_PKEY_SM2)
ret = ctx->desc->evp_type == EVP_PKEY_SM2
ret = ctx->desc->evp_type != EVP_PKEY_SM2;
#define sm2_evp_type EVP_PKEY_SM2
} else if (nid != NID_sm2 && as == EVP_PKEY_SM2) {
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey_neg))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
|| (as == EVP_PKEY_SM2 && !set_sm2_id(mctx, pkey))
return test_builtin(n, EVP_PKEY_SM2);