annotate nss/lib/libpkix/pkix/checker/pkix_expirationchecker.c @ 3:150b72113545

Add DBM and legacydb support
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 05 Aug 2014 18:32:02 +0200
parents 1e5118fa0cb1
children
rev   line source
0
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
1 /* This Source Code Form is subject to the terms of the Mozilla Public
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
4 /*
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
5 * pkix_expirationchecker.c
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
6 *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
7 * Functions for expiration validation
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
8 *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
9 */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
10
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
11
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
12 #include "pkix_expirationchecker.h"
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
13
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
14 /* --Private-Functions-------------------------------------------- */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
15
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
16 /*
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
17 * FUNCTION: pkix_ExpirationChecker_Check
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
18 * (see comments for PKIX_CertChainChecker_CheckCallback in pkix_checker.h)
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
19 */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
20 PKIX_Error *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
21 pkix_ExpirationChecker_Check(
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
22 PKIX_CertChainChecker *checker,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
23 PKIX_PL_Cert *cert,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
24 PKIX_List *unresolvedCriticalExtensions,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
25 void **pNBIOContext,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
26 void *plContext)
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
27 {
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
28 PKIX_PL_Date *testDate = NULL;
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
29
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
30 PKIX_ENTER(CERTCHAINCHECKER, "pkix_ExpirationChecker_Check");
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
31 PKIX_NULLCHECK_THREE(checker, cert, pNBIOContext);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
32
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
33 *pNBIOContext = NULL; /* we never block on pending I/O */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
34
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
35 PKIX_CHECK(PKIX_CertChainChecker_GetCertChainCheckerState
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
36 (checker, (PKIX_PL_Object **)&testDate, plContext),
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
37 PKIX_CERTCHAINCHECKERGETCERTCHAINCHECKERSTATEFAILED);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
38
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
39 PKIX_CHECK(PKIX_PL_Cert_CheckValidity(cert, testDate, plContext),
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
40 PKIX_CERTCHECKVALIDITYFAILED);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
41
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
42 cleanup:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
43
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
44 PKIX_DECREF(testDate);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
45
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
46 PKIX_RETURN(CERTCHAINCHECKER);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
47
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
48 }
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
49
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
50 /*
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
51 * FUNCTION: pkix_ExpirationChecker_Initialize
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
52 * DESCRIPTION:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
53 *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
54 * Creates a new CertChainChecker and stores it at "pChecker", where it will
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
55 * used by pkix_ExpirationChecker_Check to check that the certificate has not
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
56 * expired with respect to the Date pointed to by "testDate." If "testDate"
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
57 * is NULL, then the CertChainChecker will check that a certificate has not
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
58 * expired with respect to the current date and time.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
59 *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
60 * PARAMETERS:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
61 * "testDate"
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
62 * Address of Date representing the point in time at which the cert is to
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
63 * be validated. If "testDate" is NULL, the current date and time is used.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
64 * "pChecker"
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
65 * Address where object pointer will be stored. Must be non-NULL.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
66 * "plContext"
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
67 * Platform-specific context pointer.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
68 * THREAD SAFETY:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
69 * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
70 * RETURNS:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
71 * Returns NULL if the function succeeds.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
72 * Returns a CertChainChecker Error if the function fails in a non-fatal way.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
73 * Returns a Fatal Error if the function fails in an unrecoverable way.
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
74 */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
75 PKIX_Error *
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
76 pkix_ExpirationChecker_Initialize(
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
77 PKIX_PL_Date *testDate,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
78 PKIX_CertChainChecker **pChecker,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
79 void *plContext)
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
80 {
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
81 PKIX_PL_Date *myDate = NULL;
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
82 PKIX_PL_Date *nowDate = NULL;
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
83
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
84 PKIX_ENTER(CERTCHAINCHECKER, "pkix_ExpirationChecker_Initialize");
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
85 PKIX_NULLCHECK_ONE(pChecker);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
86
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
87 /* if testDate is NULL, we use the current time */
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
88 if (!testDate){
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
89 PKIX_CHECK(PKIX_PL_Date_Create_UTCTime
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
90 (NULL, &nowDate, plContext),
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
91 PKIX_DATECREATEUTCTIMEFAILED);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
92 myDate = nowDate;
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
93 } else {
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
94 myDate = testDate;
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
95 }
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
96
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
97 PKIX_CHECK(PKIX_CertChainChecker_Create
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
98 (pkix_ExpirationChecker_Check,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
99 PKIX_TRUE,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
100 PKIX_FALSE,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
101 NULL,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
102 (PKIX_PL_Object *)myDate,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
103 pChecker,
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
104 plContext),
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
105 PKIX_CERTCHAINCHECKERCREATEFAILED);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
106
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
107 cleanup:
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
108
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
109 PKIX_DECREF(nowDate);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
110
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
111 PKIX_RETURN(CERTCHAINCHECKER);
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
112
1e5118fa0cb1 This is NSS with a Cmake Buildsyste
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
113 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)