File: | s/lib/libpkix/pkix_pl_nss/pki/pkix_pl_crlentry.c |
Warning: | line 414, column 25 Value stored to 'firstExtension' is never read |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
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 | * pkix_pl_crlentry.c |
6 | * |
7 | * CRLENTRY Function Definitions |
8 | * |
9 | */ |
10 | |
11 | #include "pkix_pl_crlentry.h" |
12 | |
13 | /* --Private-CRLEntry-Functions------------------------------------- */ |
14 | |
15 | /* |
16 | * FUNCTION: pkix_pl_CRLEntry_Destroy |
17 | * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) |
18 | */ |
19 | static PKIX_Error * |
20 | pkix_pl_CRLEntry_Destroy( |
21 | PKIX_PL_Object *object, |
22 | void *plContext) |
23 | { |
24 | PKIX_PL_CRLEntry *crlEntry = NULL((void*)0); |
25 | |
26 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Destroy")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Destroy" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
27 | PKIX_NULLCHECK_ONE(object)do { if ((object) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
28 | |
29 | PKIX_CHECK(pkix_CheckType(object, PKIX_CRLENTRY_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0) |
30 | PKIX_OBJECTNOTCRLENTRY)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0); |
31 | |
32 | crlEntry = (PKIX_PL_CRLEntry*)object; |
33 | |
34 | /* crlEntry->nssCrlEntry is freed by NSS when freeing CRL */ |
35 | crlEntry->userReasonCode = 0; |
36 | crlEntry->userReasonCodeAbsent = PKIX_FALSE((PKIX_Boolean) 0); |
37 | crlEntry->nssCrlEntry = NULL((void*)0); |
38 | PKIX_DECREF(crlEntry->serialNumber)do { if (crlEntry->serialNumber){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlEntry->serialNumber ), plContext); if (stdVars.aPkixTempResult) { PKIX_DoAddError (&stdVars, stdVars.aPkixTempResult, plContext); stdVars.aPkixTempResult = ((void*)0); } crlEntry->serialNumber = ((void*)0); } } while (0); |
39 | PKIX_DECREF(crlEntry->critExtOids)do { if (crlEntry->critExtOids){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlEntry->critExtOids ), plContext); if (stdVars.aPkixTempResult) { PKIX_DoAddError (&stdVars, stdVars.aPkixTempResult, plContext); stdVars.aPkixTempResult = ((void*)0); } crlEntry->critExtOids = ((void*)0); } } while (0); |
40 | |
41 | cleanup: |
42 | |
43 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
44 | } |
45 | |
46 | /* |
47 | * FUNCTION: pkix_pl_CRLEntry_ToString_Helper |
48 | * |
49 | * DESCRIPTION: |
50 | * Helper function that creates a string representation of the CRLEntry |
51 | * pointed to by "crlEntry" and stores it at "pString". |
52 | * |
53 | * PARAMETERS |
54 | * "crlEntry" |
55 | * Address of CRLEntry whose string representation is desired. |
56 | * Must be non-NULL. |
57 | * "pString" |
58 | * Address where object pointer will be stored. Must be non-NULL. |
59 | * "plContext" |
60 | * Platform-specific context pointer. |
61 | * THREAD SAFETY: |
62 | * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
63 | * RETURNS: |
64 | * Returns NULL if the function succeeds. |
65 | * Returns a CRLEntry Error if the function fails in a non-fatal way. |
66 | * Returns a Fatal Error if the function fails in an unrecoverable way. |
67 | */ |
68 | PKIX_Error * |
69 | pkix_pl_CRLEntry_ToString_Helper( |
70 | PKIX_PL_CRLEntry *crlEntry, |
71 | PKIX_PL_String **pString, |
72 | void *plContext) |
73 | { |
74 | char *asciiFormat = NULL((void*)0); |
75 | PKIX_List *critExtOIDs = NULL((void*)0); |
76 | PKIX_PL_String *crlEntryString = NULL((void*)0); |
77 | PKIX_PL_String *formatString = NULL((void*)0); |
78 | PKIX_PL_String *crlSerialNumberString = NULL((void*)0); |
79 | PKIX_PL_String *crlRevocationDateString = NULL((void*)0); |
80 | PKIX_PL_String *critExtOIDsString = NULL((void*)0); |
81 | PKIX_Int32 reasonCode = 0; |
82 | |
83 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_ToString_Helper")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_ToString_Helper" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
84 | PKIX_NULLCHECK_FOURdo { if (((crlEntry) == ((void*)0)) || ((crlEntry->serialNumber ) == ((void*)0)) || ((crlEntry->nssCrlEntry) == ((void*)0) ) || ((pString) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0) |
85 | (crlEntry,do { if (((crlEntry) == ((void*)0)) || ((crlEntry->serialNumber ) == ((void*)0)) || ((crlEntry->nssCrlEntry) == ((void*)0) ) || ((pString) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0) |
86 | crlEntry->serialNumber,do { if (((crlEntry) == ((void*)0)) || ((crlEntry->serialNumber ) == ((void*)0)) || ((crlEntry->nssCrlEntry) == ((void*)0) ) || ((pString) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0) |
87 | crlEntry->nssCrlEntry,do { if (((crlEntry) == ((void*)0)) || ((crlEntry->serialNumber ) == ((void*)0)) || ((crlEntry->nssCrlEntry) == ((void*)0) ) || ((pString) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0) |
88 | pString)do { if (((crlEntry) == ((void*)0)) || ((crlEntry->serialNumber ) == ((void*)0)) || ((crlEntry->nssCrlEntry) == ((void*)0) ) || ((pString) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
89 | |
90 | asciiFormat = |
91 | "\n\t[\n" |
92 | "\tSerialNumber: %s\n" |
93 | "\tReasonCode: %d\n" |
94 | "\tRevocationDate: %s\n" |
95 | "\tCritExtOIDs: %s\n" |
96 | "\t]\n\t"; |
97 | |
98 | PKIX_CHECK(PKIX_PL_String_Createdo { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
99 | (PKIX_ESCASCII,do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
100 | asciiFormat,do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
101 | 0,do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
102 | &formatString,do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
103 | plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0) |
104 | PKIX_STRINGCREATEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, asciiFormat , 0, &formatString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup ; } } while (0); |
105 | |
106 | /* SerialNumber */ |
107 | PKIX_CHECK(PKIX_PL_Object_ToStringdo { stdVars.aPkixErrorResult = (PKIX_PL_Object_ToString ((PKIX_PL_Object *)crlEntry->serialNumber, &crlSerialNumberString, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTTOSTRINGHELPERFAILED; goto cleanup; } } while ( 0) |
108 | ((PKIX_PL_Object *)crlEntry->serialNumber,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_ToString ((PKIX_PL_Object *)crlEntry->serialNumber, &crlSerialNumberString, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTTOSTRINGHELPERFAILED; goto cleanup; } } while ( 0) |
109 | &crlSerialNumberString,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_ToString ((PKIX_PL_Object *)crlEntry->serialNumber, &crlSerialNumberString, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTTOSTRINGHELPERFAILED; goto cleanup; } } while ( 0) |
110 | plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_ToString ((PKIX_PL_Object *)crlEntry->serialNumber, &crlSerialNumberString, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTTOSTRINGHELPERFAILED; goto cleanup; } } while ( 0) |
111 | PKIX_BIGINTTOSTRINGHELPERFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_Object_ToString ((PKIX_PL_Object *)crlEntry->serialNumber, &crlSerialNumberString, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTTOSTRINGHELPERFAILED; goto cleanup; } } while ( 0); |
112 | |
113 | /* RevocationDate - No Date object created, use nss data directly */ |
114 | PKIX_CHECK(pkix_pl_Date_ToString_Helperdo { stdVars.aPkixErrorResult = (pkix_pl_Date_ToString_Helper (&(crlEntry->nssCrlEntry->revocationDate), &crlRevocationDateString , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_DATETOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
115 | (&(crlEntry->nssCrlEntry->revocationDate),do { stdVars.aPkixErrorResult = (pkix_pl_Date_ToString_Helper (&(crlEntry->nssCrlEntry->revocationDate), &crlRevocationDateString , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_DATETOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
116 | &crlRevocationDateString,do { stdVars.aPkixErrorResult = (pkix_pl_Date_ToString_Helper (&(crlEntry->nssCrlEntry->revocationDate), &crlRevocationDateString , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_DATETOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
117 | plContext),do { stdVars.aPkixErrorResult = (pkix_pl_Date_ToString_Helper (&(crlEntry->nssCrlEntry->revocationDate), &crlRevocationDateString , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_DATETOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
118 | PKIX_DATETOSTRINGHELPERFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_Date_ToString_Helper (&(crlEntry->nssCrlEntry->revocationDate), &crlRevocationDateString , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_DATETOSTRINGHELPERFAILED; goto cleanup; } } while (0); |
119 | |
120 | /* CriticalExtensionOIDs */ |
121 | PKIX_CHECK(PKIX_PL_CRLEntry_GetCriticalExtensionOIDsdo { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCriticalExtensionOIDs (crlEntry, &critExtOIDs, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0) |
122 | (crlEntry, &critExtOIDs, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCriticalExtensionOIDs (crlEntry, &critExtOIDs, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0) |
123 | PKIX_CRLENTRYGETCRITICALEXTENSIONOIDSFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCriticalExtensionOIDs (crlEntry, &critExtOIDs, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0); |
124 | |
125 | PKIX_TOSTRING(critExtOIDs, &critExtOIDsString, plContext,do { int descNum; if ((critExtOIDs) != ((void*)0)) { stdVars. aPkixErrorResult = PKIX_PL_Object_ToString((PKIX_PL_Object *) (critExtOIDs), (&critExtOIDsString), (plContext)); descNum = (PKIX_LISTTOSTRINGFAILED); } else { stdVars.aPkixErrorResult = PKIX_PL_String_Create(0, "(null)", 0, (&critExtOIDsString ), (plContext)); descNum = PKIX_STRINGCREATEFAILED; } do { stdVars .aPkixErrorResult = (stdVars.aPkixErrorResult); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = descNum; goto cleanup; } } while ( 0); } while (0) |
126 | PKIX_LISTTOSTRINGFAILED)do { int descNum; if ((critExtOIDs) != ((void*)0)) { stdVars. aPkixErrorResult = PKIX_PL_Object_ToString((PKIX_PL_Object *) (critExtOIDs), (&critExtOIDsString), (plContext)); descNum = (PKIX_LISTTOSTRINGFAILED); } else { stdVars.aPkixErrorResult = PKIX_PL_String_Create(0, "(null)", 0, (&critExtOIDsString ), (plContext)); descNum = PKIX_STRINGCREATEFAILED; } do { stdVars .aPkixErrorResult = (stdVars.aPkixErrorResult); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = descNum; goto cleanup; } } while ( 0); } while (0); |
127 | |
128 | /* Revocation Reason Code */ |
129 | PKIX_CHECK(PKIX_PL_CRLEntry_GetCRLEntryReasonCodedo { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0) |
130 | (crlEntry, &reasonCode, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0) |
131 | PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0); |
132 | |
133 | PKIX_CHECK(PKIX_PL_Sprintfdo { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
134 | (&crlEntryString,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
135 | plContext,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
136 | formatString,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
137 | crlSerialNumberString,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
138 | reasonCode,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
139 | crlRevocationDateString,do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
140 | critExtOIDsString),do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0) |
141 | PKIX_SPRINTFFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_Sprintf (&crlEntryString , plContext, formatString, crlSerialNumberString, reasonCode, crlRevocationDateString, critExtOIDsString)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_SPRINTFFAILED; goto cleanup; } } while (0); |
142 | |
143 | *pString = crlEntryString; |
144 | |
145 | cleanup: |
146 | |
147 | PKIX_DECREF(critExtOIDs)do { if (critExtOIDs){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(critExtOIDs), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } critExtOIDs = ((void *)0); } } while (0); |
148 | PKIX_DECREF(crlSerialNumberString)do { if (crlSerialNumberString){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlSerialNumberString), plContext); if ( stdVars.aPkixTempResult) { PKIX_DoAddError(&stdVars, stdVars .aPkixTempResult, plContext); stdVars.aPkixTempResult = ((void *)0); } crlSerialNumberString = ((void*)0); } } while (0); |
149 | PKIX_DECREF(crlRevocationDateString)do { if (crlRevocationDateString){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlRevocationDateString), plContext); if (stdVars.aPkixTempResult) { PKIX_DoAddError(&stdVars, stdVars .aPkixTempResult, plContext); stdVars.aPkixTempResult = ((void *)0); } crlRevocationDateString = ((void*)0); } } while (0); |
150 | PKIX_DECREF(critExtOIDsString)do { if (critExtOIDsString){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(critExtOIDsString), plContext); if (stdVars .aPkixTempResult) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult , plContext); stdVars.aPkixTempResult = ((void*)0); } critExtOIDsString = ((void*)0); } } while (0); |
151 | PKIX_DECREF(formatString)do { if (formatString){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(formatString), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } formatString = ((void *)0); } } while (0); |
152 | |
153 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
154 | } |
155 | |
156 | /* |
157 | * FUNCTION: pkix_pl_CRLEntry_ToString |
158 | * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) |
159 | */ |
160 | static PKIX_Error * |
161 | pkix_pl_CRLEntry_ToString( |
162 | PKIX_PL_Object *object, |
163 | PKIX_PL_String **pString, |
164 | void *plContext) |
165 | { |
166 | PKIX_PL_String *crlEntryString = NULL((void*)0); |
167 | PKIX_PL_CRLEntry *crlEntry = NULL((void*)0); |
168 | |
169 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_ToString")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_ToString" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
170 | PKIX_NULLCHECK_TWO(object, pString)do { if (((object) == ((void*)0)) || ((pString) == ((void*)0) )){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars. aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); |
171 | |
172 | PKIX_CHECK(pkix_CheckType(object, PKIX_CRLENTRY_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0) |
173 | PKIX_OBJECTNOTCRLENTRY)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0); |
174 | |
175 | crlEntry = (PKIX_PL_CRLEntry *) object; |
176 | |
177 | PKIX_CHECK(pkix_pl_CRLEntry_ToString_Helperdo { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_ToString_Helper (crlEntry, &crlEntryString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYTOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
178 | (crlEntry, &crlEntryString, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_ToString_Helper (crlEntry, &crlEntryString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYTOSTRINGHELPERFAILED; goto cleanup; } } while (0) |
179 | PKIX_CRLENTRYTOSTRINGHELPERFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_ToString_Helper (crlEntry, &crlEntryString, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYTOSTRINGHELPERFAILED; goto cleanup; } } while (0); |
180 | |
181 | *pString = crlEntryString; |
182 | |
183 | cleanup: |
184 | |
185 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
186 | } |
187 | |
188 | /* |
189 | * FUNCTION: pkix_pl_CRLEntry_Extensions_Hashcode |
190 | * DESCRIPTION: |
191 | * |
192 | * For each CRL Entry extension stored at NSS structure CERTCertExtension, |
193 | * get its derbyte data and do the hash. |
194 | * |
195 | * PARAMETERS |
196 | * "extensions" |
197 | * Address of arrray of CERTCertExtension whose hash value is desired. |
198 | * Must be non-NULL. |
199 | * "pHashValue" |
200 | * Address where the final hash value is returned. Must be non-NULL. |
201 | * "plContext" |
202 | * Platform-specific context pointer. |
203 | * THREAD SAFETY: |
204 | * Conditional Thread Safe |
205 | * Though the value of extensions once created is not supposed to change, |
206 | * it may be de-allocated while we are accessing it. But since we are |
207 | * validating the object, it is unlikely we or someone is de-allocating |
208 | * at the moment. |
209 | * RETURNS: |
210 | * Returns NULL if the function succeeds. |
211 | * Returns an OID Error if the function fails in a non-fatal way. |
212 | * Returns a Fatal Error if the function fails in an unrecoverable way. |
213 | */ |
214 | static PKIX_Error * |
215 | pkix_pl_CRLEntry_Extensions_Hashcode( |
216 | CERTCertExtension **extensions, |
217 | PKIX_UInt32 *pHashValue, |
218 | void *plContext) |
219 | { |
220 | CERTCertExtension *extension = NULL((void*)0); |
221 | PLArenaPool *arena = NULL((void*)0); |
222 | PKIX_UInt32 extHash = 0; |
223 | PKIX_UInt32 hashValue = 0; |
224 | SECItem *derBytes = NULL((void*)0); |
225 | SECItem *resultSecItem = NULL((void*)0); |
226 | |
227 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Extensions_Hashcode")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Extensions_Hashcode" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
228 | PKIX_NULLCHECK_TWO(extensions, pHashValue)do { if (((extensions) == ((void*)0)) || ((pHashValue) == ((void *)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); |
229 | |
230 | if (extensions) { |
231 | |
232 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_NewArena\n"); |
233 | arena = PORT_NewArenaPORT_NewArena_Util(DER_DEFAULT_CHUNKSIZE(2048)); |
234 | if (arena == NULL((void*)0)) { |
235 | PKIX_ERROR(PKIX_OUTOFMEMORY){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_OUTOFMEMORY, ((void*)0), stdVars.aPkixType, 2, plContext ); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_OUTOFMEMORY; goto cleanup; }; |
236 | } |
237 | |
238 | while (*extensions) { |
239 | |
240 | extension = *extensions++; |
241 | |
242 | PKIX_NULLCHECK_ONE(extension)do { if ((extension) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
243 | |
244 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_ArenaZNew\n"); |
245 | derBytes = PORT_ArenaZNew(arena, SECItem)(SECItem *)PORT_ArenaZAlloc_Util(arena, sizeof(SECItem)); |
246 | if (derBytes == NULL((void*)0)) { |
247 | PKIX_ERROR(PKIX_PORTARENAALLOCFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_PORTARENAALLOCFAILED, ((void*)0), stdVars.aPkixType, 2 , plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_PORTARENAALLOCFAILED; goto cleanup; }; |
248 | } |
249 | |
250 | PKIX_CRLENTRY_DEBUG |
251 | ("\t\tCalling SEC_ASN1EncodeItem\n"); |
252 | resultSecItem = SEC_ASN1EncodeItemSEC_ASN1EncodeItem_Util |
253 | (arena, |
254 | derBytes, |
255 | extension, |
256 | CERT_CertExtensionTemplate); |
257 | |
258 | if (resultSecItem == NULL((void*)0)){ |
259 | PKIX_ERROR(PKIX_SECASN1ENCODEITEMFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_SECASN1ENCODEITEMFAILED, ((void*)0), stdVars.aPkixType , 2, plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_SECASN1ENCODEITEMFAILED; goto cleanup; }; |
260 | } |
261 | |
262 | PKIX_CHECK(pkix_hashdo { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) |
263 | (derBytes->data,do { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) |
264 | derBytes->len,do { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) |
265 | &extHash,do { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) |
266 | plContext),do { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) |
267 | PKIX_HASHFAILED)do { stdVars.aPkixErrorResult = (pkix_hash (derBytes->data , derBytes->len, &extHash, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0); |
268 | |
269 | hashValue += (extHash << 7); |
270 | |
271 | } |
272 | } |
273 | |
274 | *pHashValue = hashValue; |
275 | |
276 | cleanup: |
277 | |
278 | if (arena){ |
279 | /* Note that freeing the arena also frees derBytes */ |
280 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_FreeArena\n"); |
281 | PORT_FreeArenaPORT_FreeArena_Util(arena, PR_FALSE0); |
282 | arena = NULL((void*)0); |
283 | } |
284 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
285 | } |
286 | |
287 | /* |
288 | * FUNCTION: pkix_pl_CRLEntry_Hashcode |
289 | * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) |
290 | */ |
291 | static PKIX_Error * |
292 | pkix_pl_CRLEntry_Hashcode( |
293 | PKIX_PL_Object *object, |
294 | PKIX_UInt32 *pHashcode, |
295 | void *plContext) |
296 | { |
297 | SECItem *nssDate = NULL((void*)0); |
298 | PKIX_PL_CRLEntry *crlEntry = NULL((void*)0); |
299 | PKIX_UInt32 crlEntryHash; |
300 | PKIX_UInt32 hashValue; |
301 | PKIX_Int32 reasonCode = 0; |
302 | |
303 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Hashcode")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Hashcode" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
304 | PKIX_NULLCHECK_TWO(object, pHashcode)do { if (((object) == ((void*)0)) || ((pHashcode) == ((void*) 0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); |
305 | |
306 | PKIX_CHECK(pkix_CheckType(object, PKIX_CRLENTRY_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0) |
307 | PKIX_OBJECTNOTCRLENTRY)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTCRLENTRY; goto cleanup; } } while (0); |
308 | |
309 | crlEntry = (PKIX_PL_CRLEntry *)object; |
310 | |
311 | PKIX_NULLCHECK_ONE(crlEntry->nssCrlEntry)do { if ((crlEntry->nssCrlEntry) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
312 | nssDate = &(crlEntry->nssCrlEntry->revocationDate); |
313 | |
314 | PKIX_NULLCHECK_ONE(nssDate->data)do { if ((nssDate->data) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
315 | |
316 | PKIX_CHECK(pkix_hashdo { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0) |
317 | ((const unsigned char *)nssDate->data,do { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0) |
318 | nssDate->len,do { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0) |
319 | &crlEntryHash,do { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0) |
320 | plContext),do { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0) |
321 | PKIX_ERRORGETTINGHASHCODE)do { stdVars.aPkixErrorResult = (pkix_hash ((const unsigned char *)nssDate->data, nssDate->len, &crlEntryHash, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_ERRORGETTINGHASHCODE; goto cleanup; } } while (0); |
322 | |
323 | PKIX_CHECK(PKIX_PL_Object_Hashcodedo { stdVars.aPkixErrorResult = (PKIX_PL_Object_Hashcode ((PKIX_PL_Object *)crlEntry->serialNumber, &hashValue, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTHASHCODEFAILED ; goto cleanup; } } while (0) |
324 | ((PKIX_PL_Object *)crlEntry->serialNumber,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Hashcode ((PKIX_PL_Object *)crlEntry->serialNumber, &hashValue, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTHASHCODEFAILED ; goto cleanup; } } while (0) |
325 | &hashValue,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Hashcode ((PKIX_PL_Object *)crlEntry->serialNumber, &hashValue, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTHASHCODEFAILED ; goto cleanup; } } while (0) |
326 | plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Hashcode ((PKIX_PL_Object *)crlEntry->serialNumber, &hashValue, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTHASHCODEFAILED ; goto cleanup; } } while (0) |
327 | PKIX_OBJECTHASHCODEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Hashcode ((PKIX_PL_Object *)crlEntry->serialNumber, &hashValue, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTHASHCODEFAILED ; goto cleanup; } } while (0); |
328 | |
329 | crlEntryHash += (hashValue << 7); |
330 | |
331 | hashValue = 0; |
332 | |
333 | if (crlEntry->nssCrlEntry->extensions) { |
334 | |
335 | PKIX_CHECK(pkix_pl_CRLEntry_Extensions_Hashcodedo { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Hashcode (crlEntry->nssCrlEntry->extensions, &hashValue, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSHASHCODEFAILED; goto cleanup; } } while (0) |
336 | (crlEntry->nssCrlEntry->extensions, &hashValue, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Hashcode (crlEntry->nssCrlEntry->extensions, &hashValue, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSHASHCODEFAILED; goto cleanup; } } while (0) |
337 | PKIX_CRLENTRYEXTENSIONSHASHCODEFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Hashcode (crlEntry->nssCrlEntry->extensions, &hashValue, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSHASHCODEFAILED; goto cleanup; } } while (0); |
338 | } |
339 | |
340 | crlEntryHash += (hashValue << 7); |
341 | |
342 | PKIX_CHECK(PKIX_PL_CRLEntry_GetCRLEntryReasonCodedo { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0) |
343 | (crlEntry, &reasonCode, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0) |
344 | PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_CRLEntry_GetCRLEntryReasonCode (crlEntry, &reasonCode, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_CRLENTRYGETCRLENTRYREASONCODEFAILED ; goto cleanup; } } while (0); |
345 | |
346 | crlEntryHash += (reasonCode + 777) << 3; |
347 | |
348 | *pHashcode = crlEntryHash; |
349 | |
350 | cleanup: |
351 | |
352 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
353 | } |
354 | |
355 | /* |
356 | * FUNCTION: pkix_pl_CRLENTRY_Extensions_Equals |
357 | * DESCRIPTION: |
358 | * |
359 | * Compare each extension's DERbyte data in "firstExtensions" with extension |
360 | * in "secondExtensions" in sequential order and store the result in |
361 | * "pResult". |
362 | * |
363 | * PARAMETERS |
364 | * "firstExtensions" |
365 | * Address of first NSS structure CERTCertExtension to be compared. |
366 | * Must be non-NULL. |
367 | * "secondExtensions" |
368 | * Address of second NSS structure CERTCertExtension to be compared. |
369 | * Must be non-NULL. |
370 | * "pResult" |
371 | * Address where the comparison result is returned. Must be non-NULL. |
372 | * "plContext" |
373 | * Platform-specific context pointer. |
374 | * THREAD SAFETY: |
375 | * Conditionally Thread Safe |
376 | * Though the value of extensions once created is not supposed to change, |
377 | * it may be de-allocated while we are accessing it. But since we are |
378 | * validating the object, it is unlikely we or someone is de-allocating |
379 | * at the moment. |
380 | * RETURNS: |
381 | * Returns NULL if the function succeeds. |
382 | * Returns an OID Error if the function fails in a non-fatal way. |
383 | * Returns a Fatal Error if the function fails in an unrecoverable way. |
384 | */ |
385 | static PKIX_Error * |
386 | pkix_pl_CRLEntry_Extensions_Equals( |
387 | CERTCertExtension **extensions1, |
388 | CERTCertExtension **extensions2, |
389 | PKIX_Boolean *pResult, |
390 | void *plContext) |
391 | { |
392 | CERTCertExtension **firstExtensions; |
393 | CERTCertExtension **secondExtensions; |
394 | CERTCertExtension *firstExtension = NULL((void*)0); |
395 | CERTCertExtension *secondExtension = NULL((void*)0); |
396 | PLArenaPool *arena = NULL((void*)0); |
397 | PKIX_Boolean cmpResult = PKIX_FALSE((PKIX_Boolean) 0); |
398 | SECItem *firstDerBytes = NULL((void*)0); |
399 | SECItem *secondDerBytes = NULL((void*)0); |
400 | SECItem *firstResultSecItem = NULL((void*)0); |
401 | SECItem *secondResultSecItem = NULL((void*)0); |
402 | PKIX_UInt32 firstNumExt = 0; |
403 | PKIX_UInt32 secondNumExt = 0; |
404 | SECComparison secResult; |
405 | |
406 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Extensions_Equals")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Extensions_Equals" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
407 | PKIX_NULLCHECK_THREE(extensions1, extensions2, pResult)do { if (((extensions1) == ((void*)0)) || ((extensions2) == ( (void*)0)) || ((pResult) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
408 | |
409 | firstExtensions = extensions1; |
410 | secondExtensions = extensions2; |
411 | |
412 | if (firstExtensions) { |
413 | while (*firstExtensions) { |
414 | firstExtension = *firstExtensions++; |
Value stored to 'firstExtension' is never read | |
415 | firstNumExt++; |
416 | } |
417 | } |
418 | |
419 | if (secondExtensions) { |
420 | while (*secondExtensions) { |
421 | secondExtension = *secondExtensions++; |
422 | secondNumExt++; |
423 | } |
424 | } |
425 | |
426 | if (firstNumExt != secondNumExt) { |
427 | *pResult = PKIX_FALSE((PKIX_Boolean) 0); |
428 | goto cleanup; |
429 | } |
430 | |
431 | if (firstNumExt == 0 && secondNumExt == 0) { |
432 | *pResult = PKIX_TRUE((PKIX_Boolean) 1); |
433 | goto cleanup; |
434 | } |
435 | |
436 | /* now have equal number, but non-zero extension items to compare */ |
437 | |
438 | firstExtensions = extensions1; |
439 | secondExtensions = extensions2; |
440 | |
441 | cmpResult = PKIX_TRUE((PKIX_Boolean) 1); |
442 | |
443 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_NewArena\n"); |
444 | arena = PORT_NewArenaPORT_NewArena_Util(DER_DEFAULT_CHUNKSIZE(2048)*2); |
445 | if (arena == NULL((void*)0)) { |
446 | PKIX_ERROR(PKIX_OUTOFMEMORY){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_OUTOFMEMORY, ((void*)0), stdVars.aPkixType, 2, plContext ); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_OUTOFMEMORY; goto cleanup; }; |
447 | } |
448 | |
449 | while (firstNumExt--) { |
450 | |
451 | firstExtension = *firstExtensions++; |
452 | secondExtension = *secondExtensions++; |
453 | |
454 | PKIX_NULLCHECK_TWO(firstExtension, secondExtension)do { if (((firstExtension) == ((void*)0)) || ((secondExtension ) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn (&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext );; } } while (0); |
455 | |
456 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_ArenaZNew\n"); |
457 | firstDerBytes = PORT_ArenaZNew(arena, SECItem)(SECItem *)PORT_ArenaZAlloc_Util(arena, sizeof(SECItem)); |
458 | if (firstDerBytes == NULL((void*)0)) { |
459 | PKIX_ERROR(PKIX_PORTARENAALLOCFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_PORTARENAALLOCFAILED, ((void*)0), stdVars.aPkixType, 2 , plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_PORTARENAALLOCFAILED; goto cleanup; }; |
460 | } |
461 | |
462 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_ArenaZNew\n"); |
463 | secondDerBytes = PORT_ArenaZNew(arena, SECItem)(SECItem *)PORT_ArenaZAlloc_Util(arena, sizeof(SECItem)); |
464 | if (secondDerBytes == NULL((void*)0)) { |
465 | PKIX_ERROR(PKIX_PORTARENAALLOCFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_PORTARENAALLOCFAILED, ((void*)0), stdVars.aPkixType, 2 , plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_PORTARENAALLOCFAILED; goto cleanup; }; |
466 | } |
467 | |
468 | PKIX_CRLENTRY_DEBUG |
469 | ("\t\tCalling SEC_ASN1EncodeItem\n"); |
470 | firstResultSecItem = SEC_ASN1EncodeItemSEC_ASN1EncodeItem_Util |
471 | (arena, |
472 | firstDerBytes, |
473 | firstExtension, |
474 | CERT_CertExtensionTemplate); |
475 | |
476 | if (firstResultSecItem == NULL((void*)0)){ |
477 | PKIX_ERROR(PKIX_SECASN1ENCODEITEMFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_SECASN1ENCODEITEMFAILED, ((void*)0), stdVars.aPkixType , 2, plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_SECASN1ENCODEITEMFAILED; goto cleanup; }; |
478 | } |
479 | |
480 | PKIX_CRLENTRY_DEBUG |
481 | ("\t\tCalling SEC_ASN1EncodeItem\n"); |
482 | secondResultSecItem = SEC_ASN1EncodeItemSEC_ASN1EncodeItem_Util |
483 | (arena, |
484 | secondDerBytes, |
485 | secondExtension, |
486 | CERT_CertExtensionTemplate); |
487 | |
488 | if (secondResultSecItem == NULL((void*)0)){ |
489 | PKIX_ERROR(PKIX_SECASN1ENCODEITEMFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_SECASN1ENCODEITEMFAILED, ((void*)0), stdVars.aPkixType , 2, plContext); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_SECASN1ENCODEITEMFAILED; goto cleanup; }; |
490 | } |
491 | |
492 | PKIX_CRLENTRY_DEBUG("\t\tCalling SECITEM_CompareItem\n"); |
493 | secResult = SECITEM_CompareItemSECITEM_CompareItem_Util |
494 | (firstResultSecItem, secondResultSecItem); |
495 | |
496 | if (secResult != SECEqual) { |
497 | cmpResult = PKIX_FALSE((PKIX_Boolean) 0); |
498 | break; |
499 | } |
500 | |
501 | } |
502 | |
503 | *pResult = cmpResult; |
504 | |
505 | cleanup: |
506 | |
507 | if (arena){ |
508 | /* Note that freeing the arena also frees derBytes */ |
509 | PKIX_CRLENTRY_DEBUG("\t\tCalling PORT_FreeArena\n"); |
510 | PORT_FreeArenaPORT_FreeArena_Util(arena, PR_FALSE0); |
511 | arena = NULL((void*)0); |
512 | } |
513 | |
514 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
515 | } |
516 | |
517 | /* |
518 | * FUNCTION: pkix_pl_CRLEntry_Equals |
519 | * (see comments for PKIX_PL_Equals_Callback in pkix_pl_system.h) |
520 | */ |
521 | static PKIX_Error * |
522 | pkix_pl_CRLEntry_Equals( |
523 | PKIX_PL_Object *firstObject, |
524 | PKIX_PL_Object *secondObject, |
525 | PKIX_Boolean *pResult, |
526 | void *plContext) |
527 | { |
528 | PKIX_PL_CRLEntry *firstCrlEntry = NULL((void*)0); |
529 | PKIX_PL_CRLEntry *secondCrlEntry = NULL((void*)0); |
530 | PKIX_UInt32 secondType; |
531 | PKIX_Boolean cmpResult = PKIX_FALSE((PKIX_Boolean) 0); |
532 | |
533 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Equals")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Equals"} ; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
534 | PKIX_NULLCHECK_THREE(firstObject, secondObject, pResult)do { if (((firstObject) == ((void*)0)) || ((secondObject) == ( (void*)0)) || ((pResult) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
535 | |
536 | /* test that firstObject is a CRLEntry */ |
537 | PKIX_CHECK(pkix_CheckType(firstObject, PKIX_CRLENTRY_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(firstObject, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_FIRSTOBJECTNOTCRLENTRY; goto cleanup; } } while (0) |
538 | PKIX_FIRSTOBJECTNOTCRLENTRY)do { stdVars.aPkixErrorResult = (pkix_CheckType(firstObject, PKIX_CRLENTRY_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_FIRSTOBJECTNOTCRLENTRY; goto cleanup; } } while (0); |
539 | |
540 | firstCrlEntry = (PKIX_PL_CRLEntry *)firstObject; |
541 | secondCrlEntry = (PKIX_PL_CRLEntry *)secondObject; |
542 | |
543 | PKIX_NULLCHECK_TWOdo { if (((firstCrlEntry->nssCrlEntry) == ((void*)0)) || ( (secondCrlEntry->nssCrlEntry) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0) |
544 | (firstCrlEntry->nssCrlEntry, secondCrlEntry->nssCrlEntry)do { if (((firstCrlEntry->nssCrlEntry) == ((void*)0)) || ( (secondCrlEntry->nssCrlEntry) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
545 | |
546 | /* |
547 | * Since we know firstObject is a CRLEntry, if both references are |
548 | * identical, they must be equal |
549 | */ |
550 | if (firstCrlEntry == secondCrlEntry){ |
551 | *pResult = PKIX_TRUE((PKIX_Boolean) 1); |
552 | goto cleanup; |
553 | } |
554 | |
555 | /* |
556 | * If secondCrlEntry isn't a CRL Entry, we don't throw an error. |
557 | * We simply return a Boolean result of FALSE |
558 | */ |
559 | *pResult = PKIX_FALSE((PKIX_Boolean) 0); |
560 | PKIX_CHECK(PKIX_PL_Object_GetTypedo { stdVars.aPkixErrorResult = (PKIX_PL_Object_GetType ((PKIX_PL_Object *)secondCrlEntry, &secondType, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTGETTYPEOFSECONDARGUMENT ; goto cleanup; } } while (0) |
561 | ((PKIX_PL_Object *)secondCrlEntry, &secondType, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_GetType ((PKIX_PL_Object *)secondCrlEntry, &secondType, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTGETTYPEOFSECONDARGUMENT ; goto cleanup; } } while (0) |
562 | PKIX_COULDNOTGETTYPEOFSECONDARGUMENT)do { stdVars.aPkixErrorResult = (PKIX_PL_Object_GetType ((PKIX_PL_Object *)secondCrlEntry, &secondType, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTGETTYPEOFSECONDARGUMENT ; goto cleanup; } } while (0); |
563 | if (secondType != PKIX_CRLENTRY_TYPE) goto cleanup; |
564 | |
565 | /* Compare userSerialNumber */ |
566 | PKIX_CRLENTRY_DEBUG("\t\tCalling SECITEM_CompareItem\n"); |
567 | if (SECITEM_CompareItemSECITEM_CompareItem_Util( |
568 | &(((PKIX_PL_CRLEntry *)firstCrlEntry)->nssCrlEntry->serialNumber), |
569 | &(((PKIX_PL_CRLEntry *)secondCrlEntry)->nssCrlEntry->serialNumber)) |
570 | != SECEqual) { |
571 | *pResult = PKIX_FALSE((PKIX_Boolean) 0); |
572 | goto cleanup; |
573 | } |
574 | |
575 | /* Compare revocationDate */ |
576 | PKIX_CRLENTRY_DEBUG("\t\tCalling SECITEM_CompareItem\n"); |
577 | if (SECITEM_CompareItemSECITEM_CompareItem_Util |
578 | (&(((PKIX_PL_CRLEntry *)firstCrlEntry)->nssCrlEntry-> |
579 | revocationDate), |
580 | &(((PKIX_PL_CRLEntry *)secondCrlEntry)->nssCrlEntry-> |
581 | revocationDate)) |
582 | != SECEqual) { |
583 | *pResult = PKIX_FALSE((PKIX_Boolean) 0); |
584 | goto cleanup; |
585 | } |
586 | |
587 | /* Compare Critical Extension List */ |
588 | PKIX_CHECK(pkix_pl_CRLEntry_Extensions_Equalsdo { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0) |
589 | (firstCrlEntry->nssCrlEntry->extensions,do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0) |
590 | secondCrlEntry->nssCrlEntry->extensions,do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0) |
591 | &cmpResult,do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0) |
592 | plContext),do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0) |
593 | PKIX_CRLENTRYEXTENSIONSEQUALSFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_Extensions_Equals (firstCrlEntry->nssCrlEntry->extensions, secondCrlEntry ->nssCrlEntry->extensions, &cmpResult, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars .aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_CRLENTRYEXTENSIONSEQUALSFAILED ; goto cleanup; } } while (0); |
594 | |
595 | if (cmpResult != PKIX_TRUE((PKIX_Boolean) 1)){ |
596 | *pResult = PKIX_FALSE((PKIX_Boolean) 0); |
597 | goto cleanup; |
598 | } |
599 | |
600 | cmpResult = (firstCrlEntry->userReasonCode == |
601 | secondCrlEntry->userReasonCode); |
602 | |
603 | *pResult = cmpResult; |
604 | |
605 | cleanup: |
606 | |
607 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
608 | } |
609 | |
610 | /* |
611 | * FUNCTION: pkix_pl_CRLEntry_RegisterSelf |
612 | * DESCRIPTION: |
613 | * Registers PKIX_CRLEntry_TYPE and its related functions with systemClasses[] |
614 | * THREAD SAFETY: |
615 | * Not Thread Safe - for performance and complexity reasons |
616 | * |
617 | * Since this function is only called by PKIX_PL_Initialize, which should |
618 | * only be called once, it is acceptable that this function is not |
619 | * thread-safe. |
620 | */ |
621 | PKIX_Error * |
622 | pkix_pl_CRLEntry_RegisterSelf(void *plContext) |
623 | { |
624 | |
625 | extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; |
626 | pkix_ClassTable_Entry entry; |
627 | |
628 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_RegisterSelf")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_RegisterSelf" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
629 | |
630 | entry.description = "CRLEntry"; |
631 | entry.objCounter = 0; |
632 | entry.typeObjectSize = sizeof(PKIX_PL_CRLEntry); |
633 | entry.destructor = pkix_pl_CRLEntry_Destroy; |
634 | entry.equalsFunction = pkix_pl_CRLEntry_Equals; |
635 | entry.hashcodeFunction = pkix_pl_CRLEntry_Hashcode; |
636 | entry.toStringFunction = pkix_pl_CRLEntry_ToString; |
637 | entry.comparator = NULL((void*)0); |
638 | entry.duplicateFunction = pkix_duplicateImmutable; |
639 | |
640 | systemClasses[PKIX_CRLENTRY_TYPE] = entry; |
641 | |
642 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
643 | } |
644 | |
645 | /* |
646 | * FUNCTION: pkix_pl_CRLEntry_CreateEntry |
647 | * DESCRIPTION: |
648 | * |
649 | * Creates a new CRLEntry using the CertCrlEntry pointed to by "nssCrlEntry" |
650 | * and stores it at "pCrlEntry". Once created, a CRLEntry is immutable. |
651 | * |
652 | * revokedCertificates SEQUENCE OF SEQUENCE { |
653 | * userCertificate CertificateSerialNumber, |
654 | * revocationDate Time, |
655 | * crlEntryExtensions Extensions OPTIONAL |
656 | * -- if present, MUST be v2 |
657 | * |
658 | * PARAMETERS: |
659 | * "nssCrlEntry" |
660 | * Address of CERTCrlEntry representing an NSS CRL entry. |
661 | * Must be non-NULL. |
662 | * "pCrlEntry" |
663 | * Address where object pointer will be stored. Must be non-NULL. |
664 | * "plContext" |
665 | * Platform-specific context pointer. |
666 | * THREAD SAFETY: |
667 | * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
668 | * RETURNS: |
669 | * Returns NULL if the function succeeds. |
670 | * Returns a CRLEntry Error if the function fails in a non-fatal way. |
671 | * Returns a Fatal Error if the function fails in an unrecoverable way. |
672 | */ |
673 | static PKIX_Error * |
674 | pkix_pl_CRLEntry_CreateEntry( |
675 | CERTCrlEntry *nssCrlEntry, /* entry data to be created from */ |
676 | PKIX_PL_CRLEntry **pCrlEntry, |
677 | void *plContext) |
678 | { |
679 | PKIX_PL_CRLEntry *crlEntry = NULL((void*)0); |
680 | |
681 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_CreateEntry")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_CreateEntry" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
682 | PKIX_NULLCHECK_TWO(nssCrlEntry, pCrlEntry)do { if (((nssCrlEntry) == ((void*)0)) || ((pCrlEntry) == ((void *)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); |
683 | |
684 | PKIX_CHECK(PKIX_PL_Object_Allocdo { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
685 | (PKIX_CRLENTRY_TYPE,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
686 | sizeof (PKIX_PL_CRLEntry),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
687 | (PKIX_PL_Object **)&crlEntry,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
688 | plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
689 | PKIX_COULDNOTCREATECRLENTRYOBJECT)do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_CRLENTRY_TYPE , sizeof (PKIX_PL_CRLEntry), (PKIX_PL_Object **)&crlEntry , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0); |
690 | |
691 | crlEntry->nssCrlEntry = nssCrlEntry; |
692 | crlEntry->serialNumber = NULL((void*)0); |
693 | crlEntry->critExtOids = NULL((void*)0); |
694 | crlEntry->userReasonCode = 0; |
695 | crlEntry->userReasonCodeAbsent = PKIX_FALSE((PKIX_Boolean) 0); |
696 | |
697 | *pCrlEntry = crlEntry; |
698 | |
699 | cleanup: |
700 | |
701 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
702 | } |
703 | |
704 | /* |
705 | * FUNCTION: pkix_pl_CRLEntry_Create |
706 | * DESCRIPTION: |
707 | * |
708 | * Creates a List of CRLEntries using the array of CERTCrlEntries pointed to |
709 | * by "nssCrlEntries" and stores it at "pCrlEntryList". If "nssCrlEntries" is |
710 | * NULL, this function stores an empty List at "pCrlEntryList". |
711 | * } |
712 | * PARAMETERS: |
713 | * "nssCrlEntries" |
714 | * Address of array of CERTCrlEntries representing NSS CRL entries. |
715 | * Can be NULL if CRL has no NSS CRL entries. |
716 | * "pCrlEntryList" |
717 | * Address where object pointer will be stored. Must be non-NULL. |
718 | * "plContext" |
719 | * Platform-specific context pointer. |
720 | * THREAD SAFETY: |
721 | * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
722 | * RETURNS: |
723 | * Returns NULL if the function succeeds. |
724 | * Returns a CRLEntry Error if the function fails in a non-fatal way. |
725 | * Returns a Fatal Error if the function fails in an unrecoverable way. |
726 | */ |
727 | PKIX_Error * |
728 | pkix_pl_CRLEntry_Create( |
729 | CERTCrlEntry **nssCrlEntries, /* head of entry list */ |
730 | PKIX_List **pCrlEntryList, |
731 | void *plContext) |
732 | { |
733 | PKIX_List *entryList = NULL((void*)0); |
734 | PKIX_PL_CRLEntry *crlEntry = NULL((void*)0); |
735 | CERTCrlEntry **entries = NULL((void*)0); |
736 | SECItem serialNumberItem; |
737 | PKIX_PL_BigInt *serialNumber; |
738 | char *bytes = NULL((void*)0); |
739 | PKIX_UInt32 length; |
740 | |
741 | PKIX_ENTER(CRLENTRY, "pkix_pl_CRLEntry_Create")static const char cMyFuncName[] = {"pkix_pl_CRLEntry_Create"} ; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
742 | PKIX_NULLCHECK_ONE(pCrlEntryList)do { if ((pCrlEntryList) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
743 | |
744 | entries = nssCrlEntries; |
745 | |
746 | PKIX_CHECK(PKIX_List_Create(&entryList, plContext),do { stdVars.aPkixErrorResult = (PKIX_List_Create(&entryList , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_LISTCREATEFAILED; goto cleanup; } } while (0) |
747 | PKIX_LISTCREATEFAILED)do { stdVars.aPkixErrorResult = (PKIX_List_Create(&entryList , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_LISTCREATEFAILED; goto cleanup; } } while (0); |
748 | |
749 | if (entries) { |
750 | while (*entries){ |
751 | PKIX_CHECK(pkix_pl_CRLEntry_CreateEntrydo { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_CreateEntry (*entries, &crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
752 | (*entries, &crlEntry, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_CreateEntry (*entries, &crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0) |
753 | PKIX_COULDNOTCREATECRLENTRYOBJECT)do { stdVars.aPkixErrorResult = (pkix_pl_CRLEntry_CreateEntry (*entries, &crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATECRLENTRYOBJECT; goto cleanup; } } while (0); |
754 | |
755 | /* Get Serial Number */ |
756 | serialNumberItem = (*entries)->serialNumber; |
757 | length = serialNumberItem.len; |
758 | bytes = (char *)serialNumberItem.data; |
759 | |
760 | PKIX_CHECK(pkix_pl_BigInt_CreateWithBytesdo { stdVars.aPkixErrorResult = (pkix_pl_BigInt_CreateWithBytes (bytes, length, &serialNumber, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTCREATEWITHBYTESFAILED ; goto cleanup; } } while (0) |
761 | (bytes, length, &serialNumber, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_BigInt_CreateWithBytes (bytes, length, &serialNumber, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTCREATEWITHBYTESFAILED ; goto cleanup; } } while (0) |
762 | PKIX_BIGINTCREATEWITHBYTESFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_BigInt_CreateWithBytes (bytes, length, &serialNumber, plContext)); if (stdVars. aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult ->errClass; stdVars.aPkixErrorCode = PKIX_BIGINTCREATEWITHBYTESFAILED ; goto cleanup; } } while (0); |
763 | |
764 | crlEntry->serialNumber = serialNumber; |
765 | crlEntry->nssCrlEntry = *entries; |
766 | |
767 | PKIX_CHECK(PKIX_List_AppendItemdo { stdVars.aPkixErrorResult = (PKIX_List_AppendItem (entryList , (PKIX_PL_Object *)crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0) |
768 | (entryList, (PKIX_PL_Object *)crlEntry, plContext),do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem (entryList , (PKIX_PL_Object *)crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0) |
769 | PKIX_LISTAPPENDITEMFAILED)do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem (entryList , (PKIX_PL_Object *)crlEntry, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0); |
770 | |
771 | PKIX_DECREF(crlEntry)do { if (crlEntry){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } crlEntry = ((void* )0); } } while (0); |
772 | |
773 | entries++; |
774 | } |
775 | } |
776 | |
777 | *pCrlEntryList = entryList; |
778 | |
779 | cleanup: |
780 | PKIX_DECREF(crlEntry)do { if (crlEntry){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } crlEntry = ((void* )0); } } while (0); |
781 | |
782 | if (PKIX_ERROR_RECEIVED(stdVars.aPkixErrorReceived || stdVars.aPkixErrorResult || stdVars .aPkixTempErrorReceived || stdVars.aPkixErrorList)){ |
783 | PKIX_DECREF(entryList)do { if (entryList){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(entryList), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } entryList = ((void *)0); } } while (0); |
784 | } |
785 | |
786 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
787 | } |
788 | |
789 | /* --Public-CRLENTRY-Functions------------------------------------- */ |
790 | |
791 | /* |
792 | * FUNCTION: PKIX_PL_CRLEntry_GetCRLEntryReasonCode |
793 | * (see comments in pkix_pl_pki.h) |
794 | */ |
795 | PKIX_Error * |
796 | PKIX_PL_CRLEntry_GetCRLEntryReasonCode ( |
797 | PKIX_PL_CRLEntry *crlEntry, |
798 | PKIX_Int32 *pReason, |
799 | void *plContext) |
800 | { |
801 | SECStatus status; |
802 | CERTCRLEntryReasonCode nssReasonCode; |
803 | |
804 | PKIX_ENTER(CRLENTRY, "PKIX_PL_CRLEntry_GetCRLEntryReasonCode")static const char cMyFuncName[] = {"PKIX_PL_CRLEntry_GetCRLEntryReasonCode" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
805 | PKIX_NULLCHECK_TWO(crlEntry, pReason)do { if (((crlEntry) == ((void*)0)) || ((pReason) == ((void*) 0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); |
806 | |
807 | if (!crlEntry->userReasonCodeAbsent && crlEntry->userReasonCode == 0) { |
808 | |
809 | PKIX_OBJECT_LOCK(crlEntry)do { if (crlEntry) { stdVars.aPkixTempResult = PKIX_PL_Object_Lock ((PKIX_PL_Object*)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); stdVars.aPkixErrorCode = PKIX_OBJECTLOCKFAILED; goto cleanup; } stdVars.aLockedObject = (PKIX_PL_Object *)(crlEntry); } } while (0); |
810 | |
811 | if (!crlEntry->userReasonCodeAbsent && |
812 | crlEntry->userReasonCode == 0) { |
813 | |
814 | /* reason code has not been cached in */ |
815 | PKIX_CRLENTRY_DEBUG("\t\tCERT_FindCRLEntryReasonExten.\n"); |
816 | status = CERT_FindCRLEntryReasonExten |
817 | (crlEntry->nssCrlEntry, &nssReasonCode); |
818 | |
819 | if (status == SECSuccess) { |
820 | crlEntry->userReasonCode = (PKIX_Int32) nssReasonCode; |
821 | } else { |
822 | crlEntry->userReasonCodeAbsent = PKIX_TRUE((PKIX_Boolean) 1); |
823 | } |
824 | } |
825 | |
826 | PKIX_OBJECT_UNLOCK(crlEntry)do { if (crlEntry && stdVars.aLockedObject == (PKIX_PL_Object *)(crlEntry)){ stdVars.aPkixTempResult = PKIX_PL_Object_Unlock ((PKIX_PL_Object *)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } stdVars.aLockedObject = ((void*)0); } else { ((stdVars.aLockedObject == ((void*)0) )?((void)0):PR_Assert("lockedObject == NULL","pkix_pl_crlentry.c" ,826)); } } while (0); |
827 | |
828 | } |
829 | |
830 | *pReason = crlEntry->userReasonCode; |
831 | |
832 | cleanup: |
833 | |
834 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
835 | } |
836 | |
837 | /* |
838 | * FUNCTION: PKIX_PL_CRLEntry_GetCriticalExtensionOIDs |
839 | * (see comments in pkix_pl_pki.h) |
840 | */ |
841 | PKIX_Error * |
842 | PKIX_PL_CRLEntry_GetCriticalExtensionOIDs ( |
843 | PKIX_PL_CRLEntry *crlEntry, |
844 | PKIX_List **pList, /* list of PKIX_PL_OID */ |
845 | void *plContext) |
846 | { |
847 | PKIX_List *oidsList = NULL((void*)0); |
848 | CERTCertExtension **extensions; |
849 | |
850 | PKIX_ENTER(CRLENTRY, "PKIX_PL_CRLEntry_GetCriticalExtensionOIDs")static const char cMyFuncName[] = {"PKIX_PL_CRLEntry_GetCriticalExtensionOIDs" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_CRLENTRY_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; |
851 | PKIX_NULLCHECK_THREE(crlEntry, crlEntry->nssCrlEntry, pList)do { if (((crlEntry) == ((void*)0)) || ((crlEntry->nssCrlEntry ) == ((void*)0)) || ((pList) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); |
852 | |
853 | /* if we don't have a cached copy from before, we create one */ |
854 | if (crlEntry->critExtOids == NULL((void*)0)) { |
855 | |
856 | PKIX_OBJECT_LOCK(crlEntry)do { if (crlEntry) { stdVars.aPkixTempResult = PKIX_PL_Object_Lock ((PKIX_PL_Object*)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); stdVars.aPkixErrorCode = PKIX_OBJECTLOCKFAILED; goto cleanup; } stdVars.aLockedObject = (PKIX_PL_Object *)(crlEntry); } } while (0); |
857 | |
858 | if (crlEntry->critExtOids == NULL((void*)0)) { |
859 | |
860 | extensions = crlEntry->nssCrlEntry->extensions; |
861 | |
862 | PKIX_CHECK(pkix_pl_OID_GetCriticalExtensionOIDsdo { stdVars.aPkixErrorResult = (pkix_pl_OID_GetCriticalExtensionOIDs (extensions, &oidsList, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_GETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0) |
863 | (extensions, &oidsList, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_OID_GetCriticalExtensionOIDs (extensions, &oidsList, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_GETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0) |
864 | PKIX_GETCRITICALEXTENSIONOIDSFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_OID_GetCriticalExtensionOIDs (extensions, &oidsList, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_GETCRITICALEXTENSIONOIDSFAILED ; goto cleanup; } } while (0); |
865 | |
866 | crlEntry->critExtOids = oidsList; |
867 | } |
868 | |
869 | PKIX_OBJECT_UNLOCK(crlEntry)do { if (crlEntry && stdVars.aLockedObject == (PKIX_PL_Object *)(crlEntry)){ stdVars.aPkixTempResult = PKIX_PL_Object_Unlock ((PKIX_PL_Object *)(crlEntry), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } stdVars.aLockedObject = ((void*)0); } else { ((stdVars.aLockedObject == ((void*)0) )?((void)0):PR_Assert("lockedObject == NULL","pkix_pl_crlentry.c" ,869)); } } while (0); |
870 | |
871 | } |
872 | |
873 | /* We should return a copy of the List since this list changes */ |
874 | PKIX_DUPLICATE(crlEntry->critExtOids, pList, plContext,do { if ((crlEntry->critExtOids) != ((void*)0)) { do { stdVars .aPkixErrorResult = (PKIX_PL_Object_Duplicate ((PKIX_PL_Object *)(crlEntry->critExtOids), (PKIX_PL_Object **)(pList), (plContext ))); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = (PKIX_OBJECTDUPLICATELISTFAILED); goto cleanup; } } while ( 0); } else { *(pList) = (crlEntry->critExtOids); } } while (0) |
875 | PKIX_OBJECTDUPLICATELISTFAILED)do { if ((crlEntry->critExtOids) != ((void*)0)) { do { stdVars .aPkixErrorResult = (PKIX_PL_Object_Duplicate ((PKIX_PL_Object *)(crlEntry->critExtOids), (PKIX_PL_Object **)(pList), (plContext ))); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = (PKIX_OBJECTDUPLICATELISTFAILED); goto cleanup; } } while ( 0); } else { *(pList) = (crlEntry->critExtOids); } } while (0); |
876 | |
877 | cleanup: |
878 | |
879 | PKIX_RETURN(CRLENTRY)return PKIX_DoReturn(&stdVars, (PKIX_CRLENTRY_ERROR), ((PKIX_Boolean ) 1), plContext);; |
880 | } |