This mapping has 20 all-to-all groups: every node on one side corresponds to every node on the other, and none is deleted or inserted. Each member carries an all N:M badge; selecting one highlights all of its counterparts, in the tree and in the code view alike.

Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–92 unchanged (92 lines)
93
94static int pkcs7_bio_add_digest(BIO **pbio, X509_ALGOR *alg,
95 const PKCS7_CTX *ctx)
96{
97 BIO *btmp;
98 char name[OSSL_MAX_NAME_SIZE];
99 EVP_MD *fetched = NULL;
100 const EVP_MD *md;
101
102 if ((btmp = BIO_new(BIO_f_md())) == NULL) {
103 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
104 goto err;
105 }
106
107 OBJ_obj2txt(name, sizeof(name), alg->algorithm, 0);
108
109 (void)ERR_set_mark();
110 fetched = EVP_MD_fetch(ossl_pkcs7_ctx_get0_libctx(ctx), name,
111 ossl_pkcs7_ctx_get0_propq(ctx));
112 if (fetched != NULL)
113 md = fetched;
114 else
115 md = EVP_get_digestbyname(name);
116
117 if (md == NULL) {
118 (void)ERR_clear_last_mark();
119 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
120 goto err;
121 }
122 (void)ERR_pop_to_mark();
123
124 if (BIO_set_md(btmp, md) <= 0) {
125 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
126 EVP_MD_free(fetched);
127 goto err;
128 }
129 EVP_MD_free(fetched);
130 if (*pbio == NULL)
131 *pbio = btmp;
132 else if (!BIO_push(*pbio, btmp)) {
133 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
134 goto err;
135 }
…lines 136–436 unchanged (301 lines)
437BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
438{
439 int i, len;
440 BIO *out = NULL, *btmp = NULL, *etmp = NULL, *bio = NULL;
441 X509_ALGOR *xa;
442 ASN1_OCTET_STRING *data_body = NULL;
443 EVP_MD *evp_md = NULL;
444 const EVP_MD *md;
445 EVP_CIPHER *evp_cipher = NULL;
446 const EVP_CIPHER *cipher = NULL;
447 EVP_CIPHER_CTX *evp_ctx = NULL;
448 X509_ALGOR *enc_alg = NULL;
449 STACK_OF(X509_ALGOR) *md_sk = NULL;
450 STACK_OF(PKCS7_RECIP_INFO) *rsk = NULL;
451 PKCS7_RECIP_INFO *ri = NULL;
452 unsigned char *ek = NULL, *tkey = NULL;
…lines 453–493 unchanged (41 lines)
494 /* data_body is NULL if the optional EncryptedContent is missing. */
495 data_body = p7->d.signed_and_enveloped->enc_data->enc_data;
496 enc_alg = p7->d.signed_and_enveloped->enc_data->algorithm;
497
498 OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
499
500 (void)ERR_set_mark();
501 evp_cipher = EVP_CIPHER_fetch(libctx, name, propq);
502 if (evp_cipher != NULL)
503 cipher = evp_cipher;
504 else
505 cipher = EVP_get_cipherbyname(name);
506
507 if (cipher == NULL) {
508 (void)ERR_clear_last_mark();
509 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
510 goto err;
511 }
512 (void)ERR_pop_to_mark();
513 break;
514 case NID_pkcs7_enveloped:
515 rsk = p7->d.enveloped->recipientinfo;
516 enc_alg = p7->d.enveloped->enc_data->algorithm;
517 /* data_body is NULL if the optional EncryptedContent is missing. */
518 data_body = p7->d.enveloped->enc_data->enc_data;
519 OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
520
521 (void)ERR_set_mark();
522 evp_cipher = EVP_CIPHER_fetch(libctx, name, propq);
523 if (evp_cipher != NULL)
524 cipher = evp_cipher;
525 else
526 cipher = EVP_get_cipherbyname(name);
527
528 if (cipher == NULL) {
529 (void)ERR_clear_last_mark();
530 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
531 goto err;
532 }
533 (void)ERR_pop_to_mark();
534 break;
535 default:
536 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
537 goto err;
538 }
539
…lines 540–550 unchanged (11 lines)
551 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
552 goto err;
553 }
554
555 OBJ_obj2txt(name, sizeof(name), xa->algorithm, 0);
556
557 (void)ERR_set_mark();
558 evp_md = EVP_MD_fetch(libctx, name, propq);
559 if (evp_md != NULL)
560 md = evp_md;
561 else
562 md = EVP_get_digestbyname(name);
563
564 if (md == NULL) {
565 (void)ERR_clear_last_mark();
566 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
567 goto err;
568 }
569 (void)ERR_pop_to_mark();
570
571 if (BIO_set_md(btmp, md) <= 0) {
572 EVP_MD_free(evp_md);
573 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
574 goto err;
575 }
576 EVP_MD_free(evp_md);
577 if (out == NULL)
578 out = btmp;
579 else
580 BIO_push(out, btmp);
581 btmp = NULL;
582 }
…lines 583–699 unchanged (117 lines)
700 }
701 if (bio == NULL)
702 goto err;
703 }
704 BIO_push(out, bio);
705 bio = NULL;
706 EVP_CIPHER_free(evp_cipher);
707 return out;
708
709err:
710 EVP_CIPHER_free(evp_cipher);
711 OPENSSL_clear_free(ek, eklen);
712 OPENSSL_clear_free(tkey, tkeylen);
713 BIO_free_all(out);
714 BIO_free_all(btmp);
715 BIO_free_all(etmp);
716 BIO_free_all(bio);
…lines 717–1061 unchanged (345 lines)
1062
1063int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
1064 X509 *signer)
1065{
1066 ASN1_OCTET_STRING *os;
1067 EVP_MD_CTX *mdc_tmp, *mdc;
1068 const EVP_MD *md;
1069 EVP_MD *fetched_md = NULL;
1070 int ret = 0, i;
1071 int md_type;
1072 STACK_OF(X509_ATTRIBUTE) *sk;
1073 BIO *btmp;
1074 EVP_PKEY *pkey;
1075 unsigned char *abuf = NULL;
…lines 1076–1135 unchanged (60 lines)
1136 if ((message_digest->length != (int)md_len) || (memcmp(message_digest->data, md_dat, md_len))) {
1137 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_DIGEST_FAILURE);
1138 ret = -1;
1139 goto err;
1140 }
1141
1142 (void)ERR_set_mark();
1143 fetched_md = EVP_MD_fetch(libctx, OBJ_nid2sn(md_type), propq);
1144
1145 if (fetched_md != NULL)
1146 md = fetched_md;
1147 else
1148 md = EVP_get_digestbynid(md_type);
1149
1150 if (md == NULL || !EVP_VerifyInit_ex(mdc_tmp, md, NULL)) {
1151 (void)ERR_clear_last_mark();
1152 goto err;
1153 }
1154 (void)ERR_pop_to_mark();
1155
1156 alen = ASN1_item_i2d((ASN1_VALUE *)sk, &abuf,
1157 ASN1_ITEM_rptr(PKCS7_ATTR_VERIFY));
1158 if (alen <= 0 || abuf == NULL) {
1159 ERR_raise(ERR_LIB_PKCS7, ERR_R_ASN1_LIB);
1160 ret = -1;
…lines 1161–1177 unchanged (17 lines)
1178 goto err;
1179 }
1180 ret = 1;
1181err:
1182 OPENSSL_free(abuf);
1183 EVP_MD_CTX_free(mdc_tmp);
1184 EVP_MD_free(fetched_md);
1185 return ret;
1186}
1187
1188PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx)
1189{
1190 STACK_OF(PKCS7_RECIP_INFO) *rsk;
…lines 1191–1299 unchanged (109 lines)

After

…lines 1–92 unchanged (92 lines)
93
94static int pkcs7_bio_add_digest(BIO **pbio, X509_ALGOR *alg,
95 const PKCS7_CTX *ctx)
96{
97 BIO *btmp;
98 char name[OSSL_MAX_NAME_SIZE];
99 EVP_MD *md = NULL;
100
101 if ((btmp = BIO_new(BIO_f_md())) == NULL) {
102 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
103 goto err;
104 }
105
106 OBJ_obj2txt(name, sizeof(name), alg->algorithm, 0);
107
108 md = EVP_MD_fetch(ossl_pkcs7_ctx_get0_libctx(ctx), name,
109 ossl_pkcs7_ctx_get0_propq(ctx));
110
111 if (md == NULL) {
112 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
113 goto err;
114 }
115
116 if (BIO_set_md(btmp, md) <= 0) {
117 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
118 EVP_MD_free(md);
119 goto err;
120 }
121 EVP_MD_free(md);
122 if (*pbio == NULL)
123 *pbio = btmp;
124 else if (!BIO_push(*pbio, btmp)) {
125 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
126 goto err;
127 }
…lines 128–428 unchanged (301 lines)
429BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
430{
431 int i, len;
432 BIO *out = NULL, *btmp = NULL, *etmp = NULL, *bio = NULL;
433 X509_ALGOR *xa;
434 ASN1_OCTET_STRING *data_body = NULL;
435 EVP_MD *md = NULL;
436 EVP_CIPHER *cipher = NULL;
437 EVP_CIPHER_CTX *evp_ctx = NULL;
438 X509_ALGOR *enc_alg = NULL;
439 STACK_OF(X509_ALGOR) *md_sk = NULL;
440 STACK_OF(PKCS7_RECIP_INFO) *rsk = NULL;
441 PKCS7_RECIP_INFO *ri = NULL;
442 unsigned char *ek = NULL, *tkey = NULL;
…lines 443–482 unchanged (40 lines)
483 md_sk = p7->d.signed_and_enveloped->md_algs;
484 /* data_body is NULL if the optional EncryptedContent is missing. */
485 data_body = p7->d.signed_and_enveloped->enc_data->enc_data;
486 enc_alg = p7->d.signed_and_enveloped->enc_data->algorithm;
487
488 OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
489
490 cipher = EVP_CIPHER_fetch(libctx, name, propq);
491
492 if (cipher == NULL) {
493 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
494 goto err;
495 }
496 break;
497 case NID_pkcs7_enveloped:
498 rsk = p7->d.enveloped->recipientinfo;
499 enc_alg = p7->d.enveloped->enc_data->algorithm;
500 /* data_body is NULL if the optional EncryptedContent is missing. */
501 data_body = p7->d.enveloped->enc_data->enc_data;
502 OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
503
504 cipher = EVP_CIPHER_fetch(libctx, name, propq);
505
506 if (cipher == NULL) {
507 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
508 goto err;
509 }
510 break;
511 default:
512 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
513 goto err;
514 }
515
516 /* Detached content must be supplied via in_bio instead. */
…lines 517–525 unchanged (9 lines)
526 if ((btmp = BIO_new(BIO_f_md())) == NULL) {
527 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
528 goto err;
529 }
530
531 OBJ_obj2txt(name, sizeof(name), xa->algorithm, 0);
532
533 md = EVP_MD_fetch(libctx, name, propq);
534
535 if (md == NULL) {
536 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
537 goto err;
538 }
539
540 if (BIO_set_md(btmp, md) <= 0) {
541 EVP_MD_free(md);
542 ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
543 goto err;
544 }
545 EVP_MD_free(md);
546 if (out == NULL)
547 out = btmp;
548 else
549 BIO_push(out, btmp);
550 btmp = NULL;
551 }
…lines 552–668 unchanged (117 lines)
669 }
670 if (bio == NULL)
671 goto err;
672 }
673 BIO_push(out, bio);
674 bio = NULL;
675 EVP_CIPHER_free(cipher);
676 return out;
677
678err:
679 EVP_CIPHER_free(cipher);
680 OPENSSL_clear_free(ek, eklen);
681 OPENSSL_clear_free(tkey, tkeylen);
682 BIO_free_all(out);
683 BIO_free_all(btmp);
684 BIO_free_all(etmp);
685 BIO_free_all(bio);
…lines 686–1030 unchanged (345 lines)
1031
1032int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
1033 X509 *signer)
1034{
1035 ASN1_OCTET_STRING *os;
1036 EVP_MD_CTX *mdc_tmp, *mdc;
1037 EVP_MD *md = NULL;
1038 int ret = 0, i;
1039 int md_type;
1040 STACK_OF(X509_ATTRIBUTE) *sk;
1041 BIO *btmp;
1042 EVP_PKEY *pkey;
1043 unsigned char *abuf = NULL;
…lines 1044–1102 unchanged (59 lines)
1103 }
1104 if ((message_digest->length != (int)md_len) || (memcmp(message_digest->data, md_dat, md_len))) {
1105 ERR_raise(ERR_LIB_PKCS7, PKCS7_R_DIGEST_FAILURE);
1106 ret = -1;
1107 goto err;
1108 }
1109
1110 md = EVP_MD_fetch(libctx, OBJ_nid2sn(md_type), propq);
1111
1112 if (md == NULL || !EVP_VerifyInit_ex(mdc_tmp, md, NULL)) {
1113 goto err;
1114 }
1115
1116 alen = ASN1_item_i2d((ASN1_VALUE *)sk, &abuf,
1117 ASN1_ITEM_rptr(PKCS7_ATTR_VERIFY));
1118 if (alen <= 0 || abuf == NULL) {
1119 ERR_raise(ERR_LIB_PKCS7, ERR_R_ASN1_LIB);
1120 ret = -1;
1121 goto err;
…lines 1122–1137 unchanged (16 lines)
1138 goto err;
1139 }
1140 ret = 1;
1141err:
1142 OPENSSL_free(abuf);
1143 EVP_MD_CTX_free(mdc_tmp);
1144 EVP_MD_free(md);
1145 return ret;
1146}
1147
1148PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx)
1149{
1150 STACK_OF(PKCS7_RECIP_INFO) *rsk;
…lines 1151–1259 unchanged (109 lines)

Before

translation_unit
comment "/*\n * Copyright 1995-2025 The OpenSSL Project Authors. All R"...
preproc_include
#include "#include"
system_lib_string "<stdio.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/rand.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/objects.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/x509.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/x509v3.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/err.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/cryptlib.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/sizes.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "crypto/evp.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "pk7_local.h"
" "\""
declaration (+36 nodes collapsed)
declaration (+28 nodes collapsed)
function_definition (+92 nodes collapsed)
function_definition (+97 nodes collapsed)
function_definition (+355 nodes collapsed)
function_definition
storage_class_specifier
static "static"
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "btmp"
; ";"
declaration
primitive_type "char"
array_declarator
identifier "name"
[ "["
identifier "OSSL_MAX_NAME_SIZE"
] "]"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "fetched"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
type_identifier "EVP_MD"
pointer_declarator
* "*"
identifier "md"
; ";"
if_statement (+42 nodes collapsed)
expression_statement (+22 nodes collapsed)
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_set_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
assignment_expression
identifier "fetched"
= "="
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "ctx"
) ")"
, ","
identifier "name"
, ","
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "ctx"
) ")"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "fetched"
!= "!="
null
NULL "NULL"
) ")"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
identifier "fetched"
; ";"
else_clause
else "else"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_get_digestbyname"
argument_list
( "("
identifier "name"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_clear_last_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNKNOWN_DIGEST_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_pop_to_mark"
argument_list
( "("
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "BIO_set_md"
argument_list
( "("
identifier "btmp"
, ","
identifier "md"
) ")"
<= "<="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "ERR_R_BIO_LIB"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "fetched"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "fetched"
) ")"
; ";"
if_statement (+56 nodes collapsed)
expression_statement
assignment_expression
identifier "btmp"
= "="
null
NULL "NULL"
; ";"
return_statement
return "return"
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "btmp"
) ")"
; ";"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
function_definition (+309 nodes collapsed)
function_definition (+304 nodes collapsed)
function_definition (+1498 nodes collapsed)
function_definition (+83 nodes collapsed)
comment "/* int */"
function_definition
type_identifier "BIO"
pointer_declarator (+30 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "int"
identifier "i"
, ","
identifier "len"
; ";"
declaration (+34 nodes collapsed)
declaration
type_identifier "X509_ALGOR"
pointer_declarator
* "*"
identifier "xa"
; ";"
declaration
type_identifier "ASN1_OCTET_STRING"
init_declarator
pointer_declarator
* "*"
identifier "data_body"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "evp_md"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
type_identifier "EVP_MD"
pointer_declarator
* "*"
identifier "md"
; ";"
declaration
type_identifier "EVP_CIPHER"
init_declarator
pointer_declarator
* "*"
identifier "evp_cipher"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
type_identifier "EVP_CIPHER"
init_declarator
pointer_declarator
* "*"
identifier "cipher"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "EVP_CIPHER_CTX"
init_declarator
pointer_declarator
* "*"
identifier "evp_ctx"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "X509_ALGOR"
init_declarator
pointer_declarator
* "*"
identifier "enc_alg"
= "="
null
NULL "NULL"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "X509_ALGOR"
) ")"
* "*"
assignment_expression
identifier "md_sk"
= "="
null
NULL "NULL"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "PKCS7_RECIP_INFO"
) ")"
* "*"
assignment_expression
identifier "rsk"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "PKCS7_RECIP_INFO"
init_declarator
pointer_declarator
* "*"
identifier "ri"
= "="
null
NULL "NULL"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "ek"
= "="
null
NULL "NULL"
, ","
init_declarator
pointer_declarator
* "*"
identifier "tkey"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "eklen"
= "="
number_literal "0"
, ","
init_declarator
identifier "tkeylen"
= "="
number_literal "0"
; ";"
declaration
primitive_type "char"
array_declarator
identifier "name"
[ "["
identifier "OSSL_MAX_NAME_SIZE"
] "]"
; ";"
declaration
type_qualifier
const "const"
type_identifier "PKCS7_CTX"
pointer_declarator
* "*"
identifier "p7_ctx"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
pointer_declarator
* "*"
identifier "libctx"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
pointer_declarator
* "*"
identifier "propq"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
assignment_expression
identifier "p7_ctx"
= "="
call_expression
identifier "ossl_pkcs7_get0_ctx"
argument_list
( "("
identifier "p7"
) ")"
; ";"
expression_statement
assignment_expression
identifier "libctx"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "p7_ctx"
) ")"
; ";"
expression_statement
assignment_expression
identifier "propq"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "p7_ctx"
) ")"
; ";"
if_statement (+34 nodes collapsed)
expression_statement
assignment_expression
identifier "i"
= "="
call_expression
identifier "OBJ_obj2nid"
argument_list
( "("
field_expression
identifier "p7"
-> "->"
field_identifier "type"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
identifier "p7"
-> "->"
field_identifier "state"
= "="
identifier "PKCS7_S_HEADER"
; ";"
switch_statement
switch "switch"
parenthesized_expression
( "("
identifier "i"
) ")"
compound_statement
{ "{"
case_statement (+80 nodes collapsed)
case_statement
case "case"
identifier "NID_pkcs7_signedAndEnveloped"
: ":"
expression_statement
assignment_expression
identifier "rsk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "recipientinfo"
; ";"
expression_statement
assignment_expression
identifier "md_sk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "md_algs"
; ";"
comment "/* data_body is NULL if the optional EncryptedContent is mis"...
expression_statement
assignment_expression
identifier "data_body"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "enc_data"
; ";"
expression_statement
assignment_expression
identifier "enc_alg"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "algorithm"
; ";"
expression_statement (+22 nodes collapsed)
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_set_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
assignment_expression
identifier "evp_cipher"
= "="
call_expression
identifier "EVP_CIPHER_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "evp_cipher"
!= "!="
null
NULL "NULL"
) ")"
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
identifier "evp_cipher"
; ";"
else_clause
else "else"
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_get_cipherbyname"
argument_list
( "("
identifier "name"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "cipher"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_clear_last_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CIPHER_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_pop_to_mark"
argument_list
( "("
) ")"
; ";"
break_statement
break "break"
; ";"
case_statement
case "case"
identifier "NID_pkcs7_enveloped"
: ":"
expression_statement
assignment_expression
identifier "rsk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "recipientinfo"
; ";"
expression_statement
assignment_expression
identifier "enc_alg"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "algorithm"
; ";"
comment "/* data_body is NULL if the optional EncryptedContent is mis"...
expression_statement
assignment_expression
identifier "data_body"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "enc_data"
; ";"
expression_statement (+22 nodes collapsed)
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_set_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
assignment_expression
identifier "evp_cipher"
= "="
call_expression
identifier "EVP_CIPHER_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "evp_cipher"
!= "!="
null
NULL "NULL"
) ")"
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
identifier "evp_cipher"
; ";"
else_clause
else "else"
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_get_cipherbyname"
argument_list
( "("
identifier "name"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "cipher"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_clear_last_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CIPHER_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_pop_to_mark"
argument_list
( "("
) ")"
; ";"
break_statement
break "break"
; ";"
case_statement
default "default"
: ":"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CONTENT_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
comment "/* Detached content must be supplied via in_bio instead. */"
if_statement (+34 nodes collapsed)
comment "/* We will be checking the signature */"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md_sk"
!= "!="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
for_statement
for "for"
( "("
assignment_expression
identifier "i"
= "="
number_literal "0"
; ";"
binary_expression
identifier "i"
< "<"
call_expression
identifier "sk_X509_ALGOR_num"
argument_list
( "("
identifier "md_sk"
) ")"
; ";"
update_expression
identifier "i"
++ "++"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "xa"
= "="
call_expression
identifier "sk_X509_ALGOR_value"
argument_list
( "("
identifier "md_sk"
, ","
identifier "i"
) ")"
; ";"
if_statement (+42 nodes collapsed)
expression_statement (+22 nodes collapsed)
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_set_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
assignment_expression
identifier "evp_md"
= "="
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "evp_md"
!= "!="
null
NULL "NULL"
) ")"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
identifier "evp_md"
; ";"
else_clause
else "else"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_get_digestbyname"
argument_list
( "("
identifier "name"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_clear_last_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNKNOWN_DIGEST_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_pop_to_mark"
argument_list
( "("
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "BIO_set_md"
argument_list
( "("
identifier "btmp"
, ","
identifier "md"
) ")"
<= "<="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "evp_md"
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "ERR_R_BIO_LIB"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "evp_md"
) ")"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
assignment_expression
identifier "btmp"
= "="
null
NULL "NULL"
; ";"
} "}"
} "}"
if_statement (+673 nodes collapsed)
if_statement (+113 nodes collapsed)
expression_statement
call_expression
identifier "BIO_push"
argument_list
( "("
identifier "out"
, ","
identifier "bio"
) ")"
; ";"
expression_statement
assignment_expression
identifier "bio"
= "="
null
NULL "NULL"
; ";"
expression_statement
call_expression
identifier "EVP_CIPHER_free"
argument_list
( "("
identifier "evp_cipher"
) ")"
; ";"
return_statement
return "return"
identifier "out"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "EVP_CIPHER_free"
argument_list
( "("
identifier "evp_cipher"
) ")"
; ";"
expression_statement
call_expression
identifier "OPENSSL_clear_free"
argument_list
( "("
identifier "ek"
, ","
identifier "eklen"
) ")"
; ";"
expression_statement
call_expression
identifier "OPENSSL_clear_free"
argument_list
( "("
identifier "tkey"
, ","
identifier "tkeylen"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "out"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "btmp"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "etmp"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
function_definition (+157 nodes collapsed)
function_definition (+184 nodes collapsed)
function_definition (+1315 nodes collapsed)
function_definition (+414 nodes collapsed)
comment "/* This partly overlaps with PKCS7_verify(). It does not sup"...
function_definition (+426 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+28 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ASN1_OCTET_STRING"
pointer_declarator
* "*"
identifier "os"
; ";"
declaration
type_identifier "EVP_MD_CTX"
pointer_declarator
* "*"
identifier "mdc_tmp"
, ","
pointer_declarator
* "*"
identifier "mdc"
; ";"
declaration
type_qualifier
const "const"
type_identifier "EVP_MD"
pointer_declarator
* "*"
identifier "md"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "fetched_md"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "ret"
= "="
number_literal "0"
, ","
identifier "i"
; ";"
declaration
primitive_type "int"
identifier "md_type"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "X509_ATTRIBUTE"
) ")"
* "*"
identifier "sk"
; ";"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "btmp"
; ";"
declaration
type_identifier "EVP_PKEY"
pointer_declarator
* "*"
identifier "pkey"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "abuf"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
type_identifier "PKCS7_CTX"
init_declarator
pointer_declarator
* "*"
identifier "ctx"
= "="
call_expression
identifier "ossl_pkcs7_get0_ctx"
argument_list
( "("
identifier "p7"
) ")"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
init_declarator
pointer_declarator
* "*"
identifier "libctx"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "ctx"
) ")"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "propq"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "ctx"
) ")"
; ";"
expression_statement
assignment_expression
identifier "mdc_tmp"
= "="
call_expression
identifier "EVP_MD_CTX_new"
argument_list
( "("
) ")"
; ";"
if_statement (+27 nodes collapsed)
if_statement (+40 nodes collapsed)
expression_statement
assignment_expression
identifier "md_type"
= "="
call_expression
identifier "OBJ_obj2nid"
argument_list
( "("
field_expression
field_expression
identifier "si"
-> "->"
field_identifier "digest_alg"
-> "->"
field_identifier "algorithm"
) ")"
; ";"
expression_statement
assignment_expression
identifier "btmp"
= "="
identifier "bio"
; ";"
for_statement (+152 nodes collapsed)
comment "/*\n * mdc is the digest ctx that we want, unless there a"...
if_statement
if "if"
parenthesized_expression
( "("
unary_expression
! "!"
call_expression
identifier "EVP_MD_CTX_copy_ex"
argument_list
( "("
identifier "mdc_tmp"
, ","
identifier "mdc"
) ")"
) ")"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
expression_statement
assignment_expression
identifier "sk"
= "="
field_expression
identifier "si"
-> "->"
field_identifier "auth_attr"
; ";"
if_statement
if "if"
parenthesized_expression (+25 nodes collapsed)
compound_statement
{ "{"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
array_declarator
identifier "md_dat"
[ "["
identifier "EVP_MAX_MD_SIZE"
] "]"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "int"
identifier "md_len"
; ";"
declaration
primitive_type "int"
identifier "alen"
; ";"
declaration
type_identifier "ASN1_OCTET_STRING"
pointer_declarator
* "*"
identifier "message_digest"
; ";"
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
identifier "message_digest"
= "="
call_expression
identifier "PKCS7_digest_from_attributes"
argument_list
( "("
identifier "sk"
) ")"
; ";"
if_statement (+25 nodes collapsed)
if_statement (+61 nodes collapsed)
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_set_mark"
argument_list
( "("
) ")"
; ";"
expression_statement
assignment_expression
identifier "fetched_md"
= "="
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
identifier "libctx"
, ","
call_expression
identifier "OBJ_nid2sn"
argument_list
( "("
identifier "md_type"
) ")"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "fetched_md"
!= "!="
null
NULL "NULL"
) ")"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
identifier "fetched_md"
; ";"
else_clause
else "else"
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_get_digestbynid"
argument_list
( "("
identifier "md_type"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression (+23 nodes collapsed)
compound_statement
{ "{"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_clear_last_mark"
argument_list
( "("
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "ERR_pop_to_mark"
argument_list
( "("
) ")"
; ";"
expression_statement (+29 nodes collapsed)
if_statement (+39 nodes collapsed)
if_statement (+21 nodes collapsed)
} "}"
expression_statement
assignment_expression
identifier "os"
= "="
field_expression
identifier "si"
-> "->"
field_identifier "enc_digest"
; ";"
expression_statement
assignment_expression
identifier "pkey"
= "="
call_expression
identifier "X509_get0_pubkey"
argument_list
( "("
identifier "signer"
) ")"
; ";"
if_statement (+23 nodes collapsed)
expression_statement (+27 nodes collapsed)
if_statement (+32 nodes collapsed)
expression_statement
assignment_expression
identifier "ret"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OPENSSL_free"
argument_list
( "("
identifier "abuf"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_CTX_free"
argument_list
( "("
identifier "mdc_tmp"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "fetched_md"
) ")"
; ";"
return_statement
return "return"
identifier "ret"
; ";"
} "}"
function_definition (+160 nodes collapsed)
function_definition (+37 nodes collapsed)
function_definition (+37 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+83 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+52 nodes collapsed)
function_definition (+52 nodes collapsed)
function_definition (+282 nodes collapsed)

After

translation_unit
comment "/*\n * Copyright 1995-2025 The OpenSSL Project Authors. All R"...
preproc_include
#include "#include"
system_lib_string "<stdio.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/rand.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/objects.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/x509.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/x509v3.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/err.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/cryptlib.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/sizes.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "crypto/evp.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "pk7_local.h"
" "\""
declaration (+36 nodes collapsed)
declaration (+28 nodes collapsed)
function_definition (+92 nodes collapsed)
function_definition (+97 nodes collapsed)
function_definition (+355 nodes collapsed)
function_definition
storage_class_specifier
static "static"
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "btmp"
; ";"
declaration
primitive_type "char"
array_declarator
identifier "name"
[ "["
identifier "OSSL_MAX_NAME_SIZE"
] "]"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "md"
= "="
null
NULL "NULL"
; ";"
if_statement (+42 nodes collapsed)
expression_statement (+22 nodes collapsed)
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "ctx"
) ")"
, ","
identifier "name"
, ","
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "ctx"
) ")"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNKNOWN_DIGEST_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "BIO_set_md"
argument_list
( "("
identifier "btmp"
, ","
identifier "md"
) ")"
<= "<="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "ERR_R_BIO_LIB"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "md"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "md"
) ")"
; ";"
if_statement (+56 nodes collapsed)
expression_statement
assignment_expression
identifier "btmp"
= "="
null
NULL "NULL"
; ";"
return_statement
return "return"
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "btmp"
) ")"
; ";"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
function_definition (+309 nodes collapsed)
function_definition (+304 nodes collapsed)
function_definition (+1498 nodes collapsed)
function_definition (+83 nodes collapsed)
comment "/* int */"
function_definition
type_identifier "BIO"
pointer_declarator (+30 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "int"
identifier "i"
, ","
identifier "len"
; ";"
declaration (+34 nodes collapsed)
declaration
type_identifier "X509_ALGOR"
pointer_declarator
* "*"
identifier "xa"
; ";"
declaration
type_identifier "ASN1_OCTET_STRING"
init_declarator
pointer_declarator
* "*"
identifier "data_body"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "md"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "EVP_CIPHER"
init_declarator
pointer_declarator
* "*"
identifier "cipher"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "EVP_CIPHER_CTX"
init_declarator
pointer_declarator
* "*"
identifier "evp_ctx"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "X509_ALGOR"
init_declarator
pointer_declarator
* "*"
identifier "enc_alg"
= "="
null
NULL "NULL"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "X509_ALGOR"
) ")"
* "*"
assignment_expression
identifier "md_sk"
= "="
null
NULL "NULL"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "PKCS7_RECIP_INFO"
) ")"
* "*"
assignment_expression
identifier "rsk"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "PKCS7_RECIP_INFO"
init_declarator
pointer_declarator
* "*"
identifier "ri"
= "="
null
NULL "NULL"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "ek"
= "="
null
NULL "NULL"
, ","
init_declarator
pointer_declarator
* "*"
identifier "tkey"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "eklen"
= "="
number_literal "0"
, ","
init_declarator
identifier "tkeylen"
= "="
number_literal "0"
; ";"
declaration
primitive_type "char"
array_declarator
identifier "name"
[ "["
identifier "OSSL_MAX_NAME_SIZE"
] "]"
; ";"
declaration
type_qualifier
const "const"
type_identifier "PKCS7_CTX"
pointer_declarator
* "*"
identifier "p7_ctx"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
pointer_declarator
* "*"
identifier "libctx"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
pointer_declarator
* "*"
identifier "propq"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
assignment_expression
identifier "p7_ctx"
= "="
call_expression
identifier "ossl_pkcs7_get0_ctx"
argument_list
( "("
identifier "p7"
) ")"
; ";"
expression_statement
assignment_expression
identifier "libctx"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "p7_ctx"
) ")"
; ";"
expression_statement
assignment_expression
identifier "propq"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "p7_ctx"
) ")"
; ";"
if_statement (+34 nodes collapsed)
expression_statement
assignment_expression
identifier "i"
= "="
call_expression
identifier "OBJ_obj2nid"
argument_list
( "("
field_expression
identifier "p7"
-> "->"
field_identifier "type"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
identifier "p7"
-> "->"
field_identifier "state"
= "="
identifier "PKCS7_S_HEADER"
; ";"
switch_statement
switch "switch"
parenthesized_expression
( "("
identifier "i"
) ")"
compound_statement
{ "{"
case_statement (+80 nodes collapsed)
case_statement
case "case"
identifier "NID_pkcs7_signedAndEnveloped"
: ":"
expression_statement
assignment_expression
identifier "rsk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "recipientinfo"
; ";"
expression_statement
assignment_expression
identifier "md_sk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "md_algs"
; ";"
comment "/* data_body is NULL if the optional EncryptedContent is mis"...
expression_statement
assignment_expression
identifier "data_body"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "enc_data"
; ";"
expression_statement
assignment_expression
identifier "enc_alg"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "signed_and_enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "algorithm"
; ";"
expression_statement (+22 nodes collapsed)
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_CIPHER_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "cipher"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CIPHER_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
break_statement
break "break"
; ";"
case_statement
case "case"
identifier "NID_pkcs7_enveloped"
: ":"
expression_statement
assignment_expression
identifier "rsk"
= "="
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "recipientinfo"
; ";"
expression_statement
assignment_expression
identifier "enc_alg"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "algorithm"
; ";"
comment "/* data_body is NULL if the optional EncryptedContent is mis"...
expression_statement
assignment_expression
identifier "data_body"
= "="
field_expression
field_expression
field_expression
field_expression
identifier "p7"
-> "->"
field_identifier "d"
. "."
field_identifier "enveloped"
-> "->"
field_identifier "enc_data"
-> "->"
field_identifier "enc_data"
; ";"
expression_statement (+22 nodes collapsed)
expression_statement all 2:1
assignment_expression all 2:1
identifier "cipher" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_CIPHER_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "cipher"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CIPHER_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
break_statement
break "break"
; ";"
case_statement
default "default"
: ":"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNSUPPORTED_CONTENT_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
comment "/* Detached content must be supplied via in_bio instead. */"
if_statement (+34 nodes collapsed)
comment "/* We will be checking the signature */"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md_sk"
!= "!="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
for_statement
for "for"
( "("
assignment_expression
identifier "i"
= "="
number_literal "0"
; ";"
binary_expression
identifier "i"
< "<"
call_expression
identifier "sk_X509_ALGOR_num"
argument_list
( "("
identifier "md_sk"
) ")"
; ";"
update_expression
identifier "i"
++ "++"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "xa"
= "="
call_expression
identifier "sk_X509_ALGOR_value"
argument_list
( "("
identifier "md_sk"
, ","
identifier "i"
) ")"
; ";"
if_statement (+42 nodes collapsed)
expression_statement (+22 nodes collapsed)
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
identifier "libctx"
, ","
identifier "name"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "md"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "PKCS7_R_UNKNOWN_DIGEST_TYPE"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "BIO_set_md"
argument_list
( "("
identifier "btmp"
, ","
identifier "md"
) ")"
<= "<="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "md"
) ")"
; ";"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_PKCS7"
, ","
identifier "ERR_R_BIO_LIB"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "md"
) ")"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
assignment_expression
identifier "btmp"
= "="
null
NULL "NULL"
; ";"
} "}"
} "}"
if_statement (+673 nodes collapsed)
if_statement (+113 nodes collapsed)
expression_statement
call_expression
identifier "BIO_push"
argument_list
( "("
identifier "out"
, ","
identifier "bio"
) ")"
; ";"
expression_statement
assignment_expression
identifier "bio"
= "="
null
NULL "NULL"
; ";"
expression_statement
call_expression
identifier "EVP_CIPHER_free"
argument_list
( "("
identifier "cipher"
) ")"
; ";"
return_statement
return "return"
identifier "out"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "EVP_CIPHER_free"
argument_list
( "("
identifier "cipher"
) ")"
; ";"
expression_statement
call_expression
identifier "OPENSSL_clear_free"
argument_list
( "("
identifier "ek"
, ","
identifier "eklen"
) ")"
; ";"
expression_statement
call_expression
identifier "OPENSSL_clear_free"
argument_list
( "("
identifier "tkey"
, ","
identifier "tkeylen"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "out"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "btmp"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "etmp"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
function_definition (+157 nodes collapsed)
function_definition (+184 nodes collapsed)
function_definition (+1315 nodes collapsed)
function_definition (+414 nodes collapsed)
comment "/* This partly overlaps with PKCS7_verify(). It does not sup"...
function_definition (+426 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+28 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ASN1_OCTET_STRING"
pointer_declarator
* "*"
identifier "os"
; ";"
declaration
type_identifier "EVP_MD_CTX"
pointer_declarator
* "*"
identifier "mdc_tmp"
, ","
pointer_declarator
* "*"
identifier "mdc"
; ";"
declaration
type_identifier "EVP_MD"
init_declarator
pointer_declarator
* "*"
identifier "md"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "ret"
= "="
number_literal "0"
, ","
identifier "i"
; ";"
declaration
primitive_type "int"
identifier "md_type"
; ";"
expression_statement
binary_expression
call_expression
identifier "STACK_OF"
argument_list
( "("
identifier "X509_ATTRIBUTE"
) ")"
* "*"
identifier "sk"
; ";"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "btmp"
; ";"
declaration
type_identifier "EVP_PKEY"
pointer_declarator
* "*"
identifier "pkey"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "abuf"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
type_identifier "PKCS7_CTX"
init_declarator
pointer_declarator
* "*"
identifier "ctx"
= "="
call_expression
identifier "ossl_pkcs7_get0_ctx"
argument_list
( "("
identifier "p7"
) ")"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
init_declarator
pointer_declarator
* "*"
identifier "libctx"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_libctx"
argument_list
( "("
identifier "ctx"
) ")"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "propq"
= "="
call_expression
identifier "ossl_pkcs7_ctx_get0_propq"
argument_list
( "("
identifier "ctx"
) ")"
; ";"
expression_statement
assignment_expression
identifier "mdc_tmp"
= "="
call_expression
identifier "EVP_MD_CTX_new"
argument_list
( "("
) ")"
; ";"
if_statement (+27 nodes collapsed)
if_statement (+40 nodes collapsed)
expression_statement
assignment_expression
identifier "md_type"
= "="
call_expression
identifier "OBJ_obj2nid"
argument_list
( "("
field_expression
field_expression
identifier "si"
-> "->"
field_identifier "digest_alg"
-> "->"
field_identifier "algorithm"
) ")"
; ";"
expression_statement
assignment_expression
identifier "btmp"
= "="
identifier "bio"
; ";"
for_statement (+152 nodes collapsed)
comment "/*\n * mdc is the digest ctx that we want, unless there a"...
if_statement
if "if"
parenthesized_expression
( "("
unary_expression
! "!"
call_expression
identifier "EVP_MD_CTX_copy_ex"
argument_list
( "("
identifier "mdc_tmp"
, ","
identifier "mdc"
) ")"
) ")"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
expression_statement
assignment_expression
identifier "sk"
= "="
field_expression
identifier "si"
-> "->"
field_identifier "auth_attr"
; ";"
if_statement
if "if"
parenthesized_expression (+25 nodes collapsed)
compound_statement
{ "{"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "char"
array_declarator
identifier "md_dat"
[ "["
identifier "EVP_MAX_MD_SIZE"
] "]"
; ";"
declaration
sized_type_specifier
unsigned "unsigned"
primitive_type "int"
identifier "md_len"
; ";"
declaration
primitive_type "int"
identifier "alen"
; ";"
declaration
type_identifier "ASN1_OCTET_STRING"
pointer_declarator
* "*"
identifier "message_digest"
; ";"
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
identifier "message_digest"
= "="
call_expression
identifier "PKCS7_digest_from_attributes"
argument_list
( "("
identifier "sk"
) ")"
; ";"
if_statement (+25 nodes collapsed)
if_statement (+61 nodes collapsed)
expression_statement all 2:1
assignment_expression all 2:1
identifier "md" all 2:1
= "=" all 2:1
call_expression
identifier "EVP_MD_fetch"
argument_list
( "("
identifier "libctx"
, ","
call_expression
identifier "OBJ_nid2sn"
argument_list
( "("
identifier "md_type"
) ")"
, ","
identifier "propq"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression (+23 nodes collapsed)
compound_statement
{ "{"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement (+29 nodes collapsed)
if_statement (+39 nodes collapsed)
if_statement (+21 nodes collapsed)
} "}"
expression_statement
assignment_expression
identifier "os"
= "="
field_expression
identifier "si"
-> "->"
field_identifier "enc_digest"
; ";"
expression_statement
assignment_expression
identifier "pkey"
= "="
call_expression
identifier "X509_get0_pubkey"
argument_list
( "("
identifier "signer"
) ")"
; ";"
if_statement (+23 nodes collapsed)
expression_statement (+27 nodes collapsed)
if_statement (+32 nodes collapsed)
expression_statement
assignment_expression
identifier "ret"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OPENSSL_free"
argument_list
( "("
identifier "abuf"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_CTX_free"
argument_list
( "("
identifier "mdc_tmp"
) ")"
; ";"
expression_statement
call_expression
identifier "EVP_MD_free"
argument_list
( "("
identifier "md"
) ")"
; ";"
return_statement
return "return"
identifier "ret"
; ";"
} "}"
function_definition (+160 nodes collapsed)
function_definition (+37 nodes collapsed)
function_definition (+37 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+83 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+52 nodes collapsed)
function_definition (+52 nodes collapsed)
function_definition (+282 nodes collapsed)