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

Side by Side Diff: nss/lib/certdb/secname.c

Issue 16132005: Allow NSS to be built with NO_NSPR_10_SUPPORT. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/nss/
Patch Set: Created 7 years, 6 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
« no previous file with comments | « nss/lib/certdb/polcyxtn.c ('k') | nss/lib/certdb/stanpcertdb.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* This Source Code Form is subject to the terms of the Mozilla Public 1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 4
5 #include "cert.h" 5 #include "cert.h"
6 #include "secoid.h" 6 #include "secoid.h"
7 #include "secder.h" /* XXX remove this when remove the DERTemplates */ 7 #include "secder.h" /* XXX remove this when remove the DERTemplates */
8 #include "secasn1.h" 8 #include "secasn1.h"
9 #include "secitem.h" 9 #include "secitem.h"
10 #include <stdarg.h> 10 #include <stdarg.h>
(...skipping 22 matching lines...) Expand all
33 int count = 0; 33 int count = 0;
34 if (array) { 34 if (array) {
35 while (*array++) { 35 while (*array++) {
36 count++; 36 count++;
37 } 37 }
38 } 38 }
39 return count; 39 return count;
40 } 40 }
41 41
42 static void ** 42 static void **
43 AddToArray(PRArenaPool *arena, void **array, void *element) 43 AddToArray(PLArenaPool *arena, void **array, void *element)
44 { 44 {
45 unsigned count; 45 unsigned count;
46 void **ap; 46 void **ap;
47 47
48 /* Count up number of slots already in use in the array */ 48 /* Count up number of slots already in use in the array */
49 count = 0; 49 count = 0;
50 ap = array; 50 ap = array;
51 if (ap) { 51 if (ap) {
52 while (*ap++) { 52 while (*ap++) {
53 count++; 53 count++;
(...skipping 23 matching lines...) Expand all
77 77
78 oid = SECOID_FindOID(&ava->type); 78 oid = SECOID_FindOID(&ava->type);
79 79
80 if ( oid ) { 80 if ( oid ) {
81 return(oid->offset); 81 return(oid->offset);
82 } 82 }
83 return (SECOidTag)-1; 83 return (SECOidTag)-1;
84 } 84 }
85 85
86 static SECStatus 86 static SECStatus
87 SetupAVAType(PRArenaPool *arena, SECOidTag type, SECItem *it, unsigned *maxLenp) 87 SetupAVAType(PLArenaPool *arena, SECOidTag type, SECItem *it, unsigned *maxLenp)
88 { 88 {
89 unsigned char *oid; 89 unsigned char *oid;
90 unsigned oidLen; 90 unsigned oidLen;
91 unsigned char *cp; 91 unsigned char *cp;
92 int maxLen; 92 int maxLen;
93 SECOidData *oidrec; 93 SECOidData *oidrec;
94 94
95 oidrec = SECOID_FindOIDByTag(type); 95 oidrec = SECOID_FindOIDByTag(type);
96 if (oidrec == NULL) 96 if (oidrec == NULL)
97 return SECFailure; 97 return SECFailure;
(...skipping 11 matching lines...) Expand all
109 if (cp == NULL) { 109 if (cp == NULL) {
110 return SECFailure; 110 return SECFailure;
111 } 111 }
112 it->len = oidLen; 112 it->len = oidLen;
113 PORT_Memcpy(cp, oid, oidLen); 113 PORT_Memcpy(cp, oid, oidLen);
114 *maxLenp = (unsigned)maxLen; 114 *maxLenp = (unsigned)maxLen;
115 return SECSuccess; 115 return SECSuccess;
116 } 116 }
117 117
118 static SECStatus 118 static SECStatus
119 SetupAVAValue(PRArenaPool *arena, int valueType, const SECItem *in, 119 SetupAVAValue(PLArenaPool *arena, int valueType, const SECItem *in,
120 SECItem *out, unsigned maxLen) 120 SECItem *out, unsigned maxLen)
121 { 121 {
122 PRUint8 *value, *cp, *ucs4Val; 122 PRUint8 *value, *cp, *ucs4Val;
123 unsigned valueLen, valueLenLen, total; 123 unsigned valueLen, valueLenLen, total;
124 unsigned ucs4Len = 0, ucs4MaxLen; 124 unsigned ucs4Len = 0, ucs4MaxLen;
125 125
126 value = in->data; 126 value = in->data;
127 valueLen = in->len; 127 valueLen = in->len;
128 switch (valueType) { 128 switch (valueType) {
129 case SEC_ASN1_PRINTABLE_STRING: 129 case SEC_ASN1_PRINTABLE_STRING:
(...skipping 30 matching lines...) Expand all
160 return SECFailure; 160 return SECFailure;
161 } 161 }
162 out->data = cp; 162 out->data = cp;
163 out->len = total; 163 out->len = total;
164 cp = (PRUint8 *)DER_StoreHeader(cp, valueType, valueLen); 164 cp = (PRUint8 *)DER_StoreHeader(cp, valueType, valueLen);
165 PORT_Memcpy(cp, value, valueLen); 165 PORT_Memcpy(cp, value, valueLen);
166 return SECSuccess; 166 return SECSuccess;
167 } 167 }
168 168
169 CERTAVA * 169 CERTAVA *
170 CERT_CreateAVAFromRaw(PRArenaPool *pool, const SECItem * OID, 170 CERT_CreateAVAFromRaw(PLArenaPool *pool, const SECItem * OID,
171 const SECItem * value) 171 const SECItem * value)
172 { 172 {
173 CERTAVA *ava; 173 CERTAVA *ava;
174 int rv; 174 int rv;
175 175
176 ava = PORT_ArenaZNew(pool, CERTAVA); 176 ava = PORT_ArenaZNew(pool, CERTAVA);
177 if (ava) { 177 if (ava) {
178 rv = SECITEM_CopyItem(pool, &ava->type, OID); 178 rv = SECITEM_CopyItem(pool, &ava->type, OID);
179 if (rv) 179 if (rv)
180 return NULL; 180 return NULL;
181 181
182 rv = SECITEM_CopyItem(pool, &ava->value, value); 182 rv = SECITEM_CopyItem(pool, &ava->value, value);
183 if (rv) 183 if (rv)
184 return NULL; 184 return NULL;
185 } 185 }
186 return ava; 186 return ava;
187 } 187 }
188 188
189 CERTAVA * 189 CERTAVA *
190 CERT_CreateAVAFromSECItem(PRArenaPool *arena, SECOidTag kind, int valueType, 190 CERT_CreateAVAFromSECItem(PLArenaPool *arena, SECOidTag kind, int valueType,
191 SECItem *value) 191 SECItem *value)
192 { 192 {
193 CERTAVA *ava; 193 CERTAVA *ava;
194 int rv; 194 int rv;
195 unsigned maxLen; 195 unsigned maxLen;
196 196
197 ava = (CERTAVA*) PORT_ArenaZAlloc(arena, sizeof(CERTAVA)); 197 ava = (CERTAVA*) PORT_ArenaZAlloc(arena, sizeof(CERTAVA));
198 if (ava) { 198 if (ava) {
199 rv = SetupAVAType(arena, kind, &ava->type, &maxLen); 199 rv = SetupAVAType(arena, kind, &ava->type, &maxLen);
200 if (rv) { 200 if (rv) {
201 /* Illegal AVA type */ 201 /* Illegal AVA type */
202 return NULL; 202 return NULL;
203 } 203 }
204 rv = SetupAVAValue(arena, valueType, value, &ava->value, maxLen); 204 rv = SetupAVAValue(arena, valueType, value, &ava->value, maxLen);
205 if (rv) { 205 if (rv) {
206 /* Illegal value type */ 206 /* Illegal value type */
207 return NULL; 207 return NULL;
208 } 208 }
209 } 209 }
210 return ava; 210 return ava;
211 } 211 }
212 212
213 CERTAVA * 213 CERTAVA *
214 CERT_CreateAVA(PRArenaPool *arena, SECOidTag kind, int valueType, char *value) 214 CERT_CreateAVA(PLArenaPool *arena, SECOidTag kind, int valueType, char *value)
215 { 215 {
216 SECItem item = { siBuffer, NULL, 0 }; 216 SECItem item = { siBuffer, NULL, 0 };
217 217
218 item.data = (PRUint8 *)value; 218 item.data = (PRUint8 *)value;
219 item.len = PORT_Strlen(value); 219 item.len = PORT_Strlen(value);
220 220
221 return CERT_CreateAVAFromSECItem(arena, kind, valueType, &item); 221 return CERT_CreateAVAFromSECItem(arena, kind, valueType, &item);
222 } 222 }
223 223
224 CERTAVA * 224 CERTAVA *
225 CERT_CopyAVA(PRArenaPool *arena, CERTAVA *from) 225 CERT_CopyAVA(PLArenaPool *arena, CERTAVA *from)
226 { 226 {
227 CERTAVA *ava; 227 CERTAVA *ava;
228 int rv; 228 int rv;
229 229
230 ava = (CERTAVA*) PORT_ArenaZAlloc(arena, sizeof(CERTAVA)); 230 ava = (CERTAVA*) PORT_ArenaZAlloc(arena, sizeof(CERTAVA));
231 if (ava) { 231 if (ava) {
232 rv = SECITEM_CopyItem(arena, &ava->type, &from->type); 232 rv = SECITEM_CopyItem(arena, &ava->type, &from->type);
233 if (rv) goto loser; 233 if (rv) goto loser;
234 rv = SECITEM_CopyItem(arena, &ava->value, &from->value); 234 rv = SECITEM_CopyItem(arena, &ava->value, &from->value);
235 if (rv) goto loser; 235 if (rv) goto loser;
236 } 236 }
237 return ava; 237 return ava;
238 238
239 loser: 239 loser:
240 return 0; 240 return 0;
241 } 241 }
242 242
243 /************************************************************************/ 243 /************************************************************************/
244 /* XXX This template needs to go away in favor of the new SEC_ASN1 version. */ 244 /* XXX This template needs to go away in favor of the new SEC_ASN1 version. */
245 static const SEC_ASN1Template cert_RDNTemplate[] = { 245 static const SEC_ASN1Template cert_RDNTemplate[] = {
246 { SEC_ASN1_SET_OF, 246 { SEC_ASN1_SET_OF,
247 offsetof(CERTRDN,avas), cert_AVATemplate, sizeof(CERTRDN) } 247 offsetof(CERTRDN,avas), cert_AVATemplate, sizeof(CERTRDN) }
248 }; 248 };
249 249
250 250
251 CERTRDN * 251 CERTRDN *
252 CERT_CreateRDN(PRArenaPool *arena, CERTAVA *ava0, ...) 252 CERT_CreateRDN(PLArenaPool *arena, CERTAVA *ava0, ...)
253 { 253 {
254 CERTAVA *ava; 254 CERTAVA *ava;
255 CERTRDN *rdn; 255 CERTRDN *rdn;
256 va_list ap; 256 va_list ap;
257 unsigned count; 257 unsigned count;
258 CERTAVA **avap; 258 CERTAVA **avap;
259 259
260 rdn = (CERTRDN*) PORT_ArenaAlloc(arena, sizeof(CERTRDN)); 260 rdn = (CERTRDN*) PORT_ArenaAlloc(arena, sizeof(CERTRDN));
261 if (rdn) { 261 if (rdn) {
262 /* Count number of avas going into the rdn */ 262 /* Count number of avas going into the rdn */
(...skipping 20 matching lines...) Expand all
283 *avap++ = ava; 283 *avap++ = ava;
284 } 284 }
285 va_end(ap); 285 va_end(ap);
286 } 286 }
287 *avap++ = 0; 287 *avap++ = 0;
288 } 288 }
289 return rdn; 289 return rdn;
290 } 290 }
291 291
292 SECStatus 292 SECStatus
293 CERT_AddAVA(PRArenaPool *arena, CERTRDN *rdn, CERTAVA *ava) 293 CERT_AddAVA(PLArenaPool *arena, CERTRDN *rdn, CERTAVA *ava)
294 { 294 {
295 rdn->avas = (CERTAVA**) AddToArray(arena, (void**) rdn->avas, ava); 295 rdn->avas = (CERTAVA**) AddToArray(arena, (void**) rdn->avas, ava);
296 return rdn->avas ? SECSuccess : SECFailure; 296 return rdn->avas ? SECSuccess : SECFailure;
297 } 297 }
298 298
299 SECStatus 299 SECStatus
300 CERT_CopyRDN(PRArenaPool *arena, CERTRDN *to, CERTRDN *from) 300 CERT_CopyRDN(PLArenaPool *arena, CERTRDN *to, CERTRDN *from)
301 { 301 {
302 CERTAVA **avas, *fava, *tava; 302 CERTAVA **avas, *fava, *tava;
303 SECStatus rv = SECSuccess; 303 SECStatus rv = SECSuccess;
304 304
305 /* Copy each ava from from */ 305 /* Copy each ava from from */
306 avas = from->avas; 306 avas = from->avas;
307 if (avas) { 307 if (avas) {
308 if (avas[0] == NULL) { 308 if (avas[0] == NULL) {
309 rv = CERT_AddAVA(arena, to, NULL); 309 rv = CERT_AddAVA(arena, to, NULL);
310 return rv; 310 return rv;
(...skipping 22 matching lines...) Expand all
333 SEC_ASN1_CHOOSER_IMPLEMENT(CERT_NameTemplate) 333 SEC_ASN1_CHOOSER_IMPLEMENT(CERT_NameTemplate)
334 334
335 CERTName * 335 CERTName *
336 CERT_CreateName(CERTRDN *rdn0, ...) 336 CERT_CreateName(CERTRDN *rdn0, ...)
337 { 337 {
338 CERTRDN *rdn; 338 CERTRDN *rdn;
339 CERTName *name; 339 CERTName *name;
340 va_list ap; 340 va_list ap;
341 unsigned count; 341 unsigned count;
342 CERTRDN **rdnp; 342 CERTRDN **rdnp;
343 PRArenaPool *arena; 343 PLArenaPool *arena;
344 344
345 arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); 345 arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
346 if ( !arena ) { 346 if ( !arena ) {
347 return(0); 347 return(0);
348 } 348 }
349 349
350 name = (CERTName*) PORT_ArenaAlloc(arena, sizeof(CERTName)); 350 name = (CERTName*) PORT_ArenaAlloc(arena, sizeof(CERTName));
351 if (name) { 351 if (name) {
352 name->arena = arena; 352 name->arena = arena;
353 353
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 loser: 388 loser:
389 PORT_FreeArena(arena, PR_FALSE); 389 PORT_FreeArena(arena, PR_FALSE);
390 return(0); 390 return(0);
391 } 391 }
392 392
393 void 393 void
394 CERT_DestroyName(CERTName *name) 394 CERT_DestroyName(CERTName *name)
395 { 395 {
396 if (name) 396 if (name)
397 { 397 {
398 PRArenaPool *arena = name->arena; 398 PLArenaPool *arena = name->arena;
399 name->rdns = NULL; 399 name->rdns = NULL;
400 name->arena = NULL; 400 name->arena = NULL;
401 if (arena) PORT_FreeArena(arena, PR_FALSE); 401 if (arena) PORT_FreeArena(arena, PR_FALSE);
402 } 402 }
403 } 403 }
404 404
405 SECStatus 405 SECStatus
406 CERT_AddRDN(CERTName *name, CERTRDN *rdn) 406 CERT_AddRDN(CERTName *name, CERTRDN *rdn)
407 { 407 {
408 name->rdns = (CERTRDN**) AddToArray(name->arena, (void**) name->rdns, rdn); 408 name->rdns = (CERTRDN**) AddToArray(name->arena, (void**) name->rdns, rdn);
409 return name->rdns ? SECSuccess : SECFailure; 409 return name->rdns ? SECSuccess : SECFailure;
410 } 410 }
411 411
412 SECStatus 412 SECStatus
413 CERT_CopyName(PRArenaPool *arena, CERTName *to, const CERTName *from) 413 CERT_CopyName(PLArenaPool *arena, CERTName *to, const CERTName *from)
414 { 414 {
415 CERTRDN **rdns, *frdn, *trdn; 415 CERTRDN **rdns, *frdn, *trdn;
416 SECStatus rv = SECSuccess; 416 SECStatus rv = SECSuccess;
417 417
418 if (!to || !from) { 418 if (!to || !from) {
419 PORT_SetError(SEC_ERROR_INVALID_ARGS); 419 PORT_SetError(SEC_ERROR_INVALID_ARGS);
420 return SECFailure; 420 return SECFailure;
421 } 421 }
422 422
423 CERT_DestroyName(to); 423 CERT_DestroyName(to);
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 } 700 }
701 701
702 avaValue.data = utf8Val; 702 avaValue.data = utf8Val;
703 avaValue.len = utf8ValLen; 703 avaValue.len = utf8ValLen;
704 } 704 }
705 705
706 retItem = SECITEM_DupItem(&avaValue); 706 retItem = SECITEM_DupItem(&avaValue);
707 PORT_FreeArena(newarena, PR_FALSE); 707 PORT_FreeArena(newarena, PR_FALSE);
708 return retItem; 708 return retItem;
709 } 709 }
OLDNEW
« no previous file with comments | « nss/lib/certdb/polcyxtn.c ('k') | nss/lib/certdb/stanpcertdb.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698