• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/openssl-0.9.8e/crypto/x509v3/

Lines Matching refs:tree

65 /* Initialize policy tree. Return values:
69 * 2 Policy tree is empty.
77 X509_POLICY_TREE *tree;
149 /* If we get this far initialize the tree */
151 tree = OPENSSL_malloc(sizeof(X509_POLICY_TREE));
153 if (!tree)
156 tree->flags = 0;
157 tree->levels = OPENSSL_malloc(sizeof(X509_POLICY_LEVEL) * n);
158 tree->nlevel = 0;
159 tree->extra_data = NULL;
160 tree->auth_policies = NULL;
161 tree->user_policies = NULL;
163 if (!tree)
165 OPENSSL_free(tree);
169 memset(tree->levels, 0, n * sizeof(X509_POLICY_LEVEL));
171 tree->nlevel = n;
173 level = tree->levels;
179 if (!data || !level_add_node(level, data, NULL, tree))
224 *ptree = tree;
233 X509_policy_tree_free(tree);
284 X509_POLICY_TREE *tree)
315 if (!level_add_node(curr, data, node, tree))
331 /* Prune the tree: delete any child mapped child data on the current level
332 * then proceed up the tree deleting any data with no children. If we ever
333 * have no data on a level we can halt because the tree will be empty.
336 static int tree_prune(X509_POLICY_TREE *tree, X509_POLICY_LEVEL *curr)
371 if (curr == tree->levels)
373 /* If we zapped anyPolicy at top then tree is empty */
403 /* Calculate the authority set based on policy tree.
412 static int tree_calculate_authority_set(X509_POLICY_TREE *tree,
419 curr = tree->levels + tree->nlevel - 1;
424 if (!tree_add_auth_node(&tree->auth_policies, curr->anyPolicy))
430 addnodes = &tree->auth_policies;
432 curr = tree->levels;
433 for (i = 1; i < tree->nlevel; i++)
453 *pnodes = tree->auth_policies;
458 static int tree_calculate_user_set(X509_POLICY_TREE *tree,
476 anyPolicy = tree->levels[tree->nlevel - 1].anyPolicy;
483 tree->flags |= POLICY_FLAG_ANY_POLICY;
507 tree);
509 if (!tree->user_policies)
511 tree->user_policies = sk_X509_POLICY_NODE_new_null();
512 if (!tree->user_policies)
515 if (!sk_X509_POLICY_NODE_push(tree->user_policies, node))
522 static int tree_evaluate(X509_POLICY_TREE *tree)
525 X509_POLICY_LEVEL *curr = tree->levels + 1;
528 for(i = 1; i < tree->nlevel; i++, curr++)
535 && !tree_link_any(curr, cache, tree))
537 ret = tree_prune(tree, curr);
553 void X509_policy_tree_free(X509_POLICY_TREE *tree)
558 if (!tree)
561 sk_X509_POLICY_NODE_free(tree->auth_policies);
562 sk_X509_POLICY_NODE_pop_free(tree->user_policies, exnode_free);
564 for(i = 0, curr = tree->levels; i < tree->nlevel; i++, curr++)
575 if (tree->extra_data)
576 sk_X509_POLICY_DATA_pop_free(tree->extra_data,
579 OPENSSL_free(tree->levels);
580 OPENSSL_free(tree);
598 X509_POLICY_TREE *tree = NULL;
603 ret = tree_init(&tree, certs, flags);
631 if (!tree)
633 * tree_init() returns success and a null tree
644 if (!tree) goto error;
645 ret = tree_evaluate(tree);
650 /* Return value 2 means tree empty */
653 X509_policy_tree_free(tree);
662 ret = tree_calculate_authority_set(tree, &auth_nodes);
667 if (!tree_calculate_user_set(tree, policy_oids, auth_nodes))
673 if (tree)
674 *ptree = tree;
678 nodes = X509_policy_tree_get0_user_policies(tree);
687 X509_policy_tree_free(tree);