tor-browser

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

test_valparams.c (8103B)


      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_valparams.c
      6 *
      7 * Test ValidateParams 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_ValidateParams_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 testGetProcParams(
     34    PKIX_ValidateParams *goodObject,
     35    PKIX_ValidateParams *equalObject)
     36 {
     37 
     38    PKIX_ProcessingParams *goodProcParams = NULL;
     39    PKIX_ProcessingParams *equalProcParams = NULL;
     40 
     41    PKIX_TEST_STD_VARS();
     42    subTest("PKIX_ValidateParams_GetProcessingParams");
     43 
     44    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetProcessingParams(goodObject, &goodProcParams, plContext));
     45 
     46    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetProcessingParams(equalObject, &equalProcParams, plContext));
     47 
     48    testEqualsHelper((PKIX_PL_Object *)goodProcParams,
     49                     (PKIX_PL_Object *)equalProcParams,
     50                     PKIX_TRUE,
     51                     plContext);
     52 
     53 cleanup:
     54 
     55    PKIX_TEST_DECREF_AC(goodProcParams);
     56    PKIX_TEST_DECREF_AC(equalProcParams);
     57 
     58    PKIX_TEST_RETURN();
     59 }
     60 
     61 static void
     62 testGetCertChain(
     63    PKIX_ValidateParams *goodObject,
     64    PKIX_ValidateParams *equalObject)
     65 {
     66 
     67    PKIX_List *goodChain = NULL;
     68    PKIX_List *equalChain = NULL;
     69 
     70    PKIX_TEST_STD_VARS();
     71    subTest("PKIX_ValidateParams_GetCertChain");
     72 
     73    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetCertChain(goodObject, &goodChain, plContext));
     74 
     75    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateParams_GetCertChain(equalObject, &equalChain, plContext));
     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_valparams(int argc, char *argv[])
     98 {
     99 
    100    PKIX_ValidateParams *goodObject = NULL;
    101    PKIX_ValidateParams *equalObject = NULL;
    102    PKIX_ValidateParams *diffObject = NULL;
    103    PKIX_List *chain = NULL;
    104    PKIX_UInt32 actualMinorVersion;
    105    PKIX_UInt32 j = 0;
    106    char *dirName = NULL;
    107 
    108    char *goodInput = "yassir2yassir";
    109    char *diffInput = "yassir2bcn";
    110 
    111    char *expectedAscii =
    112        "[\n"
    113        "\tProcessing Params: \n"
    114        "\t********BEGIN PROCESSING PARAMS********\n"
    115        "\t\t"
    116        "[\n"
    117        "\tTrust Anchors: \n"
    118        "\t********BEGIN LIST OF TRUST ANCHORS********\n"
    119        "\t\t"
    120        "([\n"
    121        "\tTrusted CA Name:         "
    122        "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    123        "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
    124        "\tInitial Name Constraints:(null)\n"
    125        "]\n"
    126        ", [\n"
    127        "\tTrusted CA Name:         OU=bcn,OU=east,O=sun,C=us\n"
    128        "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
    129        "\tInitial Name Constraints:(null)\n"
    130        "]\n"
    131        ")\n"
    132        "\t********END LIST OF TRUST ANCHORS********\n"
    133        "\tDate:    \t\t(null)\n"
    134        "\tTarget Constraints:    (null)\n"
    135        "\tInitial Policies:      (null)\n"
    136        "\tQualifiers Rejected:   FALSE\n"
    137        "\tCert Stores:           (EMPTY)\n"
    138        "\tCRL Checking Enabled:  0\n"
    139        "]\n"
    140        "\n"
    141        "\t********END PROCESSING PARAMS********\n"
    142        "\tChain:    \t\t"
    143        "([\n"
    144        "\tVersion:         v3\n"
    145        "\tSerialNumber:    37bc66ec\n"
    146        "\tIssuer:          CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    147        "\tSubject:         OU=bcn,OU=east,O=sun,C=us\n"
    148        "\tValidity: [From: Thu Aug 19 16:19:56 1999\n"
    149        "\t           To:   Fri Aug 18 16:19:56 2000]\n"
    150        "\tSubjectAltNames: (null)\n"
    151        "\tAuthorityKeyId:  (null)\n"
    152        "\tSubjectKeyId:    (null)\n"
    153        "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
    154        "\tCritExtOIDs:     (2.5.29.15, 2.5.29.19)\n"
    155        "\tExtKeyUsages:    (null)\n"
    156        "\tBasicConstraint: CA(0)\n"
    157        "\tCertPolicyInfo:  (null)\n"
    158        "\tPolicyMappings:  (null)\n"
    159        "\tExplicitPolicy:  -1\n"
    160        "\tInhibitMapping:  -1\n"
    161        "\tInhibitAnyPolicy:-1\n"
    162        "\tNameConstraints: (null)\n"
    163        "]\n"
    164        ", [\n"
    165        "\tVersion:         v3\n"
    166        "\tSerialNumber:    37bc65af\n"
    167        "\tIssuer:          CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    168        "\tSubject:         CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
    169        "\tValidity: [From: Thu Aug 19 16:14:39 1999\n"
    170        "\t           To:   Fri Aug 18 16:14:39 2000]\n"
    171        "\tSubjectAltNames: (null)\n"
    172        "\tAuthorityKeyId:  (null)\n"
    173        "\tSubjectKeyId:    (null)\n"
    174        "\tSubjPubKeyAlgId: ANSI X9.57 DSA Signature\n"
    175        "\tCritExtOIDs:     (2.5.29.15, 2.5.29.19)\n"
    176        "\tExtKeyUsages:    (null)\n"
    177        "\tBasicConstraint: CA(0)\n"
    178        "\tCertPolicyInfo:  (null)\n"
    179        "\tPolicyMappings:  (null)\n"
    180        "\tExplicitPolicy:  -1\n"
    181        "\tInhibitMapping:  -1\n"
    182        "\tInhibitAnyPolicy:-1\n"
    183        "\tNameConstraints: (null)\n"
    184        "]\n"
    185        ")\n"
    186        "]\n";
    187 
    188    PKIX_TEST_STD_VARS();
    189 
    190    startTests("ValidateParams");
    191 
    192    PKIX_TEST_EXPECT_NO_ERROR(
    193        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
    194 
    195    if (argc < 2) {
    196        printUsage(argv[0]);
    197        return (0);
    198    }
    199 
    200    dirName = argv[j + 1];
    201 
    202    subTest("PKIX_ValidateParams_Create");
    203    chain = createCertChain(dirName, diffInput, goodInput, plContext);
    204    goodObject = createValidateParams(dirName,
    205                                      goodInput,
    206                                      diffInput,
    207                                      NULL,
    208                                      NULL,
    209                                      PKIX_FALSE,
    210                                      PKIX_FALSE,
    211                                      PKIX_FALSE,
    212                                      PKIX_FALSE,
    213                                      chain,
    214                                      plContext);
    215    equalObject = createValidateParams(dirName,
    216                                       goodInput,
    217                                       diffInput,
    218                                       NULL,
    219                                       NULL,
    220                                       PKIX_FALSE,
    221                                       PKIX_FALSE,
    222                                       PKIX_FALSE,
    223                                       PKIX_FALSE,
    224                                       chain,
    225                                       plContext);
    226    diffObject = createValidateParams(dirName,
    227                                      diffInput,
    228                                      goodInput,
    229                                      NULL,
    230                                      NULL,
    231                                      PKIX_FALSE,
    232                                      PKIX_FALSE,
    233                                      PKIX_FALSE,
    234                                      PKIX_FALSE,
    235                                      chain,
    236                                      plContext);
    237 
    238    testGetProcParams(goodObject, equalObject);
    239    testGetCertChain(goodObject, equalObject);
    240 
    241    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject,
    242                                equalObject,
    243                                diffObject,
    244                                NULL, /* expectedAscii, */
    245                                ValidateParams,
    246                                PKIX_FALSE);
    247 
    248    testDestroy(goodObject, equalObject, diffObject);
    249 
    250 cleanup:
    251 
    252    PKIX_TEST_DECREF_AC(chain);
    253 
    254    PKIX_Shutdown(plContext);
    255 
    256    PKIX_TEST_RETURN();
    257 
    258    endTests("ValidateParams");
    259 
    260    return (0);
    261 }