{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1751860524,
"reponame":"openssl",
"desc":"OpenSSL",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/openssl",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"862af22fad4a6fba9f73b985b1e83a74",
"commit": {"type":"commit",
"time": 1536315146,
"time_ofs": 480,
"oid_tree": { "oid": "b8373ba17b5d293a7e9c81743e33f8a763a97c53", "alias": []},
"oid":{ "oid": "0a8fdef7523ae796ca2e734c279791737148c001", "alias": []},
"msg": "Support pmeth-\u003edigest_custom",
"sig_commit": { "git_time": { "time": 1536315146, "offset": 480 }, "name": "Paul Yang", "email": "yang.yang@baishancloud.com", "md5": "21658b9db5c2c2b63c611cc4f90667d0" },
"sig_author": { "git_time": { "time": 1535993464, "offset": 480 }, "name": "Paul Yang", "email": "yang.yang@baishancloud.com", "md5": "21658b9db5c2c2b63c611cc4f90667d0" }},
"body": "Support pmeth-\u003edigest_custom\n\nReviewed-by: Tim Hudson \u003ctjh@openssl.org\u003e\nReviewed-by: Matt Caswell \u003cmatt@openssl.org\u003e\n(Merged from https://github.com/openssl/openssl/pull/7113)\n"
,
"diff": "diff --git a/crypto/evp/m_sigver.c b/crypto/evp/m_sigver.c\nindex 2377944..4a0e5d5 100644\n--- a/crypto/evp/m_sigver.c\n+++ b/crypto/evp/m_sigver.c\n@@ -75,6 +75,14 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,\n return 1;\n if (!EVP_DigestInit_ex(ctx, type, e))\n return 0;\n+ if (ctx-\u003epctx-\u003epmeth-\u003eflags \u0026 EVP_PKEY_FLAG_DIGEST_CUSTOM) {\n+ /*\n+ * This indicates the current algorithm requires\n+ * special treatment before hashing the tbs-message.\n+ */\n+ if (ctx-\u003epctx-\u003epmeth-\u003edigest_custom)\n+ return ctx-\u003epctx-\u003epmeth-\u003edigest_custom(ctx-\u003epctx, ctx);\n+ }\n return 1;\n }\n \ndiff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c\nindex ef923fd..7e6388e 100644\n--- a/crypto/evp/pmeth_lib.c\n+++ b/crypto/evp/pmeth_lib.c\n@@ -655,6 +655,13 @@ void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth,\n pmeth-\u003eparam_check \u003d check;\n }\n \n+void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth,\n+ int (*digest_custom) (EVP_PKEY_CTX *ctx,\n+ EVP_MD_CTX *mctx))\n+{\n+ pmeth-\u003edigest_custom \u003d digest_custom;\n+}\n+\n void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth,\n int (**pinit) (EVP_PKEY_CTX *ctx))\n {\n@@ -842,3 +849,11 @@ void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth,\n if (*pcheck)\n *pcheck \u003d pmeth-\u003eparam_check;\n }\n+\n+void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth,\n+ int (**pdigest_custom) (EVP_PKEY_CTX *ctx,\n+ EVP_MD_CTX *mctx))\n+{\n+ if (*pdigest_custom)\n+ *pdigest_custom \u003d pmeth-\u003edigest_custom;\n+}\ndiff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h\nindex daf2e45..3264b3d 100644\n--- a/crypto/include/internal/evp_int.h\n+++ b/crypto/include/internal/evp_int.h\n@@ -79,6 +79,8 @@ struct evp_pkey_method_st {\n int (*check) (EVP_PKEY *pkey);\n int (*public_check) (EVP_PKEY *pkey);\n int (*param_check) (EVP_PKEY *pkey);\n+\n+ int (*digest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx);\n } /* EVP_PKEY_METHOD */ ;\n \n DEFINE_STACK_OF_CONST(EVP_PKEY_METHOD)\ndiff --git a/include/openssl/evp.h b/include/openssl/evp.h\nindex d72c210..b7c0243 100644\n--- a/include/openssl/evp.h\n+++ b/include/openssl/evp.h\n@@ -1325,6 +1325,8 @@ void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth,\n * Method handles all operations: don't assume any digest related defaults.\n */\n # define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4\n+/* Do a customized hashing process */\n+# define EVP_PKEY_FLAG_DIGEST_CUSTOM 8\n \n const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);\n EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags);\n@@ -1523,6 +1525,10 @@ void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth,\n void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth,\n int (*check) (EVP_PKEY *pkey));\n \n+void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth,\n+ int (*digest_custom) (EVP_PKEY_CTX *ctx,\n+ EVP_MD_CTX *mctx));\n+\n void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth,\n int (**pinit) (EVP_PKEY_CTX *ctx));\n \n@@ -1624,6 +1630,9 @@ void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth,\n void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth,\n int (**pcheck) (EVP_PKEY *pkey));\n \n+void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth,\n+ int (**pdigest_custom) (EVP_PKEY_CTX *ctx,\n+ EVP_MD_CTX *mctx));\n void EVP_add_alg_module(void);\n \n \ndiff --git a/util/libcrypto.num b/util/libcrypto.num\nindex c6c881f..c4460c9 100644\n--- a/util/libcrypto.num\n+++ b/util/libcrypto.num\n@@ -4575,3 +4575,5 @@ EC_GROUP_get_curve 4528\t1_1_1\tEXIST::FUNCTION:EC\n OCSP_resp_get0_tbs_sigalg 4529\t1_1_0j\tEXIST::FUNCTION:OCSP\n OCSP_resp_get0_respdata 4530\t1_1_0j\tEXIST::FUNCTION:OCSP\n EVP_MD_CTX_set_pkey_ctx 4531\t1_1_1\tEXIST::FUNCTION:\n+EVP_PKEY_meth_set_digest_custom 4532\t1_1_1\tEXIST::FUNCTION:\n+EVP_PKEY_meth_get_digest_custom 4533\t1_1_1\tEXIST::FUNCTION:\n","s":{"c":1751860524,"u": 46845}}
],"g": 47826,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}