Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: mozilla/security/nss/lib/certhigh/crlv2.c

Issue 14249009: Change the NSS and NSPR source tree to the new directory structure to be (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/nss/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 /*
6 * Code for dealing with x.509 v3 crl and crl entries extensions.
7 *
8 * $Id: crlv2.c,v 1.7 2012/04/25 14:49:27 gerv%gerv.net Exp $
9 */
10
11 #include "cert.h"
12 #include "secitem.h"
13 #include "secoid.h"
14 #include "secoidt.h"
15 #include "secder.h"
16 #include "secasn1.h"
17 #include "certxutl.h"
18
19 SECStatus
20 CERT_FindCRLExtensionByOID(CERTCrl *crl, SECItem *oid, SECItem *value)
21 {
22 return (cert_FindExtensionByOID (crl->extensions, oid, value));
23 }
24
25
26 SECStatus
27 CERT_FindCRLExtension(CERTCrl *crl, int tag, SECItem *value)
28 {
29 return (cert_FindExtension (crl->extensions, tag, value));
30 }
31
32
33 /* Callback to set extensions and adjust verison */
34 static void
35 SetCrlExts(void *object, CERTCertExtension **exts)
36 {
37 CERTCrl *crl = (CERTCrl *)object;
38
39 crl->extensions = exts;
40 DER_SetUInteger (crl->arena, &crl->version, SEC_CRL_VERSION_2);
41 }
42
43 void *
44 CERT_StartCRLExtensions(CERTCrl *crl)
45 {
46 return (cert_StartExtensions ((void *)crl, crl->arena, SetCrlExts));
47 }
48
49 static void
50 SetCrlEntryExts(void *object, CERTCertExtension **exts)
51 {
52 CERTCrlEntry *crlEntry = (CERTCrlEntry *)object;
53
54 crlEntry->extensions = exts;
55 }
56
57 void *
58 CERT_StartCRLEntryExtensions(CERTCrl *crl, CERTCrlEntry *entry)
59 {
60 return (cert_StartExtensions (entry, crl->arena, SetCrlEntryExts));
61 }
62
63 SECStatus CERT_FindCRLNumberExten (PRArenaPool *arena, CERTCrl *crl,
64 SECItem *value)
65 {
66 SECItem encodedExtenValue;
67 SECItem *tmpItem = NULL;
68 SECStatus rv;
69 void *mark = NULL;
70
71 encodedExtenValue.data = NULL;
72 encodedExtenValue.len = 0;
73
74 rv = cert_FindExtension(crl->extensions, SEC_OID_X509_CRL_NUMBER,
75 &encodedExtenValue);
76 if ( rv != SECSuccess )
77 return (rv);
78
79 mark = PORT_ArenaMark(arena);
80
81 tmpItem = SECITEM_ArenaDupItem(arena, &encodedExtenValue);
82 if (tmpItem) {
83 rv = SEC_QuickDERDecodeItem (arena, value,
84 SEC_ASN1_GET(SEC_IntegerTemplate),
85 tmpItem);
86 } else {
87 rv = SECFailure;
88 }
89
90 PORT_Free (encodedExtenValue.data);
91 if (rv == SECFailure) {
92 PORT_ArenaRelease(arena, mark);
93 } else {
94 PORT_ArenaUnmark(arena, mark);
95 }
96 return (rv);
97 }
98
99 SECStatus CERT_FindCRLEntryReasonExten (CERTCrlEntry *crlEntry,
100 CERTCRLEntryReasonCode *value)
101 {
102 SECItem wrapperItem = {siBuffer,0};
103 SECItem tmpItem = {siBuffer,0};
104 SECStatus rv;
105 PRArenaPool *arena = NULL;
106
107 arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
108 if ( ! arena ) {
109 return(SECFailure);
110 }
111
112 rv = cert_FindExtension(crlEntry->extensions, SEC_OID_X509_REASON_CODE,
113 &wrapperItem);
114 if ( rv != SECSuccess ) {
115 goto loser;
116 }
117
118 rv = SEC_QuickDERDecodeItem(arena, &tmpItem,
119 SEC_ASN1_GET(SEC_EnumeratedTemplate),
120 &wrapperItem);
121
122 if ( rv != SECSuccess ) {
123 goto loser;
124 }
125
126 *value = (CERTCRLEntryReasonCode) DER_GetInteger(&tmpItem);
127
128 loser:
129 if ( arena ) {
130 PORT_FreeArena(arena, PR_FALSE);
131 }
132
133 if ( wrapperItem.data ) {
134 PORT_Free(wrapperItem.data);
135 }
136
137 return (rv);
138 }
139
140 SECStatus CERT_FindInvalidDateExten (CERTCrl *crl, int64 *value)
141 {
142 SECItem encodedExtenValue;
143 SECItem decodedExtenValue = {siBuffer,0};
144 SECStatus rv;
145
146 encodedExtenValue.data = decodedExtenValue.data = NULL;
147 encodedExtenValue.len = decodedExtenValue.len = 0;
148
149 rv = cert_FindExtension
150 (crl->extensions, SEC_OID_X509_INVALID_DATE, &encodedExtenValue);
151 if ( rv != SECSuccess )
152 return (rv);
153
154 rv = SEC_ASN1DecodeItem (NULL, &decodedExtenValue,
155 SEC_ASN1_GET(SEC_GeneralizedTimeTemplate),
156 &encodedExtenValue);
157 if (rv == SECSuccess)
158 rv = DER_GeneralizedTimeToTime(value, &encodedExtenValue);
159 PORT_Free (decodedExtenValue.data);
160 PORT_Free (encodedExtenValue.data);
161 return (rv);
162 }
OLDNEW
« no previous file with comments | « mozilla/security/nss/lib/certhigh/certvfypkixprint.c ('k') | mozilla/security/nss/lib/certhigh/ocsp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698