tor-browser

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

test_buildresult.c (5968B)


      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_buildresult.c
      6 *
      7 * Test BuildResult 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_BuildResult_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 testGetValidateResult(
     34    PKIX_BuildResult *goodObject,
     35    PKIX_BuildResult *equalObject)
     36 {
     37 
     38    PKIX_ValidateResult *goodValResult = NULL;
     39    PKIX_ValidateResult *equalValResult = NULL;
     40 
     41    PKIX_TEST_STD_VARS();
     42    subTest("PKIX_BuildResult_GetValidateResult");
     43 
     44    PKIX_TEST_EXPECT_NO_ERROR(PKIX_BuildResult_GetValidateResult(goodObject, &goodValResult, NULL));
     45 
     46    PKIX_TEST_EXPECT_NO_ERROR(PKIX_BuildResult_GetValidateResult(equalObject, &equalValResult, NULL));
     47 
     48    testEqualsHelper((PKIX_PL_Object *)goodValResult,
     49                     (PKIX_PL_Object *)equalValResult,
     50                     PKIX_TRUE,
     51                     plContext);
     52 
     53 cleanup:
     54 
     55    PKIX_TEST_DECREF_AC(goodValResult);
     56    PKIX_TEST_DECREF_AC(equalValResult);
     57 
     58    PKIX_TEST_RETURN();
     59 }
     60 
     61 static void
     62 testGetCertChain(
     63    PKIX_BuildResult *goodObject,
     64    PKIX_BuildResult *equalObject)
     65 {
     66 
     67    PKIX_List *goodChain = NULL;
     68    PKIX_List *equalChain = NULL;
     69 
     70    PKIX_TEST_STD_VARS();
     71    subTest("PKIX_BuildResult_GetCertChain");
     72 
     73    PKIX_TEST_EXPECT_NO_ERROR(PKIX_BuildResult_GetCertChain(goodObject, &goodChain, NULL));
     74 
     75    PKIX_TEST_EXPECT_NO_ERROR(PKIX_BuildResult_GetCertChain(equalObject, &equalChain, NULL));
     76 
     77    testEqualsHelper((PKIX_PL_Object *)goodChain,
     78                     (PKIX_PL_Object *)equalChain,
     79                     PKIX_TRUE,
     80                     plContext);
     81 
     82 cleanup:
     83 
     84    PKIX_TEST_DECREF_AC(goodChain);
     85    PKIX_TEST_DECREF_AC(equalChain);
     86 
     87    PKIX_TEST_RETURN();
     88 }
     89 
     90 static void
     91 printUsage(char *pName)
     92 {
     93    printf("\nUSAGE: %s <central-data-dir>\n\n", pName);
     94 }
     95 
     96 int
     97 test_buildresult(int argc, char *argv[])
     98 {
     99 
    100    PKIX_BuildResult *goodObject = NULL;
    101    PKIX_BuildResult *equalObject = NULL;
    102    PKIX_BuildResult *diffObject = NULL;
    103    PKIX_UInt32 actualMinorVersion;
    104    char *dirName = NULL;
    105    PKIX_UInt32 j = 0;
    106 
    107    char *goodInput = "yassir2yassir";
    108    char *diffInput = "yassir2bcn";
    109 
    110    char *expectedAscii =
    111        "[\n"
    112        "\tValidateResult: \t\t"
    113        "[\n"
    114        "\tTrustAnchor: \t\t"
    115        "[\n"
    116        "\tTrusted CA Name:         "
    117        "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    118        "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
    119        "\tInitial Name Constraints:(null)\n"
    120        "]\n"
    121        "\tPubKey:    \t\t"
    122        "ANSI X9.57 DSA Signature\n"
    123        "\tPolicyTree:  \t\t(null)\n"
    124        "]\n"
    125        "\tCertChain:    \t\t("
    126        "[\n"
    127        "\tVersion:         v3\n"
    128        "\tSerialNumber:    37bc65af\n"
    129        "\tIssuer:          CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    130        "\tSubject:         CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    131        "\tValidity: [From: Thu Aug 19 16:14:39 1999\n"
    132        "\t           To:   Fri Aug 18 16:14:39 2000]\n"
    133        "\tSubjectAltNames: (null)\n"
    134        "\tAuthorityKeyId:  (null)\n"
    135        "\tSubjectKeyId:    (null)\n"
    136        "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
    137        "\tCritExtOIDs:     (2.5.29.15, 2.5.29.19)\n"
    138        "\tExtKeyUsages:    (null)\n"
    139        "\tBasicConstraint: CA(0)\n"
    140        "\tCertPolicyInfo:  (null)\n"
    141        "\tPolicyMappings:  (null)\n"
    142        "\tExplicitPolicy:  -1\n"
    143        "\tInhibitMapping:  -1\n"
    144        "\tInhibitAnyPolicy:-1\n"
    145        "\tNameConstraints: (null)\n"
    146        "]\n"
    147        ", [\n"
    148        "\tVersion:         v3\n"
    149        "\tSerialNumber:    37bc66ec\n"
    150        "\tIssuer:          CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    151        "\tSubject:         OU=bcn,OU=east,O=sun,C=us\n"
    152        "\tValidity: [From: Thu Aug 19 16:19:56 1999\n"
    153        "\t           To:   Fri Aug 18 16:19:56 2000]\n"
    154        "\tSubjectAltNames: (null)\n"
    155        "\tAuthorityKeyId:  (null)\n"
    156        "\tSubjectKeyId:    (null)\n"
    157        "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
    158        "\tCritExtOIDs:     (2.5.29.15, 2.5.29.19)\n"
    159        "\tExtKeyUsages:    (null)\n"
    160        "\tBasicConstraint: CA(0)\n"
    161        "\tCertPolicyInfo:  (null)\n"
    162        "\tPolicyMappings:  (null)\n"
    163        "\tExplicitPolicy:  -1\n"
    164        "\tInhibitMapping:  -1\n"
    165        "\tInhibitAnyPolicy:-1\n"
    166        "\tNameConstraints: (null)\n"
    167        "]\n"
    168        ")\n"
    169        "]\n";
    170 
    171    PKIX_TEST_STD_VARS();
    172 
    173    startTests("BuildResult");
    174 
    175    PKIX_TEST_EXPECT_NO_ERROR(
    176        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
    177 
    178    if (argc < 2) {
    179        printUsage(argv[0]);
    180        return (0);
    181    }
    182 
    183    dirName = argv[j + 1];
    184 
    185    subTest("pkix_BuildResult_Create");
    186 
    187    goodObject = createBuildResult(dirName, goodInput, diffInput, goodInput, diffInput, plContext);
    188    equalObject = createBuildResult(dirName, goodInput, diffInput, goodInput, diffInput, plContext);
    189    diffObject = createBuildResult(dirName, diffInput, goodInput, diffInput, goodInput, plContext);
    190 
    191    testGetValidateResult(goodObject, equalObject);
    192    testGetCertChain(goodObject, equalObject);
    193 
    194    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject,
    195                                equalObject,
    196                                diffObject,
    197                                NULL, /* expectedAscii, */
    198                                BuildResult,
    199                                PKIX_FALSE);
    200 
    201    testDestroy(goodObject, equalObject, diffObject);
    202 
    203 cleanup:
    204 
    205    PKIX_Shutdown(plContext);
    206 
    207    PKIX_TEST_RETURN();
    208 
    209    endTests("BuildResult");
    210 
    211    return (0);
    212 }