+static int key_disabled(EVP_PKEY *pkey)
+{
+#if defined(OPENSSL_NO_SM2) && !defined(OPENSSL_NO_EC)
+ int type = EVP_PKEY_base_id(pkey);
+
+ if (type == EVP_PKEY_EC) {
+ EC_KEY *ec = EVP_PKEY_get0_EC_KEY(pkey);
+ int nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec));
+
+ if (nid == NID_sm2)
+ return 1;
+ }
+#endif /* OPENSSL_NO_SM2 */
+
+ return 0;
+}
+