tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_valresult.c (5055B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 /*
      5 * test_valresult.c
      6 *
      7 * Test ValidateResult Type
      8 *
      9 */
     10 
     11 #include "testutil.h"
     12 #include "testutil_nss.h"
     13 
     14 static void *plContext = NULL;
     15 
     16 static void
     17 testDestroy(void *goodObject, void *equalObject, void *diffObject)
     18 {
     19    PKIX_TEST_STD_VARS();
     20 
     21    subTest("PKIX_ValidateResult_Destroy");
     22 
     23    PKIX_TEST_DECREF_BC(goodObject);
     24    PKIX_TEST_DECREF_BC(equalObject);
     25    PKIX_TEST_DECREF_BC(diffObject);
     26 
     27 cleanup:
     28 
     29    PKIX_TEST_RETURN();
     30 }
     31 
     32 static void
     33 testGetPublicKey(
     34    PKIX_ValidateResult *goodObject,
     35    PKIX_ValidateResult *equalObject)
     36 {
     37 
     38    PKIX_PL_PublicKey *goodPubKey = NULL;
     39    PKIX_PL_PublicKey *equalPubKey = NULL;
     40 
     41    PKIX_TEST_STD_VARS();
     42    subTest("PKIX_ValidateResult_GetPublicKey");
     43 
     44    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey(goodObject, &goodPubKey, plContext));
     45 
     46    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey(equalObject, &equalPubKey, plContext));
     47 
     48    testEqualsHelper((PKIX_PL_Object *)goodPubKey,
     49                     (PKIX_PL_Object *)equalPubKey,
     50                     PKIX_TRUE,
     51                     plContext);
     52 
     53 cleanup:
     54 
     55    PKIX_TEST_DECREF_AC(goodPubKey);
     56    PKIX_TEST_DECREF_AC(equalPubKey);
     57 
     58    PKIX_TEST_RETURN();
     59 }
     60 
     61 static void
     62 testGetTrustAnchor(
     63    PKIX_ValidateResult *goodObject,
     64    PKIX_ValidateResult *equalObject)
     65 {
     66 
     67    PKIX_TrustAnchor *goodAnchor = NULL;
     68    PKIX_TrustAnchor *equalAnchor = NULL;
     69 
     70    PKIX_TEST_STD_VARS();
     71    subTest("PKIX_ValidateResult_GetTrustAnchor");
     72 
     73    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor(goodObject, &goodAnchor, plContext));
     74 
     75    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor(equalObject, &equalAnchor, plContext));
     76 
     77    testEqualsHelper((PKIX_PL_Object *)goodAnchor,
     78                     (PKIX_PL_Object *)equalAnchor,
     79                     PKIX_TRUE,
     80                     plContext);
     81 
     82 cleanup:
     83 
     84    PKIX_TEST_DECREF_AC(goodAnchor);
     85    PKIX_TEST_DECREF_AC(equalAnchor);
     86 
     87    PKIX_TEST_RETURN();
     88 }
     89 
     90 static void
     91 testGetPolicyTree(
     92    PKIX_ValidateResult *goodObject,
     93    PKIX_ValidateResult *equalObject)
     94 {
     95 
     96    PKIX_PolicyNode *goodTree = NULL;
     97    PKIX_PolicyNode *equalTree = NULL;
     98 
     99    PKIX_TEST_STD_VARS();
    100    subTest("PKIX_ValidateResult_GetPolicyTree");
    101 
    102    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree(goodObject, &goodTree, plContext));
    103 
    104    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree(equalObject, &equalTree, plContext));
    105 
    106    if (goodTree) {
    107        testEqualsHelper((PKIX_PL_Object *)goodTree,
    108                         (PKIX_PL_Object *)equalTree,
    109                         PKIX_TRUE,
    110                         plContext);
    111    } else if (equalTree) {
    112        pkixTestErrorMsg = "Mismatch: NULL and non-NULL Policy Trees";
    113    }
    114 
    115 cleanup:
    116 
    117    PKIX_TEST_DECREF_AC(goodTree);
    118    PKIX_TEST_DECREF_AC(equalTree);
    119 
    120    PKIX_TEST_RETURN();
    121 }
    122 
    123 static void
    124 printUsage(char *pName)
    125 {
    126    printf("\nUSAGE: %s <central-data-dir>\n\n", pName);
    127 }
    128 
    129 int
    130 test_valresult(int argc, char *argv[])
    131 {
    132 
    133    PKIX_ValidateResult *goodObject = NULL;
    134    PKIX_ValidateResult *equalObject = NULL;
    135    PKIX_ValidateResult *diffObject = NULL;
    136    PKIX_UInt32 actualMinorVersion;
    137    PKIX_UInt32 j = 0;
    138 
    139    char *goodInput = "yassir2yassir";
    140    char *diffInput = "yassir2bcn";
    141    char *dirName = NULL;
    142 
    143    char *expectedAscii =
    144        "[\n"
    145        "\tTrustAnchor: \t\t"
    146        "[\n"
    147        "\tTrusted CA Name:         "
    148        "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    149        "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
    150        "\tInitial Name Constraints:(null)\n"
    151        "]\n"
    152        "\tPubKey:    \t\t"
    153        "ANSI X9.57 DSA Signature\n"
    154        "\tPolicyTree:  \t\t(null)\n"
    155        "]\n";
    156 
    157    PKIX_TEST_STD_VARS();
    158 
    159    startTests("ValidateResult");
    160 
    161    PKIX_TEST_EXPECT_NO_ERROR(
    162        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
    163 
    164    if (argc < 2) {
    165        printUsage(argv[0]);
    166        return (0);
    167    }
    168 
    169    dirName = argv[j + 1];
    170 
    171    subTest("pkix_ValidateResult_Create");
    172 
    173    goodObject = createValidateResult(dirName, goodInput, diffInput, plContext);
    174    equalObject = createValidateResult(dirName, goodInput, diffInput, plContext);
    175    diffObject = createValidateResult(dirName, diffInput, goodInput, plContext);
    176 
    177    testGetPublicKey(goodObject, equalObject);
    178    testGetTrustAnchor(goodObject, equalObject);
    179    testGetPolicyTree(goodObject, equalObject);
    180 
    181    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject,
    182                                equalObject,
    183                                diffObject,
    184                                expectedAscii,
    185                                ValidateResult,
    186                                PKIX_FALSE);
    187 
    188    testDestroy(goodObject, equalObject, diffObject);
    189 
    190 cleanup:
    191 
    192    PKIX_Shutdown(plContext);
    193 
    194    PKIX_TEST_RETURN();
    195 
    196    endTests("ValidateResult");
    197 
    198    return (0);
    199 }