Blame nss/cmd/libpkix/pkix/results/test_valresult.c

Packit 40b132
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit 40b132
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit 40b132
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit 40b132
/*
Packit 40b132
 * test_valresult.c
Packit 40b132
 *
Packit 40b132
 * Test ValidateResult Type
Packit 40b132
 *
Packit 40b132
 */
Packit 40b132
Packit 40b132
#include "testutil.h"
Packit 40b132
#include "testutil_nss.h"
Packit 40b132
Packit 40b132
static void *plContext = NULL;
Packit 40b132
Packit 40b132
static void
Packit 40b132
testDestroy(void *goodObject, void *equalObject, void *diffObject)
Packit 40b132
{
Packit 40b132
        PKIX_TEST_STD_VARS();
Packit 40b132
Packit 40b132
        subTest("PKIX_ValidateResult_Destroy");
Packit 40b132
Packit 40b132
        PKIX_TEST_DECREF_BC(goodObject);
Packit 40b132
        PKIX_TEST_DECREF_BC(equalObject);
Packit 40b132
        PKIX_TEST_DECREF_BC(diffObject);
Packit 40b132
Packit 40b132
cleanup:
Packit 40b132
Packit 40b132
        PKIX_TEST_RETURN();
Packit 40b132
Packit 40b132
}
Packit 40b132
Packit 40b132
static
Packit 40b132
void testGetPublicKey(
Packit 40b132
        PKIX_ValidateResult *goodObject,
Packit 40b132
        PKIX_ValidateResult *equalObject){
Packit 40b132
Packit 40b132
        PKIX_PL_PublicKey *goodPubKey = NULL;
Packit 40b132
        PKIX_PL_PublicKey *equalPubKey = NULL;
Packit 40b132
Packit 40b132
        PKIX_TEST_STD_VARS();
Packit 40b132
        subTest("PKIX_ValidateResult_GetPublicKey");
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey
Packit 40b132
                (goodObject, &goodPubKey, plContext));
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey
Packit 40b132
                (equalObject, &equalPubKey, plContext));
Packit 40b132
Packit 40b132
        testEqualsHelper
Packit 40b132
                ((PKIX_PL_Object *)goodPubKey,
Packit 40b132
                (PKIX_PL_Object *)equalPubKey,
Packit 40b132
                PKIX_TRUE,
Packit 40b132
                plContext);
Packit 40b132
Packit 40b132
cleanup:
Packit 40b132
Packit 40b132
        PKIX_TEST_DECREF_AC(goodPubKey);
Packit 40b132
        PKIX_TEST_DECREF_AC(equalPubKey);
Packit 40b132
Packit 40b132
        PKIX_TEST_RETURN();
Packit 40b132
}
Packit 40b132
Packit 40b132
static
Packit 40b132
void testGetTrustAnchor(
Packit 40b132
        PKIX_ValidateResult *goodObject,
Packit 40b132
        PKIX_ValidateResult *equalObject){
Packit 40b132
Packit 40b132
        PKIX_TrustAnchor *goodAnchor = NULL;
Packit 40b132
        PKIX_TrustAnchor *equalAnchor = NULL;
Packit 40b132
Packit 40b132
        PKIX_TEST_STD_VARS();
Packit 40b132
        subTest("PKIX_ValidateResult_GetTrustAnchor");
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor
Packit 40b132
                (goodObject, &goodAnchor, plContext));
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor
Packit 40b132
                (equalObject, &equalAnchor, plContext));
Packit 40b132
Packit 40b132
        testEqualsHelper
Packit 40b132
                ((PKIX_PL_Object *)goodAnchor,
Packit 40b132
                (PKIX_PL_Object *)equalAnchor,
Packit 40b132
                PKIX_TRUE,
Packit 40b132
                plContext);
Packit 40b132
Packit 40b132
cleanup:
Packit 40b132
Packit 40b132
        PKIX_TEST_DECREF_AC(goodAnchor);
Packit 40b132
        PKIX_TEST_DECREF_AC(equalAnchor);
Packit 40b132
Packit 40b132
        PKIX_TEST_RETURN();
Packit 40b132
}
Packit 40b132
Packit 40b132
static
Packit 40b132
void testGetPolicyTree(
Packit 40b132
        PKIX_ValidateResult *goodObject,
Packit 40b132
        PKIX_ValidateResult *equalObject){
Packit 40b132
Packit 40b132
        PKIX_PolicyNode *goodTree = NULL;
Packit 40b132
        PKIX_PolicyNode *equalTree = NULL;
Packit 40b132
Packit 40b132
        PKIX_TEST_STD_VARS();
Packit 40b132
        subTest("PKIX_ValidateResult_GetPolicyTree");
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree
Packit 40b132
                (goodObject, &goodTree, plContext));
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree
Packit 40b132
                (equalObject, &equalTree, plContext));
Packit 40b132
Packit 40b132
        if (goodTree) {
Packit 40b132
                testEqualsHelper
Packit 40b132
                        ((PKIX_PL_Object *)goodTree,
Packit 40b132
                        (PKIX_PL_Object *)equalTree,
Packit 40b132
                        PKIX_TRUE,
Packit 40b132
                        plContext);
Packit 40b132
        } else if (equalTree) {
Packit 40b132
                pkixTestErrorMsg = "Mismatch: NULL and non-NULL Policy Trees";
Packit 40b132
        }
Packit 40b132
Packit 40b132
cleanup:
Packit 40b132
Packit 40b132
        PKIX_TEST_DECREF_AC(goodTree);
Packit 40b132
        PKIX_TEST_DECREF_AC(equalTree);
Packit 40b132
Packit 40b132
        PKIX_TEST_RETURN();
Packit 40b132
}
Packit 40b132
Packit 40b132
static
Packit 40b132
void printUsage(char *pName){
Packit 40b132
        printf("\nUSAGE: %s <central-data-dir>\n\n", pName);
Packit 40b132
}
Packit 40b132
Packit 40b132
int test_valresult(int argc, char *argv[]) {
Packit 40b132
Packit 40b132
        PKIX_ValidateResult *goodObject = NULL;
Packit 40b132
        PKIX_ValidateResult *equalObject = NULL;
Packit 40b132
        PKIX_ValidateResult *diffObject = NULL;
Packit 40b132
        PKIX_UInt32 actualMinorVersion;
Packit 40b132
        PKIX_UInt32 j = 0;
Packit 40b132
Packit 40b132
        char *goodInput = "yassir2yassir";
Packit 40b132
        char *diffInput = "yassir2bcn";
Packit 40b132
        char *dirName = NULL;
Packit 40b132
Packit 40b132
        char *expectedAscii =
Packit 40b132
                "[\n"
Packit 40b132
                "\tTrustAnchor: \t\t"
Packit 40b132
                "[\n"
Packit 40b132
                "\tTrusted CA Name:         "
Packit 40b132
                "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
Packit 40b132
                "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
Packit 40b132
                "\tInitial Name Constraints:(null)\n"
Packit 40b132
                "]\n"
Packit 40b132
                "\tPubKey:    \t\t"
Packit 40b132
                "ANSI X9.57 DSA Signature\n"
Packit 40b132
                "\tPolicyTree:  \t\t(null)\n"
Packit 40b132
                "]\n";
Packit 40b132
Packit 40b132
        PKIX_TEST_STD_VARS();
Packit 40b132
Packit 40b132
        startTests("ValidateResult");
Packit 40b132
Packit 40b132
        PKIX_TEST_EXPECT_NO_ERROR(
Packit 40b132
            PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
Packit 40b132
Packit 40b132
        if (argc < 2){
Packit 40b132
                printUsage(argv[0]);
Packit 40b132
                return (0);
Packit 40b132
        }
Packit 40b132
Packit 40b132
        dirName = argv[j+1];
Packit 40b132
Packit 40b132
        subTest("pkix_ValidateResult_Create");
Packit 40b132
Packit 40b132
        goodObject = createValidateResult
Packit 40b132
                (dirName, goodInput, diffInput, plContext);
Packit 40b132
        equalObject = createValidateResult
Packit 40b132
                (dirName, goodInput, diffInput, plContext);
Packit 40b132
        diffObject = createValidateResult
Packit 40b132
                (dirName, diffInput, goodInput, plContext);
Packit 40b132
Packit 40b132
        testGetPublicKey(goodObject, equalObject);
Packit 40b132
        testGetTrustAnchor(goodObject, equalObject);
Packit 40b132
        testGetPolicyTree(goodObject, equalObject);
Packit 40b132
Packit 40b132
        PKIX_TEST_EQ_HASH_TOSTR_DUP
Packit 40b132
                (goodObject,
Packit 40b132
                equalObject,
Packit 40b132
                diffObject,
Packit 40b132
                expectedAscii,
Packit 40b132
                ValidateResult,
Packit 40b132
                PKIX_FALSE);
Packit 40b132
Packit 40b132
        testDestroy(goodObject, equalObject, diffObject);
Packit 40b132
Packit 40b132
cleanup:
Packit 40b132
Packit 40b132
        PKIX_Shutdown(plContext);
Packit 40b132
Packit 40b132
        PKIX_TEST_RETURN();
Packit 40b132
Packit 40b132
        endTests("ValidateResult");
Packit 40b132
Packit 40b132
        return (0);
Packit 40b132
}