Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/security/nss/cmd/libpkix/pkix/results/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 23 kB image not shown  

Quelle  test_policynode.c   Sprache: C

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/*
 * test_policynode.c
 *
 * Test PolicyNode Type
 *
 */


#include "testutil.h"
#include "testutil_nss.h"

static void *plContext = NULL;

static void
test_GetChildren(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode)
{

    /*
     * Caution: be careful where you insert this test. PKIX_PolicyNode_GetChildren
     * is required by the API to return an immutable List, and it does it by setting
     * the List immutable. We don't make a copy because the assumption is that
     * certificate and policy processing have been completed before the user gets at
     * the public API. So subsequent tests of functions that modify the policy tree,
     * such as Prune, will fail if called after the execution of this test.
     */


    PKIX_Boolean isImmutable = PKIX_FALSE;
    PKIX_List *goodList = NULL;
    PKIX_List *equalList = NULL;
    PKIX_List *diffList = NULL;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetChildren");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetChildren(goodNode, &goodList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetChildren(equalNode, &equalList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetChildren(diffNode, &diffList, plContext));

    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodList, equalList, diffList, NULL, List, NULL);

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_IsImmutable(goodList, &isImmutable, plContext));

    if (isImmutable != PKIX_TRUE) {
        testError("PKIX_PolicyNode_GetChildren returned a mutable List");
    }

cleanup:
    PKIX_TEST_DECREF_AC(goodList);
    PKIX_TEST_DECREF_AC(equalList);
    PKIX_TEST_DECREF_AC(diffList);

    PKIX_TEST_RETURN();
}

static void
test_GetParent(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode,
    char *expectedAscii)
{
    PKIX_PolicyNode *goodParent = NULL;
    PKIX_PolicyNode *equalParent = NULL;
    PKIX_PolicyNode *diffParent = NULL;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetParent");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetParent(goodNode, &goodParent, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetParent(equalNode, &equalParent, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetParent(diffNode, &diffParent, plContext));

    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodParent,
                                equalParent,
                                diffParent,
                                expectedAscii,
                                CertPolicyNode,
                                NULL);

cleanup:
    PKIX_TEST_DECREF_AC(goodParent);
    PKIX_TEST_DECREF_AC(equalParent);
    PKIX_TEST_DECREF_AC(diffParent);

    PKIX_TEST_RETURN();
}

/*
 * This test is the same as testDuplicateHelper, except that it
 * produces a more useful "Actual value" and "Expected value"
 * in the case of an unexpected mismatch.
 */

static void
test_DuplicateHelper(PKIX_PolicyNode *object, void *plContext)
{
    PKIX_PolicyNode *newObject = NULL;
    PKIX_Boolean cmpResult;
    PKIX_PL_String *original = NULL;
    PKIX_PL_String *copy = NULL;

    PKIX_TEST_STD_VARS();

    subTest("testing pkix_PolicyNode_Duplicate");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Duplicate((PKIX_PL_Object *)object,
                                                       (PKIX_PL_Object **)&newObject,
                                                       plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)object,
                                                    (PKIX_PL_Object *)newObject,
                                                    &cmpResult,
                                                    plContext));

    if (!cmpResult) {
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object *)object, &original, plContext));
        testError("unexpected mismatch");
        (void)printf("original value:\t%s\n", original->escAsciiString);

        if (newObject) {
            PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object *)newObject, ©, plContext));
            (void)printf("copy value:\t%s\n", copy->escAsciiString);
        } else {
            (void)printf("copy value:\t(NULL)\n");
        }
    }

cleanup:

    PKIX_TEST_DECREF_AC(newObject);
    PKIX_TEST_DECREF_AC(original);
    PKIX_TEST_DECREF_AC(copy);

    PKIX_TEST_RETURN();
}

static void
test_GetValidPolicy(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode,
    char *expectedAscii)
{
    PKIX_PL_OID *goodPolicy = NULL;
    PKIX_PL_OID *equalPolicy = NULL;
    PKIX_PL_OID *diffPolicy = NULL;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetValidPolicy");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetValidPolicy(goodNode, &goodPolicy, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetValidPolicy(equalNode, &equalPolicy, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetValidPolicy(diffNode, &diffPolicy, plContext));

    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodPolicy, equalPolicy, diffPolicy, expectedAscii, OID, NULL);

cleanup:
    PKIX_TEST_DECREF_AC(goodPolicy);
    PKIX_TEST_DECREF_AC(equalPolicy);
    PKIX_TEST_DECREF_AC(diffPolicy);

    PKIX_TEST_RETURN();
}

static void
test_GetPolicyQualifiers(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode,
    char *expectedAscii)
{
    PKIX_Boolean isImmutable = PKIX_FALSE;
    PKIX_List *goodList = NULL;
    PKIX_List *equalList = NULL;
    PKIX_List *diffList = NULL;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetPolicyQualifiers");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetPolicyQualifiers(goodNode, &goodList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetPolicyQualifiers(equalNode, &equalList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetPolicyQualifiers(diffNode, &diffList, plContext));

    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodList, equalList, diffList, expectedAscii, List, plContext);

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_IsImmutable(goodList, &isImmutable, plContext));

    if (isImmutable != PKIX_TRUE) {
        testError("PKIX_PolicyNode_GetPolicyQualifiers returned a mutable List");
    }
cleanup:
    PKIX_TEST_DECREF_AC(goodList);
    PKIX_TEST_DECREF_AC(equalList);
    PKIX_TEST_DECREF_AC(diffList);

    PKIX_TEST_RETURN();
}

static void
test_GetExpectedPolicies(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode,
    char *expectedAscii)
{
    PKIX_Boolean isImmutable = PKIX_FALSE;
    PKIX_List *goodList = NULL;
    PKIX_List *equalList = NULL;
    PKIX_List *diffList = NULL;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetExpectedPolicies");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetExpectedPolicies(goodNode, &goodList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetExpectedPolicies(equalNode, &equalList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetExpectedPolicies(diffNode, &diffList, plContext));

    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodList, equalList, diffList, expectedAscii, List, plContext);

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_IsImmutable(goodList, &isImmutable, plContext));

    if (isImmutable != PKIX_TRUE) {
        testError("PKIX_PolicyNode_GetExpectedPolicies returned a mutable List");
    }
cleanup:
    PKIX_TEST_DECREF_AC(goodList);
    PKIX_TEST_DECREF_AC(equalList);
    PKIX_TEST_DECREF_AC(diffList);

    PKIX_TEST_RETURN();
}

static void
test_IsCritical(
    PKIX_PolicyNode *goodNode,
    PKIX_PolicyNode *equalNode,
    PKIX_PolicyNode *diffNode)
{
    PKIX_Boolean goodBool = PKIX_FALSE;
    PKIX_Boolean equalBool = PKIX_FALSE;
    PKIX_Boolean diffBool = PKIX_FALSE;
    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_IsCritical");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_IsCritical(goodNode, &goodBool, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_IsCritical(equalNode, &equalBool, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_IsCritical(diffNode, &diffBool, plContext));

    if ((!goodBool) || (!equalBool) || (diffBool)) {
        testError("IsCritical returned unexpected value");
    }
cleanup:

    PKIX_TEST_RETURN();
}

static void
test_GetDepth(
    PKIX_PolicyNode *depth1Node,
    PKIX_PolicyNode *depth2Node,
    PKIX_PolicyNode *depth3Node)
{
    PKIX_UInt32 depth1 = 0;
    PKIX_UInt32 depth2 = 0;
    PKIX_UInt32 depth3 = 0;
    PKIX_TEST_STD_VARS();

    subTest("PKIX_PolicyNode_GetDepth");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetDepth(depth1Node, &depth1, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetDepth(depth2Node, &depth2, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PolicyNode_GetDepth(depth3Node, &depth3, plContext));

    if ((depth1 != 1) || (depth2 != 2) || (depth3 != 3)) {
        testError("GetDepth returned unexpected value");
    }

cleanup:

    PKIX_TEST_RETURN();
}

static void
printUsage(void)
{
    (void)printf("\nUSAGE:\ttest_policynode \n\n");
}

int
test_policynode(int argc, char *argv[])
{

    /*
     * Create a tree with parent = anyPolicy,
     * child1 with Nist1+Nist2, child2 with Nist1.
     * Give each child another child, with policies Nist2
     * and Nist1, respectively. Pruning with a depth of two
     * should have no effect. Give one of the children
     * another child. Then pruning with a depth of three
     * should reduce the tree to a single strand, as child1
     * and child3 are removed.
     *
     *              parent (anyPolicy)
     *          /                   \
     *      child1(Nist1+Nist2)     child2(Nist1)
     *          |                       |
     *      child3(Nist2)           child4(Nist1)
     *                                  |
     *                              child5(Nist1)
     *
     */

    char *asciiAnyPolicy = "2.5.29.32.0";
    PKIX_PL_Cert *cert = NULL;
    PKIX_PL_CertPolicyInfo *nist1Policy = NULL;
    PKIX_PL_CertPolicyInfo *nist2Policy = NULL;
    PKIX_List *policyQualifierList = NULL;
    PKIX_PL_OID *oidAnyPolicy = NULL;
    PKIX_PL_OID *oidNist1Policy = NULL;
    PKIX_PL_OID *oidNist2Policy = NULL;
    PKIX_List *expectedAnyList = NULL;
    PKIX_List *expectedNist1List = NULL;
    PKIX_List *expectedNist2List = NULL;
    PKIX_List *expectedNist1Nist2List = NULL;
    PKIX_List *emptyList = NULL;
    PKIX_PolicyNode *parentNode = NULL;
    PKIX_PolicyNode *childNode1 = NULL;
    PKIX_PolicyNode *childNode2 = NULL;
    PKIX_PolicyNode *childNode3 = NULL;
    PKIX_PolicyNode *childNode4 = NULL;
    PKIX_PolicyNode *childNode5 = NULL;
    PKIX_PL_String *parentString = NULL;
    PKIX_Boolean pDelete = PKIX_FALSE;
    char *expectedParentAscii =
        "{2.16.840.1.101.3.2.1.48.2,(1.3.6.1.5.5.7.2.2:[30 5C "
        "1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 68 65"
        " 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F 6D 2"
        "0 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68 69 "
        "73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 66"
        " 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 20 6"
        "F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.1[(1.3"
        ".6.1.5.5.7.2.2:[30 5C 1A 5A 71 31 3A 20 20 54 68 69 7"
        "3 20 69 73 20 74 68 65 20 75 73 65 72 20 6E 6F 74 69 "
        "63 65 20 66 72 6F 6D 20 71 75 61 6C 69 66 69 65 72 20"
        " 31 2E 20 20 54 68 69 73 20 63 65 72 74 69 66 69 63 6"
        "1 74 65 20 69 73 20 66 6F 72 20 74 65 73 74 20 70 75 "
        "72 70 6F 73 65 73 20 6F 6E 6C 79])], 2.16.840.1.101.3"
        ".2.1.48.2[(1.3.6.1.5.5.7.2.2:[30 5A 1A 58 71 32 3A 20"
        " 20 54 68 69 73 20 69 73 20 74 68 65 20 75 73 65 72 2"
        "0 6E 6F 74 69 63 65 20 66 72 6F 6D 20 71 75 61 6C 69 "
        "66 69 65 72 20 32 2E 20 20 54 68 69 73 20 75 73 65 72"
        " 20 6E 6F 74 69 63 65 20 73 68 6F 75 6C 64 20 6E 6F 7"
        "4 20 62 65 20 64 69 73 70 6C 61 79 65 64])]),1}\n"
        ". {2.16.840.1.101.3.2.1.48.2,(1.3.6.1.5.5.7.2.2:[30 5"
        "C 1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 68 "
        "65 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F 6D"
        " 20 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68 6"
        "9 73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 "
        "66 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 20"
        " 6F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.2),2}";
    char *expectedValidAscii =
        "2.16.840.1.101.3.2.1.48.2";
    char *expectedQualifiersAscii =
        /* "(1.3.6.1.5.5.7.2.2)"; */
        "(1.3.6.1.5.5.7.2.2:[30 5C 1A 5A 71 31 3A 20 20 54 68 "
        "69 73 20 69 73 20 74 68 65 20 75 73 65 72 20 6E 6F 74"
        " 69 63 65 20 66 72 6F 6D 20 71 75 61 6C 69 66 69 65 7"
        "2 20 31 2E 20 20 54 68 69 73 20 63 65 72 74 69 66 69 "
        "63 61 74 65 20 69 73 20 66 6F 72 20 74 65 73 74 20 70"
        " 75 72 70 6F 73 65 73 20 6F 6E 6C 79])";
    char *expectedPoliciesAscii =
        "(2.16.840.1.101.3.2.1.48.1)";
    char *expectedTree =
        "{2.5.29.32.0,{},Critical,(2.5.29.32.0),0}\n"
        ". {2.16.840.1.101.3.2.1.48.2,(1.3.6.1.5.5.7.2.2:[30 5"
        "C 1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 68 "
        "65 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F 6D"
        " 20 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68 6"
        "9 73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 "
        "66 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 20"
        " 6F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.1[(1"
        ".3.6.1.5.5.7.2.2:[30 5C 1A 5A 71 31 3A 20 20 54 68 69"
        " 73 20 69 73 20 74 68 65 20 75 73 65 72 20 6E 6F 74 6"
        "9 63 65 20 66 72 6F 6D 20 71 75 61 6C 69 66 69 65 72 "
        "20 31 2E 20 20 54 68 69 73 20 63 65 72 74 69 66 69 63"
        " 61 74 65 20 69 73 20 66 6F 72 20 74 65 73 74 20 70 7"
        "5 72 70 6F 73 65 73 20 6F 6E 6C 79])], 2.16.840.1.101"
        ".3.2.1.48.2[(1.3.6.1.5.5.7.2.2:[30 5A 1A 58 71 32 3A "
        "20 20 54 68 69 73 20 69 73 20 74 68 65 20 75 73 65 72"
        " 20 6E 6F 74 69 63 65 20 66 72 6F 6D 20 71 75 61 6C 6"
        "9 66 69 65 72 20 32 2E 20 20 54 68 69 73 20 75 73 65 "
        "72 20 6E 6F 74 69 63 65 20 73 68 6F 75 6C 64 20 6E 6F"
        " 74 20 62 65 20 64 69 73 70 6C 61 79 65 64])]"
        "),1}\n"
        ". . {2.16.840.1.101.3.2.1.48.2,(1.3.6.1.5.5.7.2.2:[30"
        " 5C 1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 6"
        "8 65 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F "
        "6D 20 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68"
        " 69 73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 2"
        "0 66 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 "
        "20 6F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.2)"
        ",2}\n"
        ". {2.16.840.1.101.3.2.1.48.1,(1.3.6.1.5.5.7.2.2:[30 5"
        "C 1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 68 "
        "65 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F 6D"
        " 20 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68 6"
        "9 73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 "
        "66 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 20"
        " 6F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.1),1}\n"
        ". . {2.16.840.1.101.3.2.1.48.1,(EMPTY),Not Critical,"
        "(2.16.840.1.101.3.2.1.48.1),2}\n"
        ". . . {2.16.840.1.101.3.2.1.48.1,{},Critical,(2.16.84"
        "0.1.101.3.2.1.48.1),3}";
    char *expectedPrunedTree =
        "{2.5.29.32.0,{},Critical,(2.5.29.32.0),0}\n"
        ". {2.16.840.1.101.3.2.1.48.1,(1.3.6.1.5.5.7.2.2:[30 5"
        "C 1A 5A 71 31 3A 20 20 54 68 69 73 20 69 73 20 74 68 "
        "65 20 75 73 65 72 20 6E 6F 74 69 63 65 20 66 72 6F 6D"
        " 20 71 75 61 6C 69 66 69 65 72 20 31 2E 20 20 54 68 6"
        "9 73 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 "
        "66 6F 72 20 74 65 73 74 20 70 75 72 70 6F 73 65 73 20"
        " 6F 6E 6C 79]),Critical,(2.16.840.1.101.3.2.1.48.1),1}\n"
        ". . {2.16.840.1.101.3.2.1.48.1,(EMPTY),Not Critical,"
        "(2.16.840.1.101.3.2.1.48.1),2}\n"
        ". . . {2.16.840.1.101.3.2.1.48.1,{},Critical,(2.16.84"
        "0.1.101.3.2.1.48.1),3}";

    PKIX_UInt32 actualMinorVersion;
    PKIX_UInt32 j = 0;
    char *dirName = NULL;

    PKIX_TEST_STD_VARS();

    if (argc < 2) {
        printUsage();
        return (0);
    }

    startTests("PolicyNode");

    PKIX_TEST_EXPECT_NO_ERROR(
        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));

    dirName = argv[j + 1];

    subTest("Creating OID objects");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_OID_Create(asciiAnyPolicy, &oidAnyPolicy, plContext));

    /* Read certificates to get real policies, qualifiers */

    cert = createCert(dirName, "UserNoticeQualifierTest16EE.crt", plContext);

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Cert_GetPolicyInformation(cert, &expectedNist1Nist2List, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetItem(expectedNist1Nist2List,
                                                0,
                                                (PKIX_PL_Object **)&nist1Policy,
                                                plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetItem(expectedNist1Nist2List,
                                                1,
                                                (PKIX_PL_Object **)&nist2Policy,
                                                plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_CertPolicyInfo_GetPolQualifiers(nist1Policy, &policyQualifierList,&nbsp;plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_CertPolicyInfo_GetPolicyId(nist1Policy, &oidNist1Policy, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_CertPolicyInfo_GetPolicyId(nist2Policy, &oidNist2Policy, plContext));

    subTest("Creating expectedPolicy List objects");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&expectedAnyList, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&expectedNist1List, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&expectedNist2List, plContext));

    subTest("Populating expectedPolicy List objects");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(expectedAnyList, (PKIX_PL_Object *)oidAnyPolicy, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(expectedNist1List,
                                                   (PKIX_PL_Object *)oidNist1Policy,
                                                   plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(expectedNist2List,
                                                   (PKIX_PL_Object *)oidNist2Policy,
                                                   plContext));

    subTest("Creating PolicyNode objects");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&emptyList, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidAnyPolicy,
                                                     NULL,
                                                     PKIX_TRUE,
                                                     expectedAnyList,
                                                     &parentNode,
                                                     plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidNist2Policy,
                                                     policyQualifierList,
                                                     PKIX_TRUE,
                                                     expectedNist1Nist2List,
                                                     &childNode1,
                                                     plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidNist1Policy,
                                                     policyQualifierList,
                                                     PKIX_TRUE,
                                                     expectedNist1List,
                                                     &childNode2,
                                                     plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidNist2Policy,
                                                     policyQualifierList,
                                                     PKIX_TRUE,
                                                     expectedNist2List,
                                                     &childNode3,
                                                     plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidNist1Policy,
                                                     emptyList,
                                                     PKIX_FALSE,
                                                     expectedNist1List,
                                                     &childNode4,
                                                     plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Create(oidNist1Policy,
                                                     NULL,
                                                     PKIX_TRUE,
                                                     expectedNist1List,
                                                     &childNode5,
                                                     plContext));

    subTest("Creating the PolicyNode tree");

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_AddToParent(parentNode, childNode1, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_AddToParent(parentNode, childNode2, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_AddToParent(childNode1, childNode3, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_AddToParent(childNode2, childNode4, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_AddToParent(childNode4, childNode5, plContext));

    subTest("Displaying PolicyNode objects");

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object *)parentNode, &parentString,&nbsp;plContext));
    (void)printf("parentNode is\n\t%s\n", parentString->escAsciiString);

    testToStringHelper((PKIX_PL_Object *)parentNode, expectedTree, plContext);

    test_DuplicateHelper(parentNode, plContext);

    test_GetParent(childNode3, childNode3, childNode4, expectedParentAscii);
    test_GetValidPolicy(childNode1, childNode3, parentNode, expectedValidAscii);
    test_GetPolicyQualifiers(childNode1, childNode3, childNode4, expectedQualifiersAscii);
    test_GetExpectedPolicies(childNode2, childNode4, childNode3, expectedPoliciesAscii);
    test_IsCritical(childNode1, childNode2, childNode4);
    test_GetDepth(childNode2, childNode4, childNode5);

    subTest("pkix_PolicyNode_Prune");

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Prune(parentNode, 2, &pDelete, plContext));

    testToStringHelper((PKIX_PL_Object *)parentNode, expectedTree, plContext);

    PKIX_TEST_EXPECT_NO_ERROR(pkix_PolicyNode_Prune(parentNode, 3, &pDelete, plContext));

    testToStringHelper((PKIX_PL_Object *)parentNode, expectedPrunedTree, plContext);

    test_GetChildren(parentNode, parentNode, childNode2);

cleanup:

    PKIX_TEST_DECREF_AC(cert);
    PKIX_TEST_DECREF_AC(nist1Policy);
    PKIX_TEST_DECREF_AC(nist2Policy);
    PKIX_TEST_DECREF_AC(policyQualifierList);
    PKIX_TEST_DECREF_AC(oidAnyPolicy);
    PKIX_TEST_DECREF_AC(oidNist1Policy);
    PKIX_TEST_DECREF_AC(oidNist2Policy);
    PKIX_TEST_DECREF_AC(expectedAnyList);
    PKIX_TEST_DECREF_AC(expectedNist1List);
    PKIX_TEST_DECREF_AC(expectedNist2List);
    PKIX_TEST_DECREF_AC(expectedNist1Nist2List);
    PKIX_TEST_DECREF_AC(emptyList);
    PKIX_TEST_DECREF_AC(parentNode);
    PKIX_TEST_DECREF_AC(childNode1);
    PKIX_TEST_DECREF_AC(childNode2);
    PKIX_TEST_DECREF_AC(childNode3);
    PKIX_TEST_DECREF_AC(childNode4);
    PKIX_TEST_DECREF_AC(childNode5);
    PKIX_TEST_DECREF_AC(parentString);

    PKIX_Shutdown(plContext);

    PKIX_TEST_RETURN();

    endTests("PolicyNode");

    return (0);
}

Messung V0.5
C=94 H=94 G=93

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.