| OLD | NEW |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 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 | 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/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 /* | 4 /* |
| 5 * pkix_build.c | 5 * pkix_build.c |
| 6 * | 6 * |
| 7 * Top level buildChain function | 7 * Top level buildChain function |
| 8 * | 8 * |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1014 PKIX_Boolean chainRevalidationStage, | 1014 PKIX_Boolean chainRevalidationStage, |
| 1015 void *plContext) | 1015 void *plContext) |
| 1016 { | 1016 { |
| 1017 PKIX_List *checkers = NULL; | 1017 PKIX_List *checkers = NULL; |
| 1018 PKIX_List *initialPolicies = NULL; | 1018 PKIX_List *initialPolicies = NULL; |
| 1019 PKIX_List *reversedCertChain = NULL; | 1019 PKIX_List *reversedCertChain = NULL; |
| 1020 PKIX_List *buildCheckedCritExtOIDsList = NULL; | 1020 PKIX_List *buildCheckedCritExtOIDsList = NULL; |
| 1021 PKIX_ProcessingParams *procParams = NULL; | 1021 PKIX_ProcessingParams *procParams = NULL; |
| 1022 PKIX_PL_Cert *trustedCert = NULL; | 1022 PKIX_PL_Cert *trustedCert = NULL; |
| 1023 PKIX_PL_PublicKey *trustedPubKey = NULL; | 1023 PKIX_PL_PublicKey *trustedPubKey = NULL; |
| 1024 PKIX_PL_CertNameConstraints *trustedNC = NULL; |
| 1024 PKIX_CertChainChecker *sigChecker = NULL; | 1025 PKIX_CertChainChecker *sigChecker = NULL; |
| 1025 PKIX_CertChainChecker *policyChecker = NULL; | 1026 PKIX_CertChainChecker *policyChecker = NULL; |
| 1026 PKIX_CertChainChecker *userChecker = NULL; | 1027 PKIX_CertChainChecker *userChecker = NULL; |
| 1028 PKIX_CertChainChecker *nameConstraintsChecker = NULL; |
| 1027 PKIX_CertChainChecker *checker = NULL; | 1029 PKIX_CertChainChecker *checker = NULL; |
| 1028 PKIX_CertSelector *certSelector = NULL; | 1030 PKIX_CertSelector *certSelector = NULL; |
| 1029 PKIX_List *userCheckerExtOIDs = NULL; | 1031 PKIX_List *userCheckerExtOIDs = NULL; |
| 1030 PKIX_PL_OID *oid = NULL; | 1032 PKIX_PL_OID *oid = NULL; |
| 1031 PKIX_Boolean supportForwardChecking = PKIX_FALSE; | 1033 PKIX_Boolean supportForwardChecking = PKIX_FALSE; |
| 1032 PKIX_Boolean policyQualifiersRejected = PKIX_FALSE; | 1034 PKIX_Boolean policyQualifiersRejected = PKIX_FALSE; |
| 1033 PKIX_Boolean initialPolicyMappingInhibit = PKIX_FALSE; | 1035 PKIX_Boolean initialPolicyMappingInhibit = PKIX_FALSE; |
| 1034 PKIX_Boolean initialAnyPolicyInhibit = PKIX_FALSE; | 1036 PKIX_Boolean initialAnyPolicyInhibit = PKIX_FALSE; |
| 1035 PKIX_Boolean initialExplicitPolicy = PKIX_FALSE; | 1037 PKIX_Boolean initialExplicitPolicy = PKIX_FALSE; |
| 1036 PKIX_UInt32 numChainCerts; | 1038 PKIX_UInt32 numChainCerts; |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1185 (PKIX_PL_Object *)userChecker, | 1187 (PKIX_PL_Object *)userChecker, |
| 1186 plContext), | 1188 plContext), |
| 1187 PKIX_LISTAPPENDITEMFAILED); | 1189 PKIX_LISTAPPENDITEMFAILED); |
| 1188 } | 1190 } |
| 1189 | 1191 |
| 1190 PKIX_DECREF(userCheckerExtOIDs); | 1192 PKIX_DECREF(userCheckerExtOIDs); |
| 1191 PKIX_DECREF(userChecker); | 1193 PKIX_DECREF(userChecker); |
| 1192 } | 1194 } |
| 1193 } | 1195 } |
| 1194 | 1196 |
| 1195 /* Inabling post chain building signature check on the certs. */ | 1197 /* Enabling post chain building signature check on the certs. */ |
| 1196 PKIX_CHECK(PKIX_TrustAnchor_GetTrustedCert | 1198 PKIX_CHECK(PKIX_TrustAnchor_GetTrustedCert |
| 1197 (anchor, &trustedCert, plContext), | 1199 (anchor, &trustedCert, plContext), |
| 1198 PKIX_TRUSTANCHORGETTRUSTEDCERTFAILED); | 1200 PKIX_TRUSTANCHORGETTRUSTEDCERTFAILED); |
| 1199 | 1201 |
| 1200 PKIX_CHECK(PKIX_PL_Cert_GetSubjectPublicKey | 1202 PKIX_CHECK(PKIX_PL_Cert_GetSubjectPublicKey |
| 1201 (trustedCert, &trustedPubKey, plContext), | 1203 (trustedCert, &trustedPubKey, plContext), |
| 1202 PKIX_CERTGETSUBJECTPUBLICKEYFAILED); | 1204 PKIX_CERTGETSUBJECTPUBLICKEYFAILED); |
| 1203 | 1205 |
| 1204 PKIX_CHECK(pkix_SignatureChecker_Initialize | 1206 PKIX_CHECK(pkix_SignatureChecker_Initialize |
| 1205 (trustedPubKey, | 1207 (trustedPubKey, |
| 1206 numChainCerts, | 1208 numChainCerts, |
| 1207 &sigChecker, | 1209 &sigChecker, |
| 1208 plContext), | 1210 plContext), |
| 1209 PKIX_SIGNATURECHECKERINITIALIZEFAILED); | 1211 PKIX_SIGNATURECHECKERINITIALIZEFAILED); |
| 1210 | 1212 |
| 1211 PKIX_CHECK(PKIX_List_AppendItem | 1213 PKIX_CHECK(PKIX_List_AppendItem |
| 1212 (checkers, | 1214 (checkers, |
| 1213 (PKIX_PL_Object *)sigChecker, | 1215 (PKIX_PL_Object *)sigChecker, |
| 1214 plContext), | 1216 plContext), |
| 1215 PKIX_LISTAPPENDITEMFAILED); | 1217 PKIX_LISTAPPENDITEMFAILED); |
| 1216 | 1218 |
| 1219 /* Enabling post chain building name constraints check on the certs. */ |
| 1220 PKIX_CHECK(PKIX_TrustAnchor_GetNameConstraints |
| 1221 (anchor, &trustedNC, plContext), |
| 1222 PKIX_TRUSTANCHORGETNAMECONSTRAINTSFAILED); |
| 1223 |
| 1224 PKIX_CHECK(pkix_NameConstraintsChecker_Initialize |
| 1225 (trustedNC, numChainCerts, &nameConstraintsChecker, |
| 1226 plContext), |
| 1227 PKIX_NAMECONSTRAINTSCHECKERINITIALIZEFAILED); |
| 1228 |
| 1229 PKIX_CHECK(PKIX_List_AppendItem |
| 1230 (checkers, |
| 1231 (PKIX_PL_Object *)nameConstraintsChecker, |
| 1232 plContext), |
| 1233 PKIX_LISTAPPENDITEMFAILED); |
| 1234 |
| 1235 |
| 1217 PKIX_DECREF(state->reversedCertChain); | 1236 PKIX_DECREF(state->reversedCertChain); |
| 1218 PKIX_INCREF(reversedCertChain); | 1237 PKIX_INCREF(reversedCertChain); |
| 1219 state->reversedCertChain = reversedCertChain; | 1238 state->reversedCertChain = reversedCertChain; |
| 1220 PKIX_DECREF(state->checkedCritExtOIDs); | 1239 PKIX_DECREF(state->checkedCritExtOIDs); |
| 1221 PKIX_INCREF(buildCheckedCritExtOIDsList); | 1240 PKIX_INCREF(buildCheckedCritExtOIDsList); |
| 1222 state->checkedCritExtOIDs = buildCheckedCritExtOIDsList; | 1241 state->checkedCritExtOIDs = buildCheckedCritExtOIDsList; |
| 1223 PKIX_DECREF(state->checkerChain); | 1242 PKIX_DECREF(state->checkerChain); |
| 1224 state->checkerChain = checkers; | 1243 state->checkerChain = checkers; |
| 1225 checkers = NULL; | 1244 checkers = NULL; |
| 1226 state->certCheckedIndex = 0; | 1245 state->certCheckedIndex = 0; |
| 1227 state->checkerIndex = 0; | 1246 state->checkerIndex = 0; |
| 1228 state->revChecking = PKIX_FALSE; | 1247 state->revChecking = PKIX_FALSE; |
| 1229 | 1248 |
| 1230 | 1249 |
| 1231 cleanup: | 1250 cleanup: |
| 1232 | 1251 |
| 1233 PKIX_DECREF(oid); | 1252 PKIX_DECREF(oid); |
| 1234 PKIX_DECREF(reversedCertChain); | 1253 PKIX_DECREF(reversedCertChain); |
| 1235 PKIX_DECREF(buildCheckedCritExtOIDsList); | 1254 PKIX_DECREF(buildCheckedCritExtOIDsList); |
| 1236 PKIX_DECREF(checker); | 1255 PKIX_DECREF(checker); |
| 1237 PKIX_DECREF(checkers); | 1256 PKIX_DECREF(checkers); |
| 1238 PKIX_DECREF(initialPolicies); | 1257 PKIX_DECREF(initialPolicies); |
| 1239 PKIX_DECREF(trustedCert); | 1258 PKIX_DECREF(trustedCert); |
| 1240 PKIX_DECREF(trustedPubKey); | 1259 PKIX_DECREF(trustedPubKey); |
| 1241 PKIX_DECREF(certSelector); | 1260 PKIX_DECREF(certSelector); |
| 1242 PKIX_DECREF(sigChecker); | 1261 PKIX_DECREF(sigChecker); |
| 1262 PKIX_DECREF(trustedNC); |
| 1263 PKIX_DECREF(nameConstraintsChecker); |
| 1243 PKIX_DECREF(policyChecker); | 1264 PKIX_DECREF(policyChecker); |
| 1244 PKIX_DECREF(userChecker); | 1265 PKIX_DECREF(userChecker); |
| 1245 PKIX_DECREF(userCheckerExtOIDs); | 1266 PKIX_DECREF(userCheckerExtOIDs); |
| 1246 | 1267 |
| 1247 PKIX_RETURN(BUILD); | 1268 PKIX_RETURN(BUILD); |
| 1248 } | 1269 } |
| 1249 | 1270 |
| 1250 /* | 1271 /* |
| 1251 * FUNCTION: pkix_Build_ValidateEntireChain | 1272 * FUNCTION: pkix_Build_ValidateEntireChain |
| 1252 * DESCRIPTION: | 1273 * DESCRIPTION: |
| (...skipping 2573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3826 *pBuildResult = buildResult; | 3847 *pBuildResult = buildResult; |
| 3827 buildResult = NULL; | 3848 buildResult = NULL; |
| 3828 } | 3849 } |
| 3829 | 3850 |
| 3830 cleanup: | 3851 cleanup: |
| 3831 PKIX_DECREF(buildResult); | 3852 PKIX_DECREF(buildResult); |
| 3832 PKIX_DECREF(state); | 3853 PKIX_DECREF(state); |
| 3833 | 3854 |
| 3834 PKIX_RETURN(BUILD); | 3855 PKIX_RETURN(BUILD); |
| 3835 } | 3856 } |
| OLD | NEW |