- if (!EVP_DigestVerifyInit(ctx, NULL, type, NULL, pkey)) {
- X509err(X509_F_COMMON_VERIFY_SM2, ERR_R_EVP_LIB);
- ret = 0;
- goto err;
- }
-
- inl = ASN1_item_i2d(tbv, &buf_in,
- req == 1 ?
- ASN1_ITEM_rptr(X509_REQ_INFO) :
- ASN1_ITEM_rptr(X509_CINF));
- if (inl <= 0) {
- X509err(X509_F_COMMON_VERIFY_SM2, ERR_R_INTERNAL_ERROR);
- goto err;
- }
- if (buf_in == NULL) {
- X509err(X509_F_COMMON_VERIFY_SM2, ERR_R_MALLOC_FAILURE);
- goto err;
- }
- inll = inl;
-
- ret = EVP_DigestVerify(ctx, signature->data,
- (size_t)signature->length, buf_in, inl);
- if (ret <= 0) {
- X509err(X509_F_COMMON_VERIFY_SM2, ERR_R_EVP_LIB);
- goto err;
- }
- ret = 1;
- err:
- OPENSSL_clear_free(buf_in, inll);
- EVP_MD_CTX_free(ctx);