tor-browser

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

test_generalname.c (3270B)


      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_generalname.c
      6 *
      7 * Test GeneralName Type
      8 *
      9 */
     10 
     11 #include "testutil.h"
     12 #include "testutil_nss.h"
     13 
     14 static void *plContext = NULL;
     15 
     16 static void
     17 createGeneralNames(PKIX_UInt32 nameType, char *goodInput, char *diffInput,
     18                   PKIX_PL_GeneralName **goodName,
     19                   PKIX_PL_GeneralName **equalName,
     20                   PKIX_PL_GeneralName **diffName)
     21 {
     22 
     23    subTest("PKIX_PL_GeneralName_Create <goodName>");
     24    *goodName = createGeneralName(nameType, goodInput, plContext);
     25 
     26    subTest("PKIX_PL_GeneralName_Create <equalName>");
     27    *equalName = createGeneralName(nameType, goodInput, plContext);
     28 
     29    subTest("PKIX_PL_GeneralName_Create <diffName>");
     30    *diffName = createGeneralName(nameType, diffInput, plContext);
     31 }
     32 
     33 static void
     34 testDestroy(void *goodObject, void *equalObject, void *diffObject)
     35 {
     36    PKIX_TEST_STD_VARS();
     37 
     38    subTest("PKIX_PL_GeneralName_Destroy");
     39 
     40    PKIX_TEST_DECREF_BC(goodObject);
     41    PKIX_TEST_DECREF_BC(equalObject);
     42    PKIX_TEST_DECREF_BC(diffObject);
     43 
     44 cleanup:
     45 
     46    PKIX_TEST_RETURN();
     47 }
     48 
     49 static void
     50 testNameType(PKIX_UInt32 nameType, char *goodInput, char *diffInput, char *expectedAscii)
     51 {
     52 
     53    PKIX_PL_GeneralName *goodName = NULL;
     54    PKIX_PL_GeneralName *equalName = NULL;
     55    PKIX_PL_GeneralName *diffName = NULL;
     56 
     57    createGeneralNames(nameType, goodInput, diffInput,
     58                       &goodName, &equalName, &diffName);
     59 
     60    PKIX_TEST_EQ_HASH_TOSTR_DUP(goodName,
     61                                equalName,
     62                                diffName,
     63                                expectedAscii,
     64                                GeneralName,
     65                                PKIX_TRUE);
     66 
     67    testDestroy(goodName, equalName, diffName);
     68 }
     69 
     70 int
     71 test_generalname(int argc, char *argv[])
     72 {
     73 
     74    char *goodInput = NULL;
     75    char *diffInput = NULL;
     76    PKIX_UInt32 actualMinorVersion;
     77    PKIX_UInt32 j = 0;
     78 
     79    PKIX_TEST_STD_VARS();
     80 
     81    startTests("GeneralName");
     82 
     83    PKIX_TEST_EXPECT_NO_ERROR(
     84        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
     85 
     86    goodInput = "john@sun.com";
     87    diffInput = "john@labs.com";
     88    testNameType(PKIX_RFC822_NAME, goodInput, diffInput, goodInput);
     89 
     90    goodInput = "example1.com";
     91    diffInput = "ex2.net";
     92    testNameType(PKIX_DNS_NAME, goodInput, diffInput, goodInput);
     93 
     94    goodInput = "cn=yassir, ou=labs, o=sun, c=us";
     95    diffInput = "cn=alice, ou=labs, o=sun, c=us";
     96    testNameType(PKIX_DIRECTORY_NAME,
     97                 goodInput,
     98                 diffInput,
     99                 "CN=yassir,OU=labs,O=sun,C=us");
    100 
    101    goodInput = "http://example1.com";
    102    diffInput = "http://ex2.net";
    103    testNameType(PKIX_URI_NAME, goodInput, diffInput, goodInput);
    104 
    105    goodInput = "1.2.840.11";
    106    diffInput = "1.2.840.115349";
    107    testNameType(PKIX_OID_NAME, goodInput, diffInput, goodInput);
    108 
    109    /*
    110     * We don't support creating PKIX_EDIPARTY_NAME,
    111     * PKIX_IP_NAME, OTHER_NAME, X400_ADDRESS from strings
    112     */
    113 
    114 cleanup:
    115 
    116    PKIX_Shutdown(plContext);
    117 
    118    PKIX_TEST_RETURN();
    119 
    120    endTests("GeneralName");
    121 
    122    return (0);
    123 }