MCPcopy Create free account
hub / github.com/HumbleNet/HumbleNet / EVP_DigestSignAlgorithm

Function EVP_DigestSignAlgorithm

3rdparty/boringssl/crypto/evp/algorithm.c:69–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67
68
69int EVP_DigestSignAlgorithm(EVP_MD_CTX *ctx, X509_ALGOR *algor) {
70 const EVP_MD *digest;
71 EVP_PKEY *pkey;
72 int sign_nid, paramtype;
73
74 digest = EVP_MD_CTX_md(ctx);
75 pkey = EVP_PKEY_CTX_get0_pkey(ctx->pctx);
76 if (!digest || !pkey) {
77 OPENSSL_PUT_ERROR(EVP, EVP_R_CONTEXT_NOT_INITIALISED);
78 return 0;
79 }
80
81 if (pkey->ameth->digest_sign_algorithm) {
82 switch (pkey->ameth->digest_sign_algorithm(ctx, algor)) {
83 case EVP_DIGEST_SIGN_ALGORITHM_ERROR:
84 return 0;
85 case EVP_DIGEST_SIGN_ALGORITHM_SUCCESS:
86 return 1;
87 case EVP_DIGEST_SIGN_ALGORITHM_DEFAULT:
88 /* Use default behavior. */
89 break;
90 default:
91 assert(0);
92 }
93 }
94
95 /* Default behavior: look up the OID for the algorithm/hash pair and encode
96 * that. */
97 if (!OBJ_find_sigid_by_algs(&sign_nid, EVP_MD_type(digest),
98 pkey->ameth->pkey_id)) {
99 OPENSSL_PUT_ERROR(EVP, EVP_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED);
100 return 0;
101 }
102
103 if (pkey->ameth->pkey_flags & ASN1_PKEY_SIGPARAM_NULL) {
104 paramtype = V_ASN1_NULL;
105 } else {
106 paramtype = V_ASN1_UNDEF;
107 }
108
109 X509_ALGOR_set0(algor, OBJ_nid2obj(sign_nid), paramtype, NULL);
110 return 1;
111}
112
113int EVP_DigestVerifyInitFromAlgorithm(EVP_MD_CTX *ctx,
114 X509_ALGOR *algor,

Callers 2

TestAlgorithmRoundtripFunction · 0.85
ASN1_item_sign_ctxFunction · 0.85

Calls 5

EVP_MD_CTX_mdFunction · 0.85
EVP_PKEY_CTX_get0_pkeyFunction · 0.85
OBJ_find_sigid_by_algsFunction · 0.85
EVP_MD_typeFunction · 0.85
OBJ_nid2objFunction · 0.85

Tested by 1

TestAlgorithmRoundtripFunction · 0.68