test_valresult.c (5055B)
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_valresult.c 6 * 7 * Test ValidateResult 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_ValidateResult_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 testGetPublicKey( 34 PKIX_ValidateResult *goodObject, 35 PKIX_ValidateResult *equalObject) 36 { 37 38 PKIX_PL_PublicKey *goodPubKey = NULL; 39 PKIX_PL_PublicKey *equalPubKey = NULL; 40 41 PKIX_TEST_STD_VARS(); 42 subTest("PKIX_ValidateResult_GetPublicKey"); 43 44 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey(goodObject, &goodPubKey, plContext)); 45 46 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPublicKey(equalObject, &equalPubKey, plContext)); 47 48 testEqualsHelper((PKIX_PL_Object *)goodPubKey, 49 (PKIX_PL_Object *)equalPubKey, 50 PKIX_TRUE, 51 plContext); 52 53 cleanup: 54 55 PKIX_TEST_DECREF_AC(goodPubKey); 56 PKIX_TEST_DECREF_AC(equalPubKey); 57 58 PKIX_TEST_RETURN(); 59 } 60 61 static void 62 testGetTrustAnchor( 63 PKIX_ValidateResult *goodObject, 64 PKIX_ValidateResult *equalObject) 65 { 66 67 PKIX_TrustAnchor *goodAnchor = NULL; 68 PKIX_TrustAnchor *equalAnchor = NULL; 69 70 PKIX_TEST_STD_VARS(); 71 subTest("PKIX_ValidateResult_GetTrustAnchor"); 72 73 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor(goodObject, &goodAnchor, plContext)); 74 75 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetTrustAnchor(equalObject, &equalAnchor, plContext)); 76 77 testEqualsHelper((PKIX_PL_Object *)goodAnchor, 78 (PKIX_PL_Object *)equalAnchor, 79 PKIX_TRUE, 80 plContext); 81 82 cleanup: 83 84 PKIX_TEST_DECREF_AC(goodAnchor); 85 PKIX_TEST_DECREF_AC(equalAnchor); 86 87 PKIX_TEST_RETURN(); 88 } 89 90 static void 91 testGetPolicyTree( 92 PKIX_ValidateResult *goodObject, 93 PKIX_ValidateResult *equalObject) 94 { 95 96 PKIX_PolicyNode *goodTree = NULL; 97 PKIX_PolicyNode *equalTree = NULL; 98 99 PKIX_TEST_STD_VARS(); 100 subTest("PKIX_ValidateResult_GetPolicyTree"); 101 102 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree(goodObject, &goodTree, plContext)); 103 104 PKIX_TEST_EXPECT_NO_ERROR(PKIX_ValidateResult_GetPolicyTree(equalObject, &equalTree, plContext)); 105 106 if (goodTree) { 107 testEqualsHelper((PKIX_PL_Object *)goodTree, 108 (PKIX_PL_Object *)equalTree, 109 PKIX_TRUE, 110 plContext); 111 } else if (equalTree) { 112 pkixTestErrorMsg = "Mismatch: NULL and non-NULL Policy Trees"; 113 } 114 115 cleanup: 116 117 PKIX_TEST_DECREF_AC(goodTree); 118 PKIX_TEST_DECREF_AC(equalTree); 119 120 PKIX_TEST_RETURN(); 121 } 122 123 static void 124 printUsage(char *pName) 125 { 126 printf("\nUSAGE: %s <central-data-dir>\n\n", pName); 127 } 128 129 int 130 test_valresult(int argc, char *argv[]) 131 { 132 133 PKIX_ValidateResult *goodObject = NULL; 134 PKIX_ValidateResult *equalObject = NULL; 135 PKIX_ValidateResult *diffObject = NULL; 136 PKIX_UInt32 actualMinorVersion; 137 PKIX_UInt32 j = 0; 138 139 char *goodInput = "yassir2yassir"; 140 char *diffInput = "yassir2bcn"; 141 char *dirName = NULL; 142 143 char *expectedAscii = 144 "[\n" 145 "\tTrustAnchor: \t\t" 146 "[\n" 147 "\tTrusted CA Name: " 148 "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n" 149 "\tTrusted CA PublicKey: ANSI X9.57 DSA Signature\n" 150 "\tInitial Name Constraints:(null)\n" 151 "]\n" 152 "\tPubKey: \t\t" 153 "ANSI X9.57 DSA Signature\n" 154 "\tPolicyTree: \t\t(null)\n" 155 "]\n"; 156 157 PKIX_TEST_STD_VARS(); 158 159 startTests("ValidateResult"); 160 161 PKIX_TEST_EXPECT_NO_ERROR( 162 PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext)); 163 164 if (argc < 2) { 165 printUsage(argv[0]); 166 return (0); 167 } 168 169 dirName = argv[j + 1]; 170 171 subTest("pkix_ValidateResult_Create"); 172 173 goodObject = createValidateResult(dirName, goodInput, diffInput, plContext); 174 equalObject = createValidateResult(dirName, goodInput, diffInput, plContext); 175 diffObject = createValidateResult(dirName, diffInput, goodInput, plContext); 176 177 testGetPublicKey(goodObject, equalObject); 178 testGetTrustAnchor(goodObject, equalObject); 179 testGetPolicyTree(goodObject, equalObject); 180 181 PKIX_TEST_EQ_HASH_TOSTR_DUP(goodObject, 182 equalObject, 183 diffObject, 184 expectedAscii, 185 ValidateResult, 186 PKIX_FALSE); 187 188 testDestroy(goodObject, equalObject, diffObject); 189 190 cleanup: 191 192 PKIX_Shutdown(plContext); 193 194 PKIX_TEST_RETURN(); 195 196 endTests("ValidateResult"); 197 198 return (0); 199 }