tor-browser

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

test_comcrlselparams.c (13849B)


      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_comcrlselparams.c
      6 *
      7 * Test ComCRLSelParams Type
      8 *
      9 */
     10 
     11 #include "testutil.h"
     12 #include "testutil_nss.h"
     13 
     14 static void *plContext = NULL;
     15 
     16 static void
     17 testIssuer(PKIX_ComCRLSelParams *goodObject)
     18 {
     19    PKIX_PL_String *issuer1String = NULL;
     20    PKIX_PL_String *issuer2String = NULL;
     21    PKIX_PL_String *issuer3String = NULL;
     22    PKIX_PL_X500Name *issuerName1 = NULL;
     23    PKIX_PL_X500Name *issuerName2 = NULL;
     24    PKIX_PL_X500Name *issuerName3 = NULL;
     25    PKIX_List *setIssuerList = NULL;
     26    PKIX_List *getIssuerList = NULL;
     27    PKIX_PL_String *issuerListString = NULL;
     28    char *name1 = "CN=yassir,OU=bcn,OU=east,O=sun,C=us";
     29    char *name2 = "CN=richard,OU=bcn,OU=east,O=sun,C=us";
     30    char *name3 = "CN=hanfei,OU=bcn,OU=east,O=sun,C=us";
     31    PKIX_Int32 length;
     32    PKIX_Boolean result = PKIX_FALSE;
     33    char *expectedAscii =
     34        "(CN=yassir,OU=bcn,OU=east,O=sun,"
     35        "C=us, CN=richard,OU=bcn,OU=east,O=sun,C=us, "
     36        "CN=hanfei,OU=bcn,OU=east,O=sun,C=us)";
     37 
     38    PKIX_TEST_STD_VARS();
     39 
     40    subTest("PKIX_ComCRLSelParams Create Issuers");
     41 
     42    length = PL_strlen(name1);
     43 
     44    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create(PKIX_UTF8,
     45                                                    name1,
     46                                                    length,
     47                                                    &issuer1String,
     48                                                    plContext));
     49 
     50    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_X500Name_Create(issuer1String,
     51                                                      &issuerName1,
     52                                                      plContext));
     53 
     54    length = PL_strlen(name2);
     55 
     56    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create(PKIX_UTF8,
     57                                                    name2,
     58                                                    length,
     59                                                    &issuer2String,
     60                                                    plContext));
     61 
     62    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_X500Name_Create(issuer2String,
     63                                                      &issuerName2,
     64                                                      plContext));
     65 
     66    length = PL_strlen(name3);
     67 
     68    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create(PKIX_UTF8,
     69                                                    name3,
     70                                                    length,
     71                                                    &issuer3String,
     72                                                    plContext));
     73 
     74    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_X500Name_Create(issuer3String,
     75                                                      &issuerName3,
     76                                                      plContext));
     77 
     78    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&setIssuerList, plContext));
     79 
     80    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(setIssuerList,
     81                                                   (PKIX_PL_Object *)issuerName1,
     82                                                   plContext));
     83 
     84    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(setIssuerList,
     85                                                   (PKIX_PL_Object *)issuerName2,
     86                                                   plContext));
     87 
     88    subTest("PKIX_ComCRLSelParams_AddIssuerName");
     89 
     90    /* Test adding an issuer to an empty list */
     91    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_AddIssuerName(goodObject, issuerName3, plContext));
     92 
     93    subTest("PKIX_ComCRLSelParams_GetIssuerNames");
     94 
     95    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetIssuerNames(goodObject, &getIssuerList, plContext));
     96 
     97    /* DECREF for GetIssuerNames */
     98    PKIX_TEST_DECREF_BC(getIssuerList);
     99    /* DECREF for AddIssuerName so next SetIssuerName start clean */
    100    PKIX_TEST_DECREF_BC(getIssuerList);
    101 
    102    /* Test setting issuer names on the list */
    103    subTest("PKIX_ComCRLSelParams_SetIssuerNames");
    104 
    105    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_SetIssuerNames(goodObject, setIssuerList, plContext));
    106 
    107    subTest("PKIX_ComCRLSelParams_GetIssuerNames");
    108 
    109    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetIssuerNames(goodObject, &getIssuerList, plContext));
    110 
    111    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setIssuerList,
    112                                                    (PKIX_PL_Object *)getIssuerList,
    113                                                    &result,
    114                                                    plContext));
    115 
    116    if (result != PKIX_TRUE) {
    117        pkixTestErrorMsg = "unexpected Issuers mismatch";
    118    }
    119 
    120    /* Test adding an issuer to existing list */
    121    subTest("PKIX_ComCRLSelParams_AddIssuerName");
    122 
    123    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_AddIssuerName(goodObject, issuerName3, plContext));
    124 
    125    subTest("PKIX_ComCRLSelParams_GetIssuerNames");
    126    PKIX_TEST_DECREF_BC(getIssuerList);
    127 
    128    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetIssuerNames(goodObject, &getIssuerList, plContext));
    129 
    130    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_ToString((PKIX_PL_Object *)getIssuerList,
    131                                                      &issuerListString,
    132                                                      plContext));
    133 
    134    testToStringHelper((PKIX_PL_Object *)getIssuerList,
    135                       expectedAscii, plContext);
    136 
    137 cleanup:
    138 
    139    PKIX_TEST_DECREF_AC(issuer1String);
    140    PKIX_TEST_DECREF_AC(issuer2String);
    141    PKIX_TEST_DECREF_AC(issuer3String);
    142    PKIX_TEST_DECREF_AC(issuerListString);
    143    PKIX_TEST_DECREF_AC(issuerName1);
    144    PKIX_TEST_DECREF_AC(issuerName2);
    145    PKIX_TEST_DECREF_AC(issuerName3);
    146    PKIX_TEST_DECREF_AC(setIssuerList);
    147    PKIX_TEST_DECREF_AC(getIssuerList);
    148 
    149    PKIX_TEST_RETURN();
    150 }
    151 
    152 static void
    153 testCertificateChecking(
    154    char *dataCentralDir,
    155    char *goodInput,
    156    PKIX_ComCRLSelParams *goodObject)
    157 {
    158    PKIX_PL_Cert *setCert = NULL;
    159    PKIX_PL_Cert *getCert = NULL;
    160    PKIX_Boolean result = PKIX_FALSE;
    161 
    162    PKIX_TEST_STD_VARS();
    163 
    164    subTest("Test CertificateChecking Cert Create");
    165    setCert = createCert(dataCentralDir, goodInput, plContext);
    166    if (setCert == NULL) {
    167        pkixTestErrorMsg = "create certificate failed";
    168        goto cleanup;
    169    }
    170 
    171    subTest("PKIX_ComCRLSelParams_SetCertificateChecking");
    172 
    173    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_SetCertificateChecking(goodObject, setCert, plContext));
    174 
    175    subTest("PKIX_ComCRLSelParams_GetCertificateChecking");
    176 
    177    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetCertificateChecking(goodObject, &getCert, plContext));
    178 
    179    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setCert,
    180                                                    (PKIX_PL_Object *)getCert,
    181                                                    &result, plContext));
    182 
    183    if (result != PKIX_TRUE) {
    184        pkixTestErrorMsg = "unexpected Cert mismatch";
    185    }
    186 
    187 cleanup:
    188 
    189    PKIX_TEST_DECREF_AC(setCert);
    190    PKIX_TEST_DECREF_AC(getCert);
    191 
    192    PKIX_TEST_RETURN();
    193 }
    194 
    195 static void
    196 testDateAndTime(PKIX_ComCRLSelParams *goodObject)
    197 {
    198 
    199    PKIX_PL_Date *setDate = NULL;
    200    PKIX_PL_Date *getDate = NULL;
    201    char *asciiDate = "040329134847Z";
    202    PKIX_Boolean result = PKIX_FALSE;
    203 
    204    PKIX_TEST_STD_VARS();
    205 
    206    subTest("PKIX_ComCRLSelParams_Date Create");
    207    setDate = createDate(asciiDate, plContext);
    208 
    209    subTest("PKIX_ComCRLSelParams_SetDateAndTime");
    210    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_SetDateAndTime(goodObject, setDate, plContext));
    211 
    212    subTest("PKIX_ComCRLSelParams_GetDateAndTime");
    213    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetDateAndTime(goodObject, &getDate, plContext));
    214 
    215    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setDate,
    216                                                    (PKIX_PL_Object *)getDate,
    217                                                    &result, plContext));
    218 
    219    if (result != PKIX_TRUE) {
    220        pkixTestErrorMsg = "unexpected DateAndTime mismatch";
    221    }
    222 
    223 cleanup:
    224 
    225    PKIX_TEST_DECREF_AC(setDate);
    226    PKIX_TEST_DECREF_AC(getDate);
    227 
    228    PKIX_TEST_RETURN();
    229 }
    230 
    231 static void
    232 testMaxMinCRLNumbers(PKIX_ComCRLSelParams *goodObject)
    233 {
    234    PKIX_PL_BigInt *setMaxCrlNumber = NULL;
    235    PKIX_PL_BigInt *getMaxCrlNumber = NULL;
    236    PKIX_PL_BigInt *setMinCrlNumber = NULL;
    237    PKIX_PL_BigInt *getMinCrlNumber = NULL;
    238    char *asciiCrlNumber1 = "01";
    239    char *asciiCrlNumber99999 = "0909090909";
    240    PKIX_PL_String *crlNumber1String = NULL;
    241    PKIX_PL_String *crlNumber99999String = NULL;
    242 
    243    PKIX_Boolean result = PKIX_FALSE;
    244 
    245    PKIX_TEST_STD_VARS();
    246 
    247    subTest("PKIX_ComCRLSelParams_SetMinCRLNumber");
    248 
    249    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create(PKIX_ESCASCII,
    250                                                    asciiCrlNumber1,
    251                                                    PL_strlen(asciiCrlNumber1),
    252                                                    &crlNumber1String,
    253                                                    NULL));
    254 
    255    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_BigInt_Create(crlNumber1String, &setMinCrlNumber, NULL));
    256 
    257    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_SetMinCRLNumber(goodObject, setMinCrlNumber, NULL));
    258 
    259    subTest("PKIX_ComCRLSelParams_GetMinCRLNumber");
    260 
    261    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetMinCRLNumber(goodObject, &getMinCrlNumber, NULL));
    262 
    263    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setMinCrlNumber,
    264                                                    (PKIX_PL_Object *)getMinCrlNumber,
    265                                                    &result, NULL));
    266 
    267    if (result != PKIX_TRUE) {
    268        pkixTestErrorMsg = "unexpected Minimum CRL Number mismatch";
    269    }
    270 
    271    subTest("PKIX_ComCRLSelParams_SetMaxCRLNumber");
    272 
    273    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create(PKIX_ESCASCII,
    274                                                    asciiCrlNumber99999,
    275                                                    PL_strlen(asciiCrlNumber99999),
    276                                                    &crlNumber99999String,
    277                                                    NULL));
    278 
    279    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_BigInt_Create(crlNumber99999String, &setMaxCrlNumber, NULL));
    280 
    281    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_SetMaxCRLNumber(goodObject, setMaxCrlNumber, NULL));
    282 
    283    subTest("PKIX_ComCRLSelParams_GetMaxCRLNumber");
    284 
    285    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_GetMaxCRLNumber(goodObject, &getMaxCrlNumber, NULL));
    286 
    287    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setMaxCrlNumber,
    288                                                    (PKIX_PL_Object *)getMaxCrlNumber,
    289                                                    &result, NULL));
    290 
    291    if (result != PKIX_TRUE) {
    292        pkixTestErrorMsg = "unexpected Maximum CRL Number mismatch";
    293    }
    294 
    295 cleanup:
    296 
    297    PKIX_TEST_DECREF_AC(setMaxCrlNumber);
    298    PKIX_TEST_DECREF_AC(getMaxCrlNumber);
    299    PKIX_TEST_DECREF_AC(setMinCrlNumber);
    300    PKIX_TEST_DECREF_AC(getMinCrlNumber);
    301    PKIX_TEST_DECREF_AC(crlNumber1String);
    302    PKIX_TEST_DECREF_AC(crlNumber99999String);
    303 
    304    PKIX_TEST_RETURN();
    305 }
    306 
    307 static void
    308 testDuplicate(PKIX_ComCRLSelParams *goodObject)
    309 {
    310 
    311    PKIX_ComCRLSelParams *dupObject = NULL;
    312    PKIX_Boolean result = PKIX_FALSE;
    313 
    314    PKIX_TEST_STD_VARS();
    315 
    316    subTest("PKIX_ComCRLSelParams_Duplicate");
    317    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Duplicate((PKIX_PL_Object *)goodObject,
    318                                                       (PKIX_PL_Object **)&dupObject,
    319                                                       plContext));
    320 
    321    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)goodObject,
    322                                                    (PKIX_PL_Object *)dupObject,
    323                                                    &result, plContext));
    324 
    325    if (result != PKIX_TRUE) {
    326        pkixTestErrorMsg =
    327            "unexpected Duplicate ComCRLSelParams mismatch";
    328    }
    329 
    330 cleanup:
    331 
    332    PKIX_TEST_DECREF_AC(dupObject);
    333    PKIX_TEST_RETURN();
    334 }
    335 
    336 static void
    337 printUsage(char *pName)
    338 {
    339    printf("\nUSAGE: %s <central-data-dir>\n\n", pName);
    340 }
    341 
    342 /* Functional tests for ComCRLSelParams public functions */
    343 
    344 int
    345 test_comcrlselparams(int argc, char *argv[])
    346 {
    347 
    348    char *dataCentralDir = NULL;
    349    char *goodInput = "yassir2yassir";
    350    PKIX_ComCRLSelParams *goodObject = NULL;
    351    PKIX_ComCRLSelParams *diffObject = NULL;
    352    PKIX_UInt32 actualMinorVersion;
    353    PKIX_UInt32 j = 0;
    354 
    355    PKIX_TEST_STD_VARS();
    356 
    357    startTests("ComCRLSelParams");
    358 
    359    PKIX_TEST_EXPECT_NO_ERROR(
    360        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
    361 
    362    if (argc < 2) {
    363        printUsage(argv[0]);
    364        return (0);
    365    }
    366 
    367    dataCentralDir = argv[j + 1];
    368 
    369    subTest("PKIX_ComCRLSelParams_Create");
    370 
    371    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_Create(&goodObject,
    372                                                          plContext));
    373 
    374    PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCRLSelParams_Create(&diffObject,
    375                                                          plContext));
    376 
    377    testIssuer(goodObject);
    378 
    379    testCertificateChecking(dataCentralDir, goodInput, goodObject);
    380 
    381    testDateAndTime(goodObject);
    382 
    383    testMaxMinCRLNumbers(goodObject);
    384 
    385    testDuplicate(goodObject);
    386 
    387    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject,
    388                                goodObject,
    389                                diffObject,
    390                                NULL,
    391                                ComCRLSelParams,
    392                                PKIX_TRUE);
    393 
    394 cleanup:
    395 
    396    PKIX_TEST_DECREF_AC(goodObject);
    397    PKIX_TEST_DECREF_AC(diffObject);
    398 
    399    PKIX_Shutdown(plContext);
    400 
    401    PKIX_TEST_RETURN();
    402 
    403    endTests("ComCRLSelParams");
    404 
    405    return (0);
    406 }