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 }