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 }