68 #include "../internal.h"
69 #include "../x509/internal.h"
81 #ifdef OPENSSL_POLICY_DEBUG
94 for (
i = 0;
i < sk_ASN1_OBJECT_num(pset);
i++) {
95 oid = sk_ASN1_OBJECT_value(pset,
i);
118 for (plev = tree->
levels; plev != curr; plev++) {
121 for (
i = 0;
i < sk_X509_POLICY_NODE_num(plev->nodes);
i++) {
122 node = sk_X509_POLICY_NODE_value(plev->nodes,
i);
124 expected_print(
err, plev, node, 2);
136 # define tree_print(a,b,c)
174 explicit_policy =
n + 1;
194 for (
i =
n - 2;
i >= 0;
i--) {
210 else if ((
ret == 1) && !cache->data)
212 if (explicit_policy > 0) {
222 if (
ret == 2 && !explicit_policy)
237 tree->extra_data = NULL;
238 tree->auth_policies = NULL;
239 tree->user_policies = NULL;
259 for (
i =
n - 2;
i >= 0;
i--) {
320 for (
i = 0;
i < sk_X509_POLICY_NODE_num(last->nodes);
i++) {
321 node = sk_X509_POLICY_NODE_value(last->nodes,
i);
346 for (
i = 0;
i < sk_X509_POLICY_DATA_num(cache->data);
i++) {
347 data = sk_X509_POLICY_DATA_value(cache->data,
i);
418 if ((
size_t)node->
nchild == sk_ASN1_OBJECT_num(expset))
421 for (
i = 0;
i < sk_ASN1_OBJECT_num(expset);
i++) {
446 for (
i = 0;
i < sk_X509_POLICY_NODE_num(last->nodes);
i++) {
447 node = sk_X509_POLICY_NODE_value(last->nodes,
i);
502 for (
i = sk_X509_POLICY_NODE_num(nodes) - 1;
i >= 0;
i--) {
503 node = sk_X509_POLICY_NODE_value(nodes,
i);
508 (void)sk_X509_POLICY_NODE_delete(nodes,
i);
516 for (
i = sk_X509_POLICY_NODE_num(nodes) - 1;
i >= 0;
i--) {
517 node = sk_X509_POLICY_NODE_value(nodes,
i);
521 (void)sk_X509_POLICY_NODE_delete(nodes,
i);
530 if (curr == tree->
levels) {
548 sk_X509_POLICY_NODE_sort(*pnodes);
549 if (sk_X509_POLICY_NODE_find(*pnodes, NULL, pcy))
552 if (!sk_X509_POLICY_NODE_push(*pnodes, pcy))
585 addnodes = &tree->auth_policies;
596 for (j = 0; j < sk_X509_POLICY_NODE_num(curr->nodes); j++) {
597 node = sk_X509_POLICY_NODE_value(curr->nodes, j);
598 if ((node->
parent == anyptr)
604 if (addnodes == pnodes)
607 *pnodes = tree->auth_policies;
628 if (sk_ASN1_OBJECT_num(policy_oids) <= 0)
633 for (
i = 0;
i < sk_ASN1_OBJECT_num(policy_oids);
i++) {
634 oid = sk_ASN1_OBJECT_value(policy_oids,
i);
641 for (
i = 0;
i < sk_ASN1_OBJECT_num(policy_oids);
i++) {
642 oid = sk_ASN1_OBJECT_value(policy_oids,
i);
654 extra->qualifier_set = anyPolicy->
data->qualifier_set;
659 if (!tree->user_policies) {
660 tree->user_policies = sk_X509_POLICY_NODE_new_null();
661 if (!tree->user_policies)
664 if (!sk_X509_POLICY_NODE_push(tree->user_policies, node))
677 for (
i = 1;
i < tree->
nlevel;
i++, curr++) {
685 tree_print(
"before tree_prune()", tree, curr);
709 sk_X509_POLICY_NODE_free(tree->auth_policies);
710 sk_X509_POLICY_NODE_pop_free(tree->user_policies,
exnode_free);
712 for (
i = 0, curr = tree->
levels; i < tree->nlevel;
i++, curr++) {
721 if (tree->extra_data)
748 *pexplicit_policy = 0;
768 *pexplicit_policy = 1;
773 *pexplicit_policy = 1;
804 if (*pexplicit_policy)
820 sk_X509_POLICY_NODE_free(auth_nodes);
829 if (*pexplicit_policy) {
831 if (sk_X509_POLICY_NODE_num(nodes) <= 0)