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

Side by Side Diff: nss/mozilla/security/nss/lib/pki1/pki1.h

Issue 3135002: Update to NSS 3.12.7 and NSPR 4.8.6.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years, 4 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 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is the Netscape security libraries.
15 *
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
34 *
35 * ***** END LICENSE BLOCK ***** */
36
37 #ifndef PKI1_H
38 #define PKI1_H
39
40 #ifdef DEBUG
41 static const char PKI1_CVS_ID[] = "@(#) $RCSfile: pki1.h,v $ $Revision: 1.5 $ $D ate: 2005/03/14 18:02:00 $";
42 #endif /* DEBUG */
43
44 /*
45 * pki1.h
46 *
47 * This file contains the prototypes to the non-public NSS routines
48 * relating to the PKIX part-1 objects.
49 */
50
51 #ifndef PKI1T_H
52 #include "pki1t.h"
53 #endif /* PKI1T_H */
54
55 #ifndef NSSPKI1_H
56 #include "nsspki1.h"
57 #endif /* NSSPKI1_H */
58
59 PR_BEGIN_EXTERN_C
60
61 extern const NSSOID nss_builtin_oids[];
62 extern const PRUint32 nss_builtin_oid_count;
63
64 extern const nssAttributeTypeAliasTable nss_attribute_type_aliases[];
65 extern const PRUint32 nss_attribute_type_alias_count;
66
67 /*
68 * NSSOID
69 *
70 * The non-public "methods" regarding this "object" are:
71 *
72 * nssOID_CreateFromBER -- constructor
73 * nssOID_CreateFromUTF8 -- constructor
74 * (there is no explicit destructor)
75 *
76 * nssOID_GetDEREncoding
77 * nssOID_GetUTF8Encoding
78 *
79 * In debug builds, the following non-public calls are also available:
80 *
81 * nssOID_verifyPointer
82 * nssOID_getExplanation
83 * nssOID_getTaggedUTF8
84 */
85
86 /*
87 * nssOID_CreateFromBER
88 *
89 * This routine creates an NSSOID by decoding a BER- or DER-encoded
90 * OID. It may return NSS_OID_UNKNOWN upon error, in which case it
91 * will have set an error on the error stack.
92 *
93 * The error may be one of the following values:
94 * NSS_ERROR_INVALID_BER
95 * NSS_ERROR_NO_MEMORY
96 *
97 * Return value:
98 * NSS_OID_UNKNOWN upon error
99 * An NSSOID upon success
100 */
101
102 NSS_EXTERN NSSOID *
103 nssOID_CreateFromBER
104 (
105 NSSBER *berOid
106 );
107
108 extern const NSSError NSS_ERROR_INVALID_BER;
109 extern const NSSError NSS_ERROR_NO_MEMORY;
110
111 /*
112 * nssOID_CreateFromUTF8
113 *
114 * This routine creates an NSSOID by decoding a UTF8 string
115 * representation of an OID in dotted-number format. The string may
116 * optionally begin with an octothorpe. It may return NSS_OID_UNKNOWN
117 * upon error, in which case it will have set an error on the error
118 * stack.
119 *
120 * The error may be one of the following values:
121 * NSS_ERROR_INVALID_UTF8
122 * NSS_ERROR_NO_MEMORY
123 *
124 * Return value:
125 * NSS_OID_UNKNOWN upon error
126 * An NSSOID upon success
127 */
128
129 NSS_EXTERN NSSOID *
130 nssOID_CreateFromUTF8
131 (
132 NSSUTF8 *stringOid
133 );
134
135 extern const NSSError NSS_ERROR_INVALID_UTF8;
136 extern const NSSError NSS_ERROR_NO_MEMORY;
137
138 /*
139 * nssOID_GetDEREncoding
140 *
141 * This routine returns the DER encoding of the specified NSSOID.
142 * If the optional arena argument is non-null, the memory used will
143 * be obtained from that arena; otherwise, the memory will be obtained
144 * from the heap. This routine may return return null upon error, in
145 * which case it will have set an error on the error stack.
146 *
147 * The error may be one of the following values:
148 * NSS_ERROR_INVALID_NSSOID
149 * NSS_ERROR_NO_MEMORY
150 *
151 * Return value:
152 * NULL upon error
153 * The DER encoding of this NSSOID
154 */
155
156 NSS_EXTERN NSSDER *
157 nssOID_GetDEREncoding
158 (
159 const NSSOID *oid,
160 NSSDER *rvOpt,
161 NSSArena *arenaOpt
162 );
163
164 /*
165 * nssOID_GetUTF8Encoding
166 *
167 * This routine returns a UTF8 string containing the dotted-number
168 * encoding of the specified NSSOID. If the optional arena argument
169 * is non-null, the memory used will be obtained from that arena;
170 * otherwise, the memory will be obtained from the heap. This routine
171 * may return null upon error, in which case it will have set an error
172 * on the error stack.
173 *
174 * The error may be one of the following values:
175 * NSS_ERROR_INVALID_NSSOID
176 * NSS_ERROR_NO_MEMORY
177 *
178 * Return value:
179 * NULL upon error
180 * A pointer to a UTF8 string containing the dotted-digit encoding of
181 * this NSSOID
182 */
183
184 NSS_EXTERN NSSUTF8 *
185 nssOID_GetUTF8Encoding
186 (
187 const NSSOID *oid,
188 NSSArena *arenaOpt
189 );
190
191 /*
192 * nssOID_verifyPointer
193 *
194 * This method is only present in debug builds.
195 *
196 * If the specified pointer is a valid poitner to an NSSOID object,
197 * this routine will return PR_SUCCESS. Otherwise, it will put an
198 * error on the error stack and return PR_FAILURE.
199 *
200 * The error may be one of the following values:
201 * NSS_ERROR_INVALID_NSSOID
202 *
203 * Return value:
204 * PR_SUCCESS if the pointer is valid
205 * PR_FAILURE if it isn't
206 */
207
208 #ifdef DEBUG
209 NSS_EXTERN PRStatus
210 nssOID_verifyPointer
211 (
212 const NSSOID *oid
213 );
214
215 extern const NSSError NSS_ERROR_INVALID_NSSOID;
216 #endif /* DEBUG */
217
218 /*
219 * nssOID_getExplanation
220 *
221 * This method is only present in debug builds.
222 *
223 * This routine will return a static pointer to a UTF8-encoded string
224 * describing (in English) the specified OID. The memory pointed to
225 * by the return value is not owned by the caller, and should not be
226 * freed or modified. Note that explanations are only provided for
227 * the OIDs built into the NSS library; there is no way to specify an
228 * explanation for dynamically created OIDs. This routine is intended
229 * only for use in debugging tools such as "derdump." This routine
230 * may return null upon error, in which case it will have placed an
231 * error on the error stack.
232 *
233 * The error may be one of the following values:
234 * NSS_ERROR_INVALID_NSSOID
235 *
236 * Return value:
237 * NULL upon error
238 * A static pointer to a readonly, non-caller-owned UTF8-encoded
239 * string explaining the specified OID.
240 */
241
242 #ifdef DEBUG
243 NSS_EXTERN const NSSUTF8 *
244 nssOID_getExplanation
245 (
246 NSSOID *oid
247 );
248
249 extern const NSSError NSS_ERROR_INVALID_NSSOID;
250 #endif /* DEBUG */
251
252 /*
253 * nssOID_getTaggedUTF8
254 *
255 * This method is only present in debug builds.
256 *
257 * This routine will return a pointer to a caller-owned UTF8-encoded
258 * string containing a tagged encoding of the specified OID. Note
259 * that OID (component) tags are only provided for the OIDs built
260 * into the NSS library; there is no way to specify tags for
261 * dynamically created OIDs. This routine is intended for use in
262 * debugging tools such as "derdump." If the optional arena argument
263 * is non-null, the memory used will be obtained from that arena;
264 * otherwise, the memory will be obtained from the heap. This routine
265 * may return return null upon error, in which case it will have set
266 * an error on the error stack.
267 *
268 * The error may be one of the following values
269 * NSS_ERROR_INVALID_NSSOID
270 * NSS_ERROR_NO_MEMORY
271 *
272 * Return value:
273 * NULL upon error
274 * A pointer to a UTF8 string containing the tagged encoding of
275 * this NSSOID
276 */
277
278 #ifdef DEBUG
279 NSS_EXTERN NSSUTF8 *
280 nssOID_getTaggedUTF8
281 (
282 NSSOID *oid,
283 NSSArena *arenaOpt
284 );
285
286 extern const NSSError NSS_ERROR_INVALID_NSSOID;
287 extern const NSSError NSS_ERROR_NO_MEMORY;
288 #endif /* DEBUG */
289
290 /*
291 * NSSATAV
292 *
293 * The non-public "methods" regarding this "object" are:
294 *
295 * nssATAV_CreateFromBER -- constructor
296 * nssATAV_CreateFromUTF8 -- constructor
297 * nssATAV_Create -- constructor
298 *
299 * nssATAV_Destroy
300 * nssATAV_GetDEREncoding
301 * nssATAV_GetUTF8Encoding
302 * nssATAV_GetType
303 * nssATAV_GetValue
304 * nssATAV_Compare
305 * nssATAV_Duplicate
306 *
307 * In debug builds, the following non-public call is also available:
308 *
309 * nssATAV_verifyPointer
310 */
311
312 /*
313 * nssATAV_CreateFromBER
314 *
315 * This routine creates an NSSATAV by decoding a BER- or DER-encoded
316 * ATAV. If the optional arena argument is non-null, the memory used
317 * will be obtained from that arena; otherwise, the memory will be
318 * obtained from the heap. This routine may return NULL upon error,
319 * in which case it will have set an error on the error stack.
320 *
321 * The error may be one of the following values:
322 * NSS_ERROR_INVALID_BER
323 * NSS_ERROR_NO_MEMORY
324 *
325 * Return value:
326 * NULL upon error
327 * A pointer to an NSSATAV upon success
328 */
329
330 NSS_EXTERN NSSATAV *
331 nssATAV_CreateFromBER
332 (
333 NSSArena *arenaOpt,
334 const NSSBER *berATAV
335 );
336
337 /*
338 * nssATAV_CreateFromUTF8
339 *
340 * This routine creates an NSSATAV by decoding a UTF8 string in the
341 * "equals" format, e.g., "c=US." If the optional arena argument is
342 * non-null, the memory used will be obtained from that arena;
343 * otherwise, the memory will be obtained from the heap. This routine
344 * may return NULL upon error, in which case it will have set an error
345 * on the error stack.
346 *
347 * The error may be one of the following values:
348 * NSS_ERROR_UNKNOWN_ATTRIBUTE
349 * NSS_ERROR_INVALID_UTF8
350 * NSS_ERROR_NO_MEMORY
351 *
352 * Return value:
353 * NULL upon error
354 * A pointer to an NSSATAV upon success
355 */
356
357 NSS_EXTERN NSSATAV *
358 nssATAV_CreateFromUTF8
359 (
360 NSSArena *arenaOpt,
361 const NSSUTF8 *stringATAV
362 );
363
364 /*
365 * nssATAV_Create
366 *
367 * This routine creates an NSSATAV from the specified NSSOID and the
368 * specified data. If the optional arena argument is non-null, the
369 * memory used will be obtained from that arena; otherwise, the memory
370 * will be obtained from the heap.If the specified data length is zero,
371 * the data is assumed to be terminated by first zero byte; this allows
372 * UTF8 strings to be easily specified. This routine may return NULL
373 * upon error, in which case it will have set an error on the error
374 * stack.
375 *
376 * The error may be one of the following values:
377 * NSS_ERROR_INVALID_ARENA
378 * NSS_ERROR_INVALID_NSSOID
379 * NSS_ERROR_INVALID_POINTER
380 * NSS_ERROR_NO_MEMORY
381 *
382 * Return value:
383 * NULL upon error
384 * A pointer to an NSSATAV upon success
385 */
386
387 NSS_EXTERN NSSATAV *
388 nssATAV_Create
389 (
390 NSSArena *arenaOpt,
391 const NSSOID *oid,
392 const void *data,
393 PRUint32 length
394 );
395
396 /*
397 * nssATAV_Destroy
398 *
399 * This routine will destroy an ATAV object. It should eventually be
400 * called on all ATAVs created without an arena. While it is not
401 * necessary to call it on ATAVs created within an arena, it is not an
402 * error to do so. This routine returns a PRStatus value; if
403 * successful, it will return PR_SUCCESS. If unsuccessful, it will
404 * set an error on the error stack and return PR_FAILURE.
405 *
406 * The error may be one of the following values:
407 * NSS_ERROR_INVALID_ATAV
408 *
409 * Return value:
410 * PR_FAILURE upon error
411 * PR_SUCCESS upon success
412 */
413
414 NSS_EXTERN PRStatus
415 nssATAV_Destroy
416 (
417 NSSATAV *atav
418 );
419
420 /*
421 * nssATAV_GetDEREncoding
422 *
423 * This routine will DER-encode an ATAV object. If the optional arena
424 * argument is non-null, the memory used will be obtained from that
425 * arena; otherwise, the memory will be obtained from the heap. This
426 * routine may return null upon error, in which case it will have set
427 * an error on the error stack.
428 *
429 * The error may be one of the following values:
430 * NSS_ERROR_INVALID_ATAV
431 * NSS_ERROR_NO_MEMORY
432 *
433 * Return value:
434 * NULL upon error
435 * The DER encoding of this NSSATAV
436 */
437
438 NSS_EXTERN NSSDER *
439 nssATAV_GetDEREncoding
440 (
441 NSSATAV *atav,
442 NSSArena *arenaOpt
443 );
444
445 /*
446 * nssATAV_GetUTF8Encoding
447 *
448 * This routine returns a UTF8 string containing a string
449 * representation of the ATAV in "equals" notation (e.g., "o=Acme").
450 * If the optional arena argument is non-null, the memory used will be
451 * obtained from that arena; otherwise, the memory will be obtained
452 * from the heap. This routine may return null upon error, in which
453 * case it will have set an error on the error stack.
454 *
455 * The error may be one of the following values:
456 * NSS_ERROR_INVALID_ATAV
457 * NSS_ERROR_NO_MEMORY
458 *
459 * Return value:
460 * NULL upon error
461 * A pointer to a UTF8 string containing the "equals" encoding of the
462 * ATAV
463 */
464
465 NSS_EXTERN NSSUTF8 *
466 nssATAV_GetUTF8Encoding
467 (
468 NSSATAV *atav,
469 NSSArena *arenaOpt
470 );
471
472 /*
473 * nssATAV_GetType
474 *
475 * This routine returns the NSSOID corresponding to the attribute type
476 * in the specified ATAV. This routine may return NSS_OID_UNKNOWN
477 * upon error, in which case it will have set an error on the error
478 * stack.
479 *
480 * The error may be one of the following values:
481 * NSS_ERROR_INVALID_ATAV
482 *
483 * Return value:
484 * NSS_OID_UNKNOWN upon error
485 * An element of enum NSSOIDenum upon success
486 */
487
488 NSS_EXTERN const NSSOID *
489 nssATAV_GetType
490 (
491 NSSATAV *atav
492 );
493
494 /*
495 * nssATAV_GetValue
496 *
497 * This routine returns a string containing the attribute value
498 * in the specified ATAV. If the optional arena argument is non-null,
499 * the memory used will be obtained from that arena; otherwise, the
500 * memory will be obtained from the heap. This routine may return
501 * NULL upon error, in which case it will have set an error upon the
502 * error stack.
503 *
504 * The error may be one of the following values:
505 * NSS_ERROR_INVALID_ATAV
506 * NSS_ERROR_NO_MEMORY
507 *
508 * Return value:
509 * NULL upon error
510 * A pointer to an NSSItem containing the attribute value.
511 */
512
513 NSS_EXTERN NSSUTF8 *
514 nssATAV_GetValue
515 (
516 NSSATAV *atav,
517 NSSArena *arenaOpt
518 );
519
520 /*
521 * nssATAV_Compare
522 *
523 * This routine compares two ATAVs for equality. For two ATAVs to be
524 * equal, the attribute types must be the same, and the attribute
525 * values must have equal length and contents. The result of the
526 * comparison will be stored at the location pointed to by the "equalp"
527 * variable, which must point to a valid PRBool. This routine may
528 * return PR_FAILURE upon error, in which case it will have set an
529 * error on the error stack.
530 *
531 * The error may be one of the following values:
532 * NSS_ERROR_INVALID_ATAV
533 * NSS_ERROR_INVALID_ARGUMENT
534 *
535 * Return value:
536 * PR_FAILURE on error
537 * PR_SUCCESS upon a successful comparison (equal or not)
538 */
539
540 NSS_EXTERN PRStatus
541 nssATAV_Compare
542 (
543 NSSATAV *atav1,
544 NSSATAV *atav2,
545 PRBool *equalp
546 );
547
548 /*
549 * nssATAV_Duplicate
550 *
551 * This routine duplicates the specified ATAV. If the optional arena
552 * argument is non-null, the memory required will be obtained from
553 * that arena; otherwise, the memory will be obtained from the heap.
554 * This routine may return NULL upon error, in which case it will have
555 * placed an error on the error stack.
556 *
557 * The error may be one of the following values:
558 * NSS_ERROR_INVALID_ATAV
559 * NSS_ERROR_NO_MEMORY
560 *
561 * Return value:
562 * NULL on error
563 * A pointer to a new ATAV
564 */
565
566 NSS_EXTERN NSSATAV *
567 nssATAV_Duplicate
568 (
569 NSSATAV *atav,
570 NSSArena *arenaOpt
571 );
572
573 /*
574 * nssATAV_verifyPointer
575 *
576 * This method is only present in debug builds.
577 *
578 * If the specified pointer is a valid pointer to an NSSATAV object,
579 * this routine will return PR_SUCCESS. Otherwise, it will put an
580 * error on the error stack and return PR_FAILRUE.
581 *
582 * The error may be one of the following values:
583 * NSS_ERROR_INVALID_NSSATAV
584 * NSS_ERROR_NO_MEMORY
585 *
586 * Return value:
587 * PR_SUCCESS if the pointer is valid
588 * PR_FAILURE if it isn't
589 */
590
591 #ifdef DEBUG
592 NSS_EXTERN PRStatus
593 nssATAV_verifyPointer
594 (
595 NSSATAV *atav
596 );
597 #endif /* DEBUG */
598
599 /*
600 * NSSRDN
601 *
602 * The non-public "methods" regarding this "object" are:
603 *
604 * nssRDN_CreateFromBER -- constructor
605 * nssRDN_CreateFromUTF8 -- constructor
606 * nssRDN_Create -- constructor
607 * nssRDN_CreateSimple -- constructor
608 *
609 * nssRDN_Destroy
610 * nssRDN_GetDEREncoding
611 * nssRDN_GetUTF8Encoding
612 * nssRDN_AddATAV
613 * nssRDN_GetATAVCount
614 * nssRDN_GetATAV
615 * nssRDN_GetSimpleATAV
616 * nssRDN_Compare
617 * nssRDN_Duplicate
618 */
619
620 /*
621 * nssRDN_CreateFromBER
622 *
623 * This routine creates an NSSRDN by decoding a BER- or DER-encoded
624 * RDN. If the optional arena argument is non-null, the memory used
625 * will be obtained from that arena; otherwise, the memory will be
626 * obtained from the heap. This routine may return NULL upon error,
627 * in which case it will have set an error on the error stack.
628 *
629 * The error may be one of the following values:
630 * NSS_ERROR_INVALID_BER
631 * NSS_ERROR_NO_MEMORY
632 *
633 * Return value:
634 * NULL upon error
635 * A pointer to an NSSRDN upon success
636 */
637
638 NSS_EXTERN NSSRDN *
639 nssRDN_CreateFromBER
640 (
641 NSSArena *arenaOpt,
642 NSSBER *berRDN
643 );
644
645 /*
646 * nssRDN_CreateFromUTF8
647 *
648 * This routine creates an NSSRDN by decoding an UTF8 string
649 * consisting of either a single ATAV in the "equals" format, e.g.,
650 * "uid=smith," or one or more such ATAVs in parentheses, e.g.,
651 * "(sn=Smith,ou=Sales)." If the optional arena argument is non-null,
652 * the memory used will be obtained from that arena; otherwise, the
653 * memory will be obtained from the heap. This routine may return
654 * NULL upon error, in which case it will have set an error on the
655 * error stack.
656 *
657 * The error may be one of the following values:
658 * NSS_ERROR_UNKNOWN_ATTRIBUTE
659 * NSS_ERROR_INVALID_UTF8
660 * NSS_ERROR_NO_MEMORY
661 *
662 * Return value:
663 * NULL upon error
664 * A pointer to an NSSRDN upon success
665 */
666
667 NSS_EXTERN NSSRDN *
668 nssRDN_CreateFromUTF8
669 (
670 NSSArena *arenaOpt,
671 NSSUTF8 *stringRDN
672 );
673
674 /*
675 * nssRDN_Create
676 *
677 * This routine creates an NSSRDN from one or more NSSATAVs. The
678 * final argument to this routine must be NULL. If the optional arena
679 * argument is non-null, the memory used will be obtained from that
680 * arena; otherwise, the memory will be obtained from the heap. This
681 * routine may return NULL upon error, in which case it will have set
682 * an error on the error stack.
683 *
684 * The error may be one of the following values:
685 * NSS_ERROR_NO_MEMORY
686 * NSS_ERROR_INVALID_ATAV
687 *
688 * Return value:
689 * NULL upon error
690 * A pointer to an NSSRDN upon success
691 */
692
693 NSS_EXTERN NSSRDN *
694 nssRDN_Create
695 (
696 NSSArena *arenaOpt,
697 NSSATAV *atav1,
698 ...
699 );
700
701 /*
702 * nssRDN_CreateSimple
703 *
704 * This routine creates a simple NSSRDN from a single NSSATAV. If the
705 * optional arena argument is non-null, the memory used will be
706 * obtained from that arena; otherwise, the memory will be obtained
707 * from the heap. This routine may return NULL upon error, in which
708 * case it will have set an error on the error stack.
709 *
710 * The error may be one of the following values:
711 * NSS_ERROR_NO_MEMORY
712 * NSS_ERROR_INVALID_ATAV
713 *
714 * Return value:
715 * NULL upon error
716 * A pointer to an NSSRDN upon success
717 */
718
719 NSS_EXTERN NSSRDN *
720 nssRDN_CreateSimple
721 (
722 NSSArena *arenaOpt,
723 NSSATAV *atav
724 );
725
726 /*
727 * nssRDN_Destroy
728 *
729 * This routine will destroy an RDN object. It should eventually be
730 * called on all RDNs created without an arena. While it is not
731 * necessary to call it on RDNs created within an arena, it is not an
732 * error to do so. This routine returns a PRStatus value; if
733 * successful, it will return PR_SUCCESS. If unsuccessful, it will
734 * set an error on the error stack and return PR_FAILURE.
735 *
736 * The error may be one of the following values:
737 * NSS_ERROR_INVALID_RDN
738 *
739 * Return value:
740 * PR_FAILURE upon failure
741 * PR_SUCCESS upon success
742 */
743
744 NSS_EXTERN PRStatus
745 nssRDN_Destroy
746 (
747 NSSRDN *rdn
748 );
749
750 /*
751 * nssRDN_GetDEREncoding
752 *
753 * This routine will DER-encode an RDN object. If the optional arena
754 * argument is non-null, the memory used will be obtained from that
755 * arena; otherwise, the memory will be obtained from the heap. This
756 * routine may return null upon error, in which case it will have set
757 * an error on the error stack.
758 *
759 * The error may be one of the following values:
760 * NSS_ERROR_INVALID_RDN
761 * NSS_ERROR_NO_MEMORY
762 *
763 * Return value:
764 * NULL upon error
765 * The DER encoding of this NSSRDN
766 */
767
768 NSS_EXTERN NSSDER *
769 nssRDN_GetDEREncoding
770 (
771 NSSRDN *rdn,
772 NSSArena *arenaOpt
773 );
774
775 /*
776 * nssRDN_GetUTF8Encoding
777 *
778 * This routine returns a UTF8 string containing a string
779 * representation of the RDN. A simple (one-ATAV) RDN will be simply
780 * the string representation of that ATAV; a non-simple RDN will be in
781 * parenthesised form. If the optional arena argument is non-null,
782 * the memory used will be obtained from that arena; otherwise, the
783 * memory will be obtained from the heap. This routine may return
784 * null upon error, in which case it will have set an error on the
785 * error stack.
786 *
787 * The error may be one of the following values:
788 * NSS_ERROR_INVALID_RDN
789 * NSS_ERROR_NO_MEMORY
790 *
791 * Return value:
792 * NULL upon error
793 * A pointer to a UTF8 string
794 */
795
796 NSS_EXTERN NSSUTF8 *
797 nssRDN_GetUTF8Encoding
798 (
799 NSSRDN *rdn,
800 NSSArena *arenaOpt
801 );
802
803 /*
804 * nssRDN_AddATAV
805 *
806 * This routine adds an ATAV to the set of ATAVs in the specified RDN.
807 * Remember that RDNs consist of an unordered set of ATAVs. If the
808 * RDN was created with a non-null arena argument, that same arena
809 * will be used for any additional required memory. If the RDN was
810 * created with a NULL arena argument, any additional memory will
811 * be obtained from the heap. This routine returns a PRStatus value;
812 * it will return PR_SUCCESS upon success, and upon failure it will
813 * set an error on the error stack and return PR_FAILURE.
814 *
815 * The error may be one of the following values:
816 * NSS_ERROR_INVALID_RDN
817 * NSS_ERROR_INVALID_ATAV
818 * NSS_ERROR_NO_MEMORY
819 *
820 * Return value:
821 * PR_SUCCESS upon success
822 * PR_FAILURE upon failure
823 */
824
825 NSS_EXTERN PRStatus
826 nssRDN_AddATAV
827 (
828 NSSRDN *rdn,
829 NSSATAV *atav
830 );
831
832 /*
833 * nssRDN_GetATAVCount
834 *
835 * This routine returns the cardinality of the set of ATAVs within
836 * the specified RDN. This routine may return 0 upon error, in which
837 * case it will have set an error on the error stack.
838 *
839 * The error may be one of the following values:
840 * NSS_ERROR_INVALID_RDN
841 *
842 * Return value:
843 * 0 upon error
844 * A positive number upon success
845 */
846
847 NSS_EXTERN PRUint32
848 nssRDN_GetATAVCount
849 (
850 NSSRDN *rdn
851 );
852
853 /*
854 * nssRDN_GetATAV
855 *
856 * This routine returns a pointer to an ATAV that is a member of
857 * the set of ATAVs within the specified RDN. While the set of
858 * ATAVs within an RDN is unordered, this routine will return
859 * distinct values for distinct values of 'i' as long as the RDN
860 * is not changed in any way. The RDN may be changed by calling
861 * NSSRDN_AddATAV. The value of the variable 'i' is on the range
862 * [0,c) where c is the cardinality returned from NSSRDN_GetATAVCount.
863 * The caller owns the ATAV the pointer to which is returned. If the
864 * optional arena argument is non-null, the memory used will be
865 * obtained from that arena; otherwise, the memory will be obtained
866 * from the heap. This routine may return NULL upon error, in which
867 * case it will have set an error upon the error stack.
868 *
869 * The error may be one of the following values:
870 * NSS_ERROR_INVALID_RDN
871 * NSS_ERROR_VALUE_OUT_OF_RANGE
872 * NSS_ERROR_NO_MEMORY
873 *
874 * Return value:
875 * NULL upon error
876 * A caller-owned pointer to an NSSATAV
877 */
878
879 NSS_EXTERN NSSATAV *
880 nssRDN_GetATAV
881 (
882 NSSRDN *rdn,
883 NSSArena *arenaOpt,
884 PRUint32 i
885 );
886
887 /*
888 * nssRDN_GetSimpleATAV
889 *
890 * Most RDNs are actually very simple, with a single ATAV. This
891 * routine will return the single ATAV from such an RDN. The caller
892 * owns the ATAV the pointer to which is returned. If the optional
893 * arena argument is non-null, the memory used will be obtained from
894 * that arena; otherwise, the memory will be obtained from the heap.
895 * This routine may return NULL upon error, including the case where
896 * the set of ATAVs in the RDN is nonsingular. Upon error, this
897 * routine will have set an error on the error stack.
898 *
899 * The error may be one of the following values:
900 * NSS_ERROR_INVALID_RDN
901 * NSS_ERROR_RDN_NOT_SIMPLE
902 * NSS_ERROR_NO_MEMORY
903 *
904 * Return value:
905 * NULL upon error
906 * A caller-owned pointer to an NSSATAV
907 */
908
909 NSS_EXTERN NSSATAV *
910 nssRDN_GetSimpleATAV
911 (
912 NSSRDN *rdn,
913 NSSArena *arenaOpt
914 );
915
916 /*
917 * nssRDN_Compare
918 *
919 * This routine compares two RDNs for equality. For two RDNs to be
920 * equal, they must have the same number of ATAVs, and every ATAV in
921 * one must be equal to an ATAV in the other. (Note that the sets
922 * of ATAVs are unordered.) The result of the comparison will be
923 * stored at the location pointed to by the "equalp" variable, which
924 * must point to a valid PRBool. This routine may return PR_FAILURE
925 * upon error, in which case it will have set an error on the error
926 * stack.
927 *
928 * The error may be one of the following values:
929 * NSS_ERROR_INVALID_RDN
930 * NSS_ERROR_INVALID_ARGUMENT
931 *
932 * Return value:
933 * PR_FAILURE on error
934 * PR_SUCCESS upon a successful comparison (equal or not)
935 */
936
937 NSS_EXTERN PRStatus
938 nssRDN_Compare
939 (
940 NSSRDN *rdn1,
941 NSSRDN *rdn2,
942 PRBool *equalp
943 );
944
945 /*
946 * nssRDN_Duplicate
947 *
948 * This routine duplicates the specified RDN. If the optional arena
949 * argument is non-null, the memory required will be obtained from
950 * that arena; otherwise, the memory will be obtained from the heap.
951 * This routine may return NULL upon error, in which case it will have
952 * placed an error on the error stack.
953 *
954 * The error may be one of the following values:
955 * NSS_ERROR_INVALID_RDN
956 * NSS_ERROR_NO_MEMORY
957 *
958 * Return value:
959 * NULL on error
960 * A pointer to a new RDN
961 */
962
963 NSS_EXTERN NSSRDN *
964 nssRDN_Duplicate
965 (
966 NSSRDN *rdn,
967 NSSArena *arenaOpt
968 );
969
970 /*
971 * NSSRDNSeq
972 *
973 * The non-public "methods" regarding this "object" are:
974 *
975 * nssRDNSeq_CreateFromBER -- constructor
976 * nssRDNSeq_CreateFromUTF8 -- constructor
977 * nssRDNSeq_Create -- constructor
978 *
979 * nssRDNSeq_Destroy
980 * nssRDNSeq_GetDEREncoding
981 * nssRDNSeq_GetUTF8Encoding
982 * nssRDNSeq_AppendRDN
983 * nssRDNSeq_GetRDNCount
984 * nssRDNSeq_GetRDN
985 * nssRDNSeq_Compare
986 * nssRDNSeq_Duplicate
987 *
988 * nssRDNSeq_EvaluateUTF8 -- not an object method
989 */
990
991 /*
992 * nssRDNSeq_CreateFromBER
993 *
994 * This routine creates an NSSRDNSeq by decoding a BER- or DER-encoded
995 * sequence of RDNs. If the optional arena argument is non-null,
996 * the memory used will be obtained from that arena; otherwise, the
997 * memory will be obtained from the heap. This routine may return
998 * NULL upon error, in which case it will have set an error on the
999 * error stack.
1000 *
1001 * The error may be one of the following values:
1002 * NSS_ERROR_INVALID_BER
1003 * NSS_ERROR_NO_MEMORY
1004 *
1005 * Return value:
1006 * NULL upon error
1007 * A pointer to an NSSRDNSeq upon success
1008 */
1009
1010 NSS_EXTERN NSSRDNSeq *
1011 nssRDNSeq_CreateFromBER
1012 (
1013 NSSArena *arenaOpt,
1014 NSSBER *berRDNSeq
1015 );
1016
1017 /*
1018 * nssRDNSeq_CreateFromUTF8
1019 *
1020 * This routine creates an NSSRDNSeq by decoding a UTF8 string
1021 * consisting of a comma-separated sequence of RDNs, such as
1022 * "(sn=Smith,ou=Sales),o=Acme,c=US." If the optional arena argument
1023 * is non-null, the memory used will be obtained from that arena;
1024 * otherwise, the memory will be obtained from the heap. This routine
1025 * may return NULL upon error, in which case it will have set an error
1026 * on the error stack.
1027 *
1028 * The error may be one of the following values:
1029 * NSS_ERROR_UNKNOWN_ATTRIBUTE
1030 * NSS_ERROR_INVALID_UTF8
1031 * NSS_ERROR_NO_MEMORY
1032 *
1033 * Return value:
1034 * NULL upon error
1035 * A pointer to an NSSRDNSeq upon success
1036 */
1037
1038 NSS_EXTERN NSSRDNSeq *
1039 nssRDNSeq_CreateFromUTF8
1040 (
1041 NSSArena *arenaOpt,
1042 NSSUTF8 *stringRDNSeq
1043 );
1044
1045 /*
1046 * nssRDNSeq_Create
1047 *
1048 * This routine creates an NSSRDNSeq from one or more NSSRDNs. The
1049 * final argument to this routine must be NULL. If the optional arena
1050 * argument is non-null, the memory used will be obtained from that
1051 * arena; otherwise, the memory will be obtained from the heap. This
1052 * routine may return NULL upon error, in which case it will have set
1053 * an error on the error stack.
1054 *
1055 * The error may be one of the following values:
1056 * NSS_ERROR_NO_MEMORY
1057 * NSS_ERROR_INVALID_RDN
1058 *
1059 * Return value:
1060 * NULL upon error
1061 * A pointero to an NSSRDNSeq upon success
1062 */
1063
1064 NSS_EXTERN NSSRDNSeq *
1065 nssRDNSeq_Create
1066 (
1067 NSSArena *arenaOpt,
1068 NSSRDN *rdn1,
1069 ...
1070 );
1071
1072 /*
1073 * nssRDNSeq_Destroy
1074 *
1075 * This routine will destroy an RDNSeq object. It should eventually
1076 * be called on all RDNSeqs created without an arena. While it is not
1077 * necessary to call it on RDNSeqs created within an arena, it is not
1078 * an error to do so. This routine returns a PRStatus value; if
1079 * successful, it will return PR_SUCCESS. If unsuccessful, it will
1080 * set an error on the error stack and return PR_FAILURE.
1081 *
1082 * The error may be one of the following values:
1083 * NSS_ERROR_INVALID_RDNSEQ
1084 *
1085 * Return value:
1086 * PR_FAILURE upon error
1087 * PR_SUCCESS upon success
1088 */
1089
1090 NSS_EXTERN PRStatus
1091 nssRDNSeq_Destroy
1092 (
1093 NSSRDNSeq *rdnseq
1094 );
1095
1096 /*
1097 * nssRDNSeq_GetDEREncoding
1098 *
1099 * This routine will DER-encode an RDNSeq object. If the optional
1100 * arena argument is non-null, the memory used will be obtained from
1101 * that arena; otherwise, the memory will be obtained from the heap.
1102 * This routine may return null upon error, in which case it will have
1103 * set an error on the error stack.
1104 *
1105 * The error may be one of the following values:
1106 * NSS_ERROR_INVALID_RDNSEQ
1107 * NSS_ERROR_NO_MEMORY
1108 *
1109 * Return value:
1110 * NULL upon error
1111 * The DER encoding of this NSSRDNSeq
1112 */
1113
1114 NSS_EXTERN NSSDER *
1115 nssRDNSeq_GetDEREncoding
1116 (
1117 NSSRDNSeq *rdnseq,
1118 NSSArena *arenaOpt
1119 );
1120
1121 /*
1122 * nssRDNSeq_GetUTF8Encoding
1123 *
1124 * This routine returns a UTF8 string containing a string
1125 * representation of the RDNSeq as a comma-separated sequence of RDNs.
1126 * If the optional arena argument is non-null, the memory used will be
1127 * obtained from that arena; otherwise, the memory will be obtained
1128 * from the heap. This routine may return null upon error, in which
1129 * case it will have set an error on the error stack.
1130 *
1131 * The error may be one of the following values:
1132 * NSS_ERROR_INVALID_RDNSEQ
1133 * NSS_ERROR_NO_MEMORY
1134 *
1135 * Return value:
1136 * NULL upon error
1137 * A pointer to the UTF8 string
1138 */
1139
1140 NSS_EXTERN NSSUTF8 *
1141 nssRDNSeq_GetUTF8Encoding
1142 (
1143 NSSRDNSeq *rdnseq,
1144 NSSArena *arenaOpt
1145 );
1146
1147 /*
1148 * nssRDNSeq_AppendRDN
1149 *
1150 * This routine appends an RDN to the end of the existing RDN
1151 * sequence. If the RDNSeq was created with a non-null arena
1152 * argument, that same arena will be used for any additional required
1153 * memory. If the RDNSeq was created with a NULL arena argument, any
1154 * additional memory will be obtained from the heap. This routine
1155 * returns a PRStatus value; it will return PR_SUCCESS upon success,
1156 * and upon failure it will set an error on the error stack and return
1157 * PR_FAILURE.
1158 *
1159 * The error may be one of the following values:
1160 * NSS_ERROR_INVALID_RDNSEQ
1161 * NSS_ERROR_INVALID_RDN
1162 * NSS_ERROR_NO_MEMORY
1163 *
1164 * Return value:
1165 * PR_SUCCESS upon success
1166 * PR_FAILURE upon failure
1167 */
1168
1169 NSS_EXTERN PRStatus
1170 nssRDNSeq_AppendRDN
1171 (
1172 NSSRDNSeq *rdnseq,
1173 NSSRDN *rdn
1174 );
1175
1176 /*
1177 * nssRDNSeq_GetRDNCount
1178 *
1179 * This routine returns the cardinality of the sequence of RDNs within
1180 * the specified RDNSeq. This routine may return 0 upon error, in
1181 * which case it will have set an error on the error stack.
1182 *
1183 * The error may be one of the following values:
1184 * NSS_ERROR_INVALID_RDNSEQ
1185 *
1186 * Return value:
1187 * 0 upon error
1188 * A positive number upon success
1189 */
1190
1191 NSS_EXTERN PRUint32
1192 nssRDNSeq_GetRDNCount
1193 (
1194 NSSRDNSeq *rdnseq
1195 );
1196
1197 /*
1198 * nssRDNSeq_GetRDN
1199 *
1200 * This routine returns a pointer to the i'th RDN in the sequence of
1201 * RDNs that make up the specified RDNSeq. The sequence begins with
1202 * the top-level (e.g., "c=US") RDN. The value of the variable 'i'
1203 * is on the range [0,c) where c is the cardinality returned from
1204 * NSSRDNSeq_GetRDNCount. The caller owns the RDN the pointer to which
1205 * is returned. If the optional arena argument is non-null, the memory
1206 * used will be obtained from that areana; otherwise, the memory will
1207 * be obtained from the heap. This routine may return NULL upon error,
1208 * in which case it will have set an error upon the error stack. Note
1209 * that the usual UTF8 representation of RDN Sequences is from last
1210 * to first.
1211 *
1212 * The error may be one of the following values:
1213 * NSS_ERROR_INVALID_RDNSEQ
1214 * NSS_ERROR_VALUE_OUT_OF_RANGE
1215 * NSS_ERROR_NO_MEMORY
1216 *
1217 * Return value:
1218 * NULL upon error
1219 * A caller-owned pointer to an NSSRDN
1220 */
1221
1222 NSS_EXTERN NSSRDN *
1223 nssRDNSeq_GetRDN
1224 (
1225 NSSRDNSeq *rdnseq,
1226 NSSArena *arenaOpt,
1227 PRUint32 i
1228 );
1229
1230 /*
1231 * nssRDNSeq_Compare
1232 *
1233 * This routine compares two RDNSeqs for equality. For two RDNSeqs to
1234 * be equal, they must have the same number of RDNs, and each RDN in
1235 * one sequence must be equal to the corresponding RDN in the other
1236 * sequence. The result of the comparison will be stored at the
1237 * location pointed to by the "equalp" variable, which must point to a
1238 * valid PRBool. This routine may return PR_FAILURE upon error, in
1239 * which case it will have set an error on the error stack.
1240 *
1241 * The error may be one of the following values:
1242 * NSS_ERROR_INVALID_RDNSEQ
1243 * NSS_ERROR_INVALID_ARGUMENT
1244 *
1245 * Return value:
1246 * PR_FAILURE on error
1247 * PR_SUCCESS upon a successful comparison (equal or not)
1248 */
1249
1250 NSS_EXTERN PRStatus
1251 nssRDNSeq_Compare
1252 (
1253 NSSRDNSeq *rdnseq1,
1254 NSSRDNSeq *rdnseq2,
1255 PRBool *equalp
1256 );
1257
1258 /*
1259 * nssRDNSeq_Duplicate
1260 *
1261 * This routine duplicates the specified RDNSeq. If the optional arena
1262 * argument is non-null, the memory required will be obtained from that
1263 * arena; otherwise, the memory will be obtained from the heap. This
1264 * routine may return NULL upon error, in which case it will have
1265 * placed an error on the error stack.
1266 *
1267 * The error may be one of the following values:
1268 * NSS_ERROR_INVALID_RDNSEQ
1269 * NSS_ERROR_NO_MEMORY
1270 *
1271 * Return value:
1272 * NULL upon error
1273 * A pointer to a new RDNSeq
1274 */
1275
1276 NSS_EXTERN NSSRDNSeq *
1277 nssRDNSeq_Duplicate
1278 (
1279 NSSRDNSeq *rdnseq,
1280 NSSArena *arenaOpt
1281 );
1282
1283 /*
1284 * nssRDNSeq_EvaluateUTF8
1285 *
1286 * This routine evaluates a UTF8 string, and returns PR_TRUE if the
1287 * string contains the string representation of an RDNSeq. This
1288 * routine is used by the (directory) Name routines
1289 * nssName_CreateFromUTF8 and nssName_EvaluateUTF8 to determine which
1290 * choice of directory name the string may encode. This routine may
1291 * return PR_FALSE upon error, but it subsumes that condition under the
1292 * general "string does not evaluate as an RDNSeq" state, and does not
1293 * set an error on the error stack.
1294 *
1295 * Return value:
1296 * PR_TRUE if the string represents an RDNSeq
1297 * PR_FALSE if otherwise
1298 */
1299
1300 NSS_EXTERN PRBool
1301 nssRDNSeq_EvaluateUTF8
1302 (
1303 NSSUTF8 *str
1304 );
1305
1306 /*
1307 * NSSName
1308 *
1309 * The non-public "methods" regarding this "object" are:
1310 *
1311 * nssName_CreateFromBER -- constructor
1312 * nssName_CreateFromUTF8 -- constructor
1313 * nssName_Create -- constructor
1314 *
1315 * nssName_Destroy
1316 * nssName_GetDEREncoding
1317 * nssName_GetUTF8Encoding
1318 * nssName_GetChoice
1319 * nssName_GetRDNSequence
1320 * nssName_GetSpecifiedChoice
1321 * nssName_Compare
1322 * nssName_Duplicate
1323 *
1324 * nssName_GetUID
1325 * nssName_GetEmail
1326 * nssName_GetCommonName
1327 * nssName_GetOrganization
1328 * nssName_GetOrganizationalUnits
1329 * nssName_GetStateOrProvince
1330 * nssName_GetLocality
1331 * nssName_GetCountry
1332 * nssName_GetAttribute
1333 *
1334 * nssName_EvaluateUTF8 -- not an object method
1335 */
1336
1337 /*
1338 * nssName_CreateFromBER
1339 *
1340 * This routine creates an NSSName by decoding a BER- or DER-encoded
1341 * (directory) Name. If the optional arena argument is non-null,
1342 * the memory used will be obtained from that arena; otherwise,
1343 * the memory will be obtained from the heap. This routine may
1344 * return NULL upon error, in which case it will have set an error
1345 * on the error stack.
1346 *
1347 * The error may be one of the following values:
1348 * NSS_ERROR_INVALID_BER
1349 * NSS_ERROR_NO_MEMORY
1350 *
1351 * Return value:
1352 * NULL upon error
1353 * A pointer to an NSSName upon success
1354 */
1355
1356 NSS_EXTERN NSSName *
1357 nssName_CreateFromBER
1358 (
1359 NSSArena *arenaOpt,
1360 NSSBER *berName
1361 );
1362
1363 /*
1364 * nssName_CreateFromUTF8
1365 *
1366 * This routine creates an NSSName by decoding a UTF8 string
1367 * consisting of the string representation of one of the choices of
1368 * (directory) names. Currently the only choice is an RDNSeq. If the
1369 * optional arena argument is non-null, the memory used will be
1370 * obtained from that arena; otherwise, the memory will be obtained
1371 * from the heap. The routine may return NULL upon error, in which
1372 * case it will have set an error on the error stack.
1373 *
1374 * The error may be one of the following values:
1375 * NSS_ERROR_INVALID_UTF8
1376 * NSS_ERROR_NO_MEMORY
1377 *
1378 * Return value:
1379 * NULL upon error
1380 * A pointer to an NSSName upon success
1381 */
1382
1383 NSS_EXTERN NSSName *
1384 nssName_CreateFromUTF8
1385 (
1386 NSSArena *arenaOpt,
1387 NSSUTF8 *stringName
1388 );
1389
1390 /*
1391 * nssName_Create
1392 *
1393 * This routine creates an NSSName with the specified choice of
1394 * underlying name types. The value of the choice variable must be
1395 * one of the values of the NSSNameChoice enumeration, and the type
1396 * of the arg variable must be as specified in the following table:
1397 *
1398 * Choice Type
1399 * ======================== ===========
1400 * NSSNameChoiceRdnSequence NSSRDNSeq *
1401 *
1402 * If the optional arena argument is non-null, the memory used will
1403 * be obtained from that arena; otherwise, the memory will be
1404 * obtained from the heap. This routine may return NULL upon error,
1405 * in which case it will have set an error on the error stack.
1406 *
1407 * The error may be one of the following values:
1408 * NSS_ERROR_INVALID_CHOICE
1409 * NSS_ERROR_INVALID_ARGUMENT
1410 * NSS_ERROR_NO_MEMORY
1411 *
1412 * Return value:
1413 * NULL upon error
1414 * A pointer to an NSSName upon success
1415 */
1416
1417 NSS_EXTERN NSSName *
1418 nssName_Create
1419 (
1420 NSSArena *arenaOpt,
1421 NSSNameChoice choice,
1422 void *arg
1423 );
1424
1425 /*
1426 * nssName_Destroy
1427 *
1428 * This routine will destroy a Name object. It should eventually be
1429 * called on all Names created without an arena. While it is not
1430 * necessary to call it on Names created within an arena, it is not
1431 * an error to do so. This routine returns a PRStatus value; if
1432 * successful, it will return PR_SUCCESS. If unsuccessful, it will
1433 * set an error on the error stack and return PR_FAILURE.
1434 *
1435 * The error may be one of the following values:
1436 * NSS_ERROR_INVALID_NAME
1437 *
1438 * Return value:
1439 * PR_FAILURE upon error
1440 * PR_SUCCESS upon success
1441 */
1442
1443 NSS_EXTERN PRStatus
1444 nssName_Destroy
1445 (
1446 NSSName *name
1447 );
1448
1449 /*
1450 * nssName_GetDEREncoding
1451 *
1452 * This routine will DER-encode a name object. If the optional arena
1453 * argument is non-null, the memory used will be obtained from that
1454 * arena; otherwise, the memory will be obtained from the heap. This
1455 * routine may return null upon error, in which case it will have set
1456 * an error on the error stack.
1457 *
1458 * The error may be one of the following values:
1459 * NSS_ERROR_INVALID_NAME
1460 * NSS_ERROR_NO_MEMORY
1461 *
1462 * Return value:
1463 * NULL upon error
1464 * The DER encoding of this NSSName
1465 */
1466
1467 NSS_EXTERN NSSDER *
1468 nssName_GetDEREncoding
1469 (
1470 NSSName *name,
1471 NSSArena *arenaOpt
1472 );
1473
1474 /*
1475 * nssName_GetUTF8Encoding
1476 *
1477 * This routine returns a UTF8 string containing a string
1478 * representation of the Name in the format specified by the
1479 * underlying name choice. If the optional arena argument is non-null,
1480 * the memory used will be obtained from that arena; otherwise, the
1481 * memory will be obtained from the heap. This routine may return
1482 * NULL upon error, in which case it will have set an error on the
1483 * error stack.
1484 *
1485 * The error may be one of the following values:
1486 * NSS_ERROR_INVALID_NAME
1487 * NSS_ERROR_NO_MEMORY
1488 *
1489 * Return value:
1490 * NULL upon error
1491 * A pointer to the UTF8 string
1492 */
1493
1494 NSS_EXTERN NSSUTF8 *
1495 nssName_GetUTF8Encoding
1496 (
1497 NSSName *name,
1498 NSSArena *arenaOpt
1499 );
1500
1501 /*
1502 * nssName_GetChoice
1503 *
1504 * This routine returns the type of the choice underlying the specified
1505 * name. The return value will be a member of the NSSNameChoice
1506 * enumeration. This routine may return NSSNameChoiceInvalid upon
1507 * error, in which case it will have set an error on the error stack.
1508 *
1509 * The error may be one of the following values:
1510 * NSS_ERROR_INVALID_NAME
1511 *
1512 * Return value:
1513 * NSSNameChoiceInvalid upon error
1514 * An other member of the NSSNameChoice enumeration upon success
1515 */
1516
1517 NSS_EXTERN NSSNameChoice
1518 nssName_GetChoice
1519 (
1520 NSSName *name
1521 );
1522
1523 /*
1524 * nssName_GetRDNSequence
1525 *
1526 * If the choice underlying the specified NSSName is that of an
1527 * RDNSequence, this routine will return a pointer to that RDN
1528 * sequence. Otherwise, this routine will place an error on the
1529 * error stack, and return NULL. If the optional arena argument is
1530 * non-null, the memory required will be obtained from that arena;
1531 * otherwise, the memory will be obtained from the heap. The
1532 * caller owns the returned pointer. This routine may return NULL
1533 * upon error, in which case it will have set an error on the error
1534 * stack.
1535 *
1536 * The error may be one of the following values:
1537 * NSS_ERROR_INVALID_NAME
1538 * NSS_ERROR_WRONG_CHOICE
1539 * NSS_ERROR_NO_MEMORY
1540 *
1541 * Return value:
1542 * NULL upon error
1543 * A caller-owned pointer to an NSSRDNSeq
1544 */
1545
1546 NSS_EXTERN NSSRDNSeq *
1547 nssName_GetRDNSequence
1548 (
1549 NSSName *name,
1550 NSSArena *arenaOpt
1551 );
1552
1553 /*
1554 * nssName_GetSpecifiedChoice
1555 *
1556 * If the choice underlying the specified NSSName matches the specified
1557 * choice, a caller-owned pointer to that underlying object will be
1558 * returned. Otherwise, an error will be placed on the error stack and
1559 * NULL will be returned. If the optional arena argument is non-null,
1560 * the memory required will be obtained from that arena; otherwise, the
1561 * memory will be obtained from the heap. The caller owns the returned
1562 * pointer. This routine may return NULL upon error, in which case it
1563 * will have set an error on the error stack.
1564 *
1565 * The error may be one of the following values:
1566 * NSS_ERROR_INVALID_NAME
1567 * NSS_ERROR_WRONG_CHOICE
1568 * NSS_ERROR_NO_MEMORY
1569 *
1570 * Return value:
1571 * NULL upon error
1572 * A caller-owned pointer, which must be typecast
1573 */
1574
1575 NSS_EXTERN void *
1576 nssName_GetSpecifiedChoice
1577 (
1578 NSSName *name,
1579 NSSNameChoice choice,
1580 NSSArena *arenaOpt
1581 );
1582
1583 /*
1584 * nssName_Compare
1585 *
1586 * This routine compares two Names for equality. For two Names to be
1587 * equal, they must have the same choice of underlying types, and the
1588 * underlying values must be equal. The result of the comparison will
1589 * be stored at the location pointed to by the "equalp" variable, which
1590 * must point to a valid PRBool. This routine may return PR_FAILURE
1591 * upon error, in which case it will have set an error on the error
1592 * stack.
1593 *
1594 * The error may be one of the following values:
1595 * NSS_ERROR_INVALID_NAME
1596 * NSS_ERROR_INVALID_ARGUMENT
1597 *
1598 * Return value:
1599 * PR_FAILURE on error
1600 * PR_SUCCESS upon a successful comparison (equal or not)
1601 */
1602
1603 NSS_EXTERN PRStatus
1604 nssName_Compare
1605 (
1606 NSSName *name1,
1607 NSSName *name2,
1608 PRBool *equalp
1609 );
1610
1611 /*
1612 * nssName_Duplicate
1613 *
1614 * This routine duplicates the specified nssname. If the optional
1615 * arena argument is non-null, the memory required will be obtained
1616 * from that arena; otherwise, the memory will be obtained from the
1617 * heap. This routine may return NULL upon error, in which case it
1618 * will have placed an error on the error stack.
1619 *
1620 * The error may be one of the following values:
1621 * NSS_ERROR_INVALID_NAME
1622 * NSS_ERROR_NO_MEMORY
1623 *
1624 * Return value:
1625 * NULL upon error
1626 * A pointer to a new NSSName
1627 */
1628
1629 NSS_EXTERN NSSName *
1630 nssName_Duplicate
1631 (
1632 NSSName *name,
1633 NSSArena *arenaOpt
1634 );
1635
1636 /*
1637 * nssName_GetUID
1638 *
1639 * This routine will attempt to derive a user identifier from the
1640 * specified name, if the choices and content of the name permit.
1641 * If the Name consists of a Sequence of Relative Distinguished
1642 * Names containing a UID attribute, the UID will be the value of
1643 * that attribute. Note that no UID attribute is defined in either
1644 * PKIX or PKCS#9; rather, this seems to derive from RFC 1274, which
1645 * defines the type as a caseIgnoreString. We'll return a Directory
1646 * String. If the optional arena argument is non-null, the memory
1647 * used will be obtained from that arena; otherwise, the memory will
1648 * be obtained from the heap. This routine may return NULL upon error,
1649 * in which case it will have set an error on the error stack.
1650 *
1651 * The error may be one of the following values:
1652 * NSS_ERROR_INVALID_NAME
1653 * NSS_ERROR_NO_UID
1654 * NSS_ERROR_NO_MEMORY
1655 *
1656 * Return value:
1657 * NULL upon error
1658 * A pointer to a UTF8 String.
1659 */
1660
1661 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1662 nssName_GetUID
1663 (
1664 NSSName *name,
1665 NSSArena *arenaOpt
1666 );
1667
1668 /*
1669 * nssName_GetEmail
1670 *
1671 * This routine will attempt to derive an email address from the
1672 * specified name, if the choices and content of the name permit.
1673 * If the Name consists of a Sequence of Relative Distinguished
1674 * Names containing either a PKIX email address or a PKCS#9 email
1675 * address, the result will be the value of that attribute. If the
1676 * optional arena argument is non-null, the memory used will be
1677 * obtained from that arena; otherwise, the memory will be obtained
1678 * from the heap. This routine may return NULL upon error, in which
1679 * case it will have set an error on the error stack.
1680 *
1681 * The error may be one of the following values:
1682 * NSS_ERROR_INVALID_NAME
1683 * NSS_ERROR_NO_EMAIL
1684 * NSS_ERROR_NO_MEMORY
1685 *
1686 * Return value:
1687 * NULL upon error
1688 * A pointer to a UTF8 String
1689 */
1690
1691 NSS_EXTERN NSSUTF8 * /* XXX fgmr IA5 String */
1692 nssName_GetEmail
1693 (
1694 NSSName *name,
1695 NSSArena *arenaOpt
1696 );
1697
1698 /*
1699 * nssName_GetCommonName
1700 *
1701 * This routine will attempt to derive a common name from the
1702 * specified name, if the choices and content of the name permit.
1703 * If the Name consists of a Sequence of Relative Distinguished Names
1704 * containing a PKIX Common Name, the result will be that name. If
1705 * the optional arena argument is non-null, the memory used will be
1706 * obtained from that arena; otherwise, the memory will be obtained
1707 * from the heap. This routine may return NULL upon error, in which
1708 * case it will have set an error on the error stack.
1709 *
1710 * The error may be one of the following values:
1711 * NSS_ERROR_INVALID_NAME
1712 * NSS_ERROR_NO_COMMON_NAME
1713 * NSS_ERROR_NO_MEMORY
1714 *
1715 * Return value:
1716 * NULL upon error
1717 * A pointer to a UTF8 String
1718 */
1719
1720 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1721 nssName_GetCommonName
1722 (
1723 NSSName *name,
1724 NSSArena *arenaOpt
1725 );
1726
1727 /*
1728 * nssName_GetOrganization
1729 *
1730 * This routine will attempt to derive an organisation name from the
1731 * specified name, if the choices and content of the name permit.
1732 * If Name consists of a Sequence of Relative Distinguished names
1733 * containing a PKIX Organization, the result will be the value of
1734 * that attribute. If the optional arena argument is non-null, the
1735 * memory used will be obtained from that arena; otherwise, the memory
1736 * will be obtained from the heap. This routine may return NULL upon
1737 * error, in which case it will have set an error on the error stack.
1738 *
1739 * The error may be one of the following values:
1740 * NSS_ERROR_INVALID_NAME
1741 * NSS_ERROR_NO_ORGANIZATION
1742 * NSS_ERROR_NO_MEMORY
1743 *
1744 * Return value:
1745 * NULL upon error
1746 * A pointer to a UTF8 String
1747 */
1748
1749 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1750 nssName_GetOrganization
1751 (
1752 NSSName *name,
1753 NSSArena *arenaOpt
1754 );
1755
1756 /*
1757 * nssName_GetOrganizationalUnits
1758 *
1759 * This routine will attempt to derive a sequence of organisational
1760 * unit names from the specified name, if the choices and content of
1761 * the name permit. If the Name consists of a Sequence of Relative
1762 * Distinguished Names containing one or more organisational units,
1763 * the result will be the values of those attributes. If the optional
1764 * arena argument is non-null, the memory used will be obtained from
1765 * that arena; otherwise, the memory will be obtained from the heap.
1766 * This routine may return NULL upon error, in which case it will have
1767 * set an error on the error stack.
1768 *
1769 * The error may be one of the following values:
1770 * NSS_ERROR_INVALID_NAME
1771 * NSS_ERROR_NO_ORGANIZATIONAL_UNITS
1772 * NSS_ERROR_NO_MEMORY
1773 *
1774 * Return value:
1775 * NULL upon error
1776 * A pointer to a null-terminated array of UTF8 Strings
1777 */
1778
1779 NSS_EXTERN NSSUTF8 ** /* XXX fgmr DirectoryString */
1780 nssName_GetOrganizationalUnits
1781 (
1782 NSSName *name,
1783 NSSArena *arenaOpt
1784 );
1785
1786 /*
1787 * nssName_GetStateOrProvince
1788 *
1789 * This routine will attempt to derive a state or province name from
1790 * the specified name, if the choices and content of the name permit.
1791 * If the Name consists of a Sequence of Relative Distinguished Names
1792 * containing a state or province, the result will be the value of
1793 * that attribute. If the optional arena argument is non-null, the
1794 * memory used will be obtained from that arena; otherwise, the memory
1795 * will be obtained from the heap. This routine may return NULL upon
1796 * error, in which case it will have set an error on the error stack.
1797 *
1798 * The error may be one of the following values:
1799 * NSS_ERROR_INVALID_NAME
1800 * NSS_ERROR_NO_STATE_OR_PROVINCE
1801 * NSS_ERROR_NO_MEMORY
1802 *
1803 * Return value:
1804 * NULL upon error
1805 * A pointer to a UTF8 String
1806 */
1807
1808 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1809 nssName_GetStateOrProvince
1810 (
1811 NSSName *name,
1812 NSSArena *arenaOpt
1813 );
1814
1815 /*
1816 * nssName_GetLocality
1817 *
1818 * This routine will attempt to derive a locality name from the
1819 * specified name, if the choices and content of the name permit. If
1820 * the Name consists of a Sequence of Relative Distinguished names
1821 * containing a Locality, the result will be the value of that
1822 * attribute. If the optional arena argument is non-null, the memory
1823 * used will be obtained from that arena; otherwise, the memory will
1824 * be obtained from the heap. This routine may return NULL upon error,
1825 * in which case it will have set an error on the error stack.
1826 *
1827 * The error may be one of the following values:
1828 * NSS_ERROR_INVALID_NAME
1829 * NSS_ERROR_NO_LOCALITY
1830 * NSS_ERROR_NO_MEMORY
1831 *
1832 * Return value:
1833 * NULL upon error
1834 * A pointer to a UTF8 String
1835 */
1836
1837 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1838 nssName_GetLocality
1839 (
1840 NSSName *name,
1841 NSSArena *arenaOpt
1842 );
1843
1844 /*
1845 * nssName_GetCountry
1846 *
1847 * This routine will attempt to derive a country name from the
1848 * specified name, if the choices and content of the name permit.
1849 * If the Name consists of a Sequence of Relative Distinguished
1850 * Names containing a Country, the result will be the value of
1851 * that attribute.. If the optional arena argument is non-null,
1852 * the memory used will be obtained from that arena; otherwise,
1853 * the memory will be obtained from the heap. This routine may
1854 * return NULL upon error, in which case it will have set an error
1855 * on the error stack.
1856 *
1857 * The error may be one of the following values:
1858 * NSS_ERROR_INVALID_NAME
1859 * NSS_ERROR_NO_COUNTRY
1860 * NSS_ERROR_NO_MEMORY
1861 *
1862 * Return value:
1863 * NULL upon error
1864 * A pointer to a UTF8 String
1865 */
1866
1867 NSS_EXTERN NSSUTF8 * /* XXX fgmr PrintableString */
1868 nssName_GetCountry
1869 (
1870 NSSName *name,
1871 NSSArena *arenaOpt
1872 );
1873
1874 /*
1875 * nssName_GetAttribute
1876 *
1877 * If the specified name consists of a Sequence of Relative
1878 * Distinguished Names containing an attribute with the specified
1879 * type, and the actual value of that attribute may be expressed
1880 * with a Directory String, then the value of that attribute will
1881 * be returned as a Directory String. If the optional arena argument
1882 * is non-null, the memory used will be obtained from that arena;
1883 * otherwise, the memory will be obtained from the heap. This routine
1884 * may return NULL upon error, in which case it will have set an error
1885 * on the error stack.
1886 *
1887 * The error may be one of the following values:
1888 * NSS_ERROR_INVALID_NAME
1889 * NSS_ERROR_NO_ATTRIBUTE
1890 * NSS_ERROR_ATTRIBUTE_VALUE_NOT_STRING
1891 *
1892 * Return value:
1893 * NULL upon error
1894 * A pointer to a UTF8 String
1895 */
1896
1897 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
1898 nssName_GetAttribute
1899 (
1900 NSSName *name,
1901 NSSOID *attribute,
1902 NSSArena *arenaOpt
1903 );
1904
1905 /*
1906 * nssName_EvaluateUTF8
1907 *
1908 * This routine evaluates a UTF8 string, and returns PR_TRUE if the
1909 * string contains the string representation of an NSSName. This
1910 * routine is used by the GeneralName routine
1911 * nssGeneralName_CreateFromUTF8 to determine which choice of
1912 * general name the string may encode. This routine may return
1913 * PR_FALSE upon error, but it subsumes that condition under the
1914 * general "string does not evaluate as a Name" state, and does not
1915 * set an error on the error stack.
1916 *
1917 * Return value:
1918 * PR_TRUE if the string represents a Name
1919 * PR_FALSE otherwise
1920 */
1921
1922 NSS_EXTERN PRBool
1923 nssName_EvaluateUTF8
1924 (
1925 NSSUTF8 *str
1926 );
1927
1928 /*
1929 * NSSGeneralName
1930 *
1931 * The non-public "methods" regarding this "object" are:
1932 *
1933 * nssGeneralName_CreateFromBER -- constructor
1934 * nssGeneralName_CreateFromUTF8 -- constructor
1935 * nssGeneralName_Create -- constructor
1936 *
1937 * nssGeneralName_Destroy
1938 * nssGeneralName_GetDEREncoding
1939 * nssGeneralName_GetUTF8Encoding
1940 * nssGeneralName_GetChoice
1941 * nssGeneralName_GetOtherName
1942 * nssGeneralName_GetRfc822Name
1943 * nssGeneralName_GetDNSName
1944 * nssGeneralName_GetX400Address
1945 * nssGeneralName_GetDirectoryName
1946 * nssGeneralName_GetEdiPartyName
1947 * nssGeneralName_GetUniformResourceIdentifier
1948 * nssGeneralName_GetIPAddress
1949 * nssGeneralName_GetRegisteredID
1950 * nssGeneralName_GetSpecifiedChoice
1951 * nssGeneralName_Compare
1952 * nssGeneralName_Duplicate
1953 *
1954 * nssGeneralName_GetUID
1955 * nssGeneralName_GetEmail
1956 * nssGeneralName_GetCommonName
1957 * nssGeneralName_GetOrganization
1958 * nssGeneralName_GetOrganizationalUnits
1959 * nssGeneralName_GetStateOrProvince
1960 * nssGeneralName_GetLocality
1961 * nssGeneralName_GetCountry
1962 * nssGeneralName_GetAttribute
1963 */
1964
1965 /*
1966 * nssGeneralName_CreateFromBER
1967 *
1968 * This routine creates an NSSGeneralName by decoding a BER- or DER-
1969 * encoded general name. If the optional arena argument is non-null,
1970 * the memory used will be obtained from that arena; otherwise, the
1971 * memory will be obtained from the heap. This routine may return
1972 * NULL upon error, in which case it will have set an error on the
1973 * error stack.
1974 *
1975 * The error may be one of the following values:
1976 * NSS_ERROR_INVALID_BER
1977 * NSS_ERROR_NO_MEMORY
1978 *
1979 * Return value:
1980 * NULL upon error
1981 * A pointer to an NSSGeneralName upon success
1982 */
1983
1984 NSS_EXTERN NSSGeneralName *
1985 nssGeneralName_CreateFromBER
1986 (
1987 NSSArena *arenaOpt,
1988 NSSBER *berGeneralName
1989 );
1990
1991 /*
1992 * nssGeneralName_CreateFromUTF8
1993 *
1994 * This routine creates an NSSGeneralName by decoding a UTF8 string
1995 * consisting of the string representation of one of the choices of
1996 * general names. If the optional arena argument is non-null, the
1997 * memory used will be obtained from that arena; otherwise, the memory
1998 * will be obtained from the heap. The routine may return NULL upon
1999 * error, in which case it will have set an error on the error stack.
2000 *
2001 * The error may be one of the following values:
2002 * NSS_ERROR_INVALID_UTF8
2003 * NSS_ERROR_NO_MEMORY
2004 *
2005 * Return value:
2006 * NULL upon error
2007 * A pointer to an NSSGeneralName upon success
2008 */
2009
2010 NSS_EXTERN NSSGeneralName *
2011 nssGeneralName_CreateFromUTF8
2012 (
2013 NSSArena *arenaOpt,
2014 NSSUTF8 *stringGeneralName
2015 );
2016
2017 /*
2018 * nssGeneralName_Create
2019 *
2020 * This routine creates an NSSGeneralName with the specified choice of
2021 * underlying name types. The value of the choice variable must be one
2022 * of the values of the NSSGeneralNameChoice enumeration, and the type
2023 * of the arg variable must be as specified in the following table:
2024 *
2025 * Choice Type
2026 * ============================================ =========
2027 * NSSGeneralNameChoiceOtherName
2028 * NSSGeneralNameChoiceRfc822Name
2029 * NSSGeneralNameChoiceDNSName
2030 * NSSGeneralNameChoiceX400Address
2031 * NSSGeneralNameChoiceDirectoryName NSSName *
2032 * NSSGeneralNameChoiceEdiPartyName
2033 * NSSGeneralNameChoiceUniformResourceIdentifier
2034 * NSSGeneralNameChoiceIPAddress
2035 * NSSGeneralNameChoiceRegisteredID
2036 *
2037 * If the optional arena argument is non-null, the memory used will
2038 * be obtained from that arena; otherwise, the memory will be
2039 * obtained from the heap. This routine may return NULL upon error,
2040 * in which case it will have set an error on the error stack.
2041 *
2042 * The error may be one fo the following values:
2043 * NSS_ERROR_INVALID_CHOICE
2044 * NSS_ERROR_INVALID_ARGUMENT
2045 * NSS_ERROR_NO_MEMORY
2046 *
2047 * Return value:
2048 * NULL upon error
2049 * A pointer to an NSSGeneralName upon success
2050 */
2051
2052 NSS_EXTERN NSSGeneralName *
2053 nssGeneralName_Create
2054 (
2055 NSSGeneralNameChoice choice,
2056 void *arg
2057 );
2058
2059 /*
2060 * nssGeneralName_Destroy
2061 *
2062 * This routine will destroy a General Name object. It should
2063 * eventually be called on all General Names created without an arena.
2064 * While it is not necessary to call it on General Names created within
2065 * an arena, it is not an error to do so. This routine returns a
2066 * PRStatus value; if successful, it will return PR_SUCCESS. If
2067 * usuccessful, it will set an error on the error stack and return
2068 * PR_FAILURE.
2069 *
2070 * The error may be one of the following values:
2071 * NSS_ERROR_INVALID_GENERAL_NAME
2072 *
2073 * Return value:
2074 * PR_FAILURE upon failure
2075 * PR_SUCCESS upon success
2076 */
2077
2078 NSS_EXTERN PRStatus
2079 nssGeneralName_Destroy
2080 (
2081 NSSGeneralName *generalName
2082 );
2083
2084 /*
2085 * nssGeneralName_GetDEREncoding
2086 *
2087 * This routine will DER-encode a name object. If the optional arena
2088 * argument is non-null, the memory used will be obtained from that
2089 * arena; otherwise, the memory will be obtained from the heap. This
2090 * routine may return null upon error, in which case it will have set
2091 * an error on the error stack.
2092 *
2093 * The error may be one of the following values:
2094 * NSS_ERROR_INVALID_GENERAL_NAME
2095 * NSS_ERROR_NO_MEMORY
2096 *
2097 * Return value:
2098 * NULL upon error
2099 * The DER encoding of this NSSGeneralName
2100 */
2101
2102 NSS_EXTERN NSSDER *
2103 nssGeneralName_GetDEREncoding
2104 (
2105 NSSGeneralName *generalName,
2106 NSSArena *arenaOpt
2107 );
2108
2109 /*
2110 * nssGeneralName_GetUTF8Encoding
2111 *
2112 * This routine returns a UTF8 string containing a string
2113 * representation of the General Name in the format specified by the
2114 * underlying name choice. If the optional arena argument is
2115 * non-null, the memory used will be obtained from that arena;
2116 * otherwise, the memory will be obtained from the heap. This routine
2117 * may return NULL upon error, in which case it will have set an error
2118 * on the error stack.
2119 *
2120 * The error may be one of the following values:
2121 * NSS_ERROR_INVALID_GENERAL_NAME
2122 * NSS_ERROR_NO_MEMORY
2123 *
2124 * Return value:
2125 * NULL upon error
2126 * A pointer to a UTF8 string
2127 */
2128
2129 NSS_EXTERN NSSUTF8 *
2130 nssGeneralName_GetUTF8Encoding
2131 (
2132 NSSGeneralName *generalName,
2133 NSSArena *arenaOpt
2134 );
2135
2136 /*
2137 * nssGeneralName_GetChoice
2138 *
2139 * This routine returns the type of choice underlying the specified
2140 * general name. The return value will be a member of the
2141 * NSSGeneralNameChoice enumeration. This routine may return
2142 * NSSGeneralNameChoiceInvalid upon error, in which case it will have
2143 * set an error on the error stack.
2144 *
2145 * The error may be one of the following values:
2146 * NSS_ERROR_INVALID_GENERAL_NAME
2147 *
2148 * Return value:
2149 * NSSGeneralNameChoiceInvalid upon error
2150 * An other member of the NSSGeneralNameChoice enumeration
2151 */
2152
2153 NSS_EXTERN NSSGeneralNameChoice
2154 nssGeneralName_GetChoice
2155 (
2156 NSSGeneralName *generalName
2157 );
2158
2159 /*
2160 * nssGeneralName_GetOtherName
2161 *
2162 * If the choice underlying the specified NSSGeneralName is that of an
2163 * Other Name, this routine will return a pointer to that Other name.
2164 * Otherwise, this routine will place an error on the error stack, and
2165 * return NULL. If the optional arena argument is non-null, the memory
2166 * required will be obtained from that arena; otherwise, the memory
2167 * will be obtained from the heap. The caller owns the returned
2168 * pointer. This routine may return NULL upon error, in which case it
2169 * will have set an error on the error stack.
2170 *
2171 * The error may be one of the following values:
2172 * NSS_ERROR_INVALID_GENERAL_NAME
2173 * NSS_ERROR_WRONG_CHOICE
2174 * NSS_ERROR_NO_MEMORY
2175 *
2176 * Return value:
2177 * NULL upon error
2178 * A caller-owned pointer to an NSSOtherName
2179 */
2180
2181 NSS_EXTERN NSSOtherName *
2182 nssGeneralName_GetOtherName
2183 (
2184 NSSGeneralName *generalName,
2185 NSSArena *arenaOpt
2186 );
2187
2188 /*
2189 * nssGeneralName_GetRfc822Name
2190 *
2191 * If the choice underlying the specified NSSGeneralName is that of an
2192 * RFC 822 Name, this routine will return a pointer to that name.
2193 * Otherwise, this routine will place an error on the error stack, and
2194 * return NULL. If the optional arena argument is non-null, the memory
2195 * required will be obtained from that arena; otherwise, the memory
2196 * will be obtained from the heap. The caller owns the returned
2197 * pointer. This routine may return NULL upon error, in which case it
2198 * will have set an error on the error stack.
2199 *
2200 * The error may be one of the following values:
2201 * NSS_ERROR_INVALID_GENERAL_NAME
2202 * NSS_ERROR_WRONG_CHOICE
2203 * NSS_ERROR_NO_MEMORY
2204 *
2205 * Return value:
2206 * NULL upon error
2207 * A caller-owned pointer to an NSSRFC822Name
2208 */
2209
2210 NSS_EXTERN NSSRFC822Name *
2211 nssGeneralName_GetRfc822Name
2212 (
2213 NSSGeneralName *generalName,
2214 NSSArena *arenaOpt
2215 );
2216
2217 /*
2218 * nssGeneralName_GetDNSName
2219 *
2220 * If the choice underlying the specified NSSGeneralName is that of a
2221 * DNS Name, this routine will return a pointer to that DNS name.
2222 * Otherwise, this routine will place an error on the error stack, and
2223 * return NULL. If the optional arena argument is non-null, the memory
2224 * required will be obtained from that arena; otherwise, the memory
2225 * will be obtained from the heap. The caller owns the returned
2226 * pointer. This routine may return NULL upon error, in which case it
2227 * will have set an error on the error stack.
2228 *
2229 * The error may be one of the following values:
2230 * NSS_ERROR_INVALID_GENERAL_NAME
2231 * NSS_ERROR_WRONG_CHOICE
2232 * NSS_ERROR_NO_MEMORY
2233 *
2234 * Return value:
2235 * NULL upon error
2236 * A caller-owned pointer to an NSSDNSName
2237 */
2238
2239 NSS_EXTERN NSSDNSName *
2240 nssGeneralName_GetDNSName
2241 (
2242 NSSGeneralName *generalName,
2243 NSSArena *arenaOpt
2244 );
2245
2246 /*
2247 * nssGeneralName_GetX400Address
2248 *
2249 * If the choice underlying the specified NSSGeneralName is that of an
2250 * X.400 Address, this routine will return a pointer to that Address.
2251 * Otherwise, this routine will place an error on the error stack, and
2252 * return NULL. If the optional arena argument is non-null, the memory
2253 * required will be obtained from that arena; otherwise, the memory
2254 * will be obtained from the heap. The caller owns the returned
2255 * pointer. This routine may return NULL upon error, in which case it
2256 * will have set an error on the error stack.
2257 *
2258 * The error may be one of the following values:
2259 * NSS_ERROR_INVALID_GENERAL_NAME
2260 * NSS_ERROR_WRONG_CHOICE
2261 * NSS_ERROR_NO_MEMORY
2262 *
2263 * Return value:
2264 * NULL upon error
2265 * A caller-owned pointer to an NSSX400Address
2266 */
2267
2268 NSS_EXTERN NSSX400Address *
2269 nssGeneralName_GetX400Address
2270 (
2271 NSSGeneralName *generalName,
2272 NSSArena *arenaOpt
2273 );
2274
2275 /*
2276 * nssGeneralName_GetDirectoryName
2277 *
2278 * If the choice underlying the specified NSSGeneralName is that of a
2279 * (directory) Name, this routine will return a pointer to that name.
2280 * Otherwise, this routine will place an error on the error stack, and
2281 * return NULL. If the optional arena argument is non-null, the memory
2282 * required will be obtained from that arena; otherwise, the memory
2283 * will be obtained from the heap. The caller owns the returned
2284 * pointer. This routine may return NULL upon error, in which case it
2285 * will have set an error on the error stack.
2286 *
2287 * The error may be one of the following values:
2288 * NSS_ERROR_INVALID_GENERAL_NAME
2289 * NSS_ERROR_WRONG_CHOICE
2290 * NSS_ERROR_NO_MEMORY
2291 *
2292 * Return value:
2293 * NULL upon error
2294 * A caller-owned pointer to an NSSName
2295 */
2296
2297 NSS_EXTERN NSSName *
2298 nssGeneralName_GetName
2299 (
2300 NSSGeneralName *generalName,
2301 NSSArena *arenaOpt
2302 );
2303
2304 /*
2305 * nssGeneralName_GetEdiPartyName
2306 *
2307 * If the choice underlying the specified NSSGeneralName is that of an
2308 * EDI Party Name, this routine will return a pointer to that name.
2309 * Otherwise, this routine will place an error on the error stack, and
2310 * return NULL. If the optional arena argument is non-null, the memory
2311 * required will be obtained from that arena; otherwise, the memory
2312 * will be obtained from the heap. The caller owns the returned
2313 * pointer. This routine may return NULL upon error, in which case it
2314 * will have set an error on the error stack.
2315 *
2316 * The error may be one of the following values:
2317 * NSS_ERROR_INVALID_GENERAL_NAME
2318 * NSS_ERROR_WRONG_CHOICE
2319 * NSS_ERROR_NO_MEMORY
2320 *
2321 * Return value:
2322 * NULL upon error
2323 * A caller-owned pointer to an NSSEdiPartyName
2324 */
2325
2326 NSS_EXTERN NSSEdiPartyName *
2327 nssGeneralName_GetEdiPartyName
2328 (
2329 NSSGeneralName *generalName,
2330 NSSArena *arenaOpt
2331 );
2332
2333 /*
2334 * nssGeneralName_GetUniformResourceIdentifier
2335 *
2336 * If the choice underlying the specified NSSGeneralName is that of a
2337 * URI, this routine will return a pointer to that URI.
2338 * Otherwise, this routine will place an error on the error stack, and
2339 * return NULL. If the optional arena argument is non-null, the memory
2340 * required will be obtained from that arena; otherwise, the memory
2341 * will be obtained from the heap. The caller owns the returned
2342 * pointer. This routine may return NULL upon error, in which case it
2343 * will have set an error on the error stack.
2344 *
2345 * The error may be one of the following values:
2346 * NSS_ERROR_INVALID_GENERAL_NAME
2347 * NSS_ERROR_WRONG_CHOICE
2348 * NSS_ERROR_NO_MEMORY
2349 *
2350 * Return value:
2351 * NULL upon error
2352 * A caller-owned pointer to an NSSURI
2353 */
2354
2355 NSS_EXTERN NSSURI *
2356 nssGeneralName_GetUniformResourceIdentifier
2357 (
2358 NSSGeneralName *generalName,
2359 NSSArena *arenaOpt
2360 );
2361
2362 /*
2363 * nssGeneralName_GetIPAddress
2364 *
2365 * If the choice underlying the specified NSSGeneralName is that of an
2366 * IP Address , this routine will return a pointer to that address.
2367 * Otherwise, this routine will place an error on the error stack, and
2368 * return NULL. If the optional arena argument is non-null, the memory
2369 * required will be obtained from that arena; otherwise, the memory
2370 * will be obtained from the heap. The caller owns the returned
2371 * pointer. This routine may return NULL upon error, in which case it
2372 * will have set an error on the error stack.
2373 *
2374 * The error may be one of the following values:
2375 * NSS_ERROR_INVALID_GENERAL_NAME
2376 * NSS_ERROR_WRONG_CHOICE
2377 * NSS_ERROR_NO_MEMORY
2378 *
2379 * Return value:
2380 * NULL upon error
2381 * A caller-owned pointer to an NSSIPAddress
2382 */
2383
2384 NSS_EXTERN NSSIPAddress *
2385 nssGeneralName_GetIPAddress
2386 (
2387 NSSGeneralName *generalName,
2388 NSSArena *arenaOpt
2389 );
2390
2391 /*
2392 * nssGeneralName_GetRegisteredID
2393 *
2394 * If the choice underlying the specified NSSGeneralName is that of a
2395 * Registered ID, this routine will return a pointer to that ID.
2396 * Otherwise, this routine will place an error on the error stack, and
2397 * return NULL. If the optional arena argument is non-null, the memory
2398 * required will be obtained from that arena; otherwise, the memory
2399 * will be obtained from the heap. The caller owns the returned
2400 * pointer. This routine may return NULL upon error, in which case it
2401 * will have set an error on the error stack.
2402 *
2403 * The error may be one of the following values:
2404 * NSS_ERROR_INVALID_GENERAL_NAME
2405 * NSS_ERROR_WRONG_CHOICE
2406 * NSS_ERROR_NO_MEMORY
2407 *
2408 * Return value:
2409 * NULL upon error
2410 * A caller-owned pointer to an NSSRegisteredID
2411 */
2412
2413 NSS_EXTERN NSSRegisteredID *
2414 nssGeneralName_GetRegisteredID
2415 (
2416 NSSGeneralName *generalName,
2417 NSSArena *arenaOpt
2418 );
2419
2420 /*
2421 * nssGeneralName_GetSpecifiedChoice
2422 *
2423 * If the choice underlying the specified NSSGeneralName matches the
2424 * specified choice, a caller-owned pointer to that underlying object
2425 * will be returned. Otherwise, an error will be placed on the error
2426 * stack and NULL will be returned. If the optional arena argument
2427 * is non-null, the memory required will be obtained from that arena;
2428 * otherwise, the memory will be obtained from the heap. The caller
2429 * owns the returned pointer. This routine may return NULL upon
2430 * error, in which caes it will have set an error on the error stack.
2431 *
2432 * The error may be one of the following values:
2433 * NSS_ERROR_INVALID_GENERAL_NAME
2434 * NSS_ERROR_WRONG_CHOICE
2435 * NSS_ERROR_NO_MEMORY
2436 *
2437 * Return value:
2438 * NULL upon error
2439 * A caller-owned pointer, which must be typecast
2440 */
2441
2442 NSS_EXTERN void *
2443 nssGeneralName_GetSpecifiedChoice
2444 (
2445 NSSGeneralName *generalName,
2446 NSSGeneralNameChoice choice,
2447 NSSArena *arenaOpt
2448 );
2449
2450 /*
2451 * nssGeneralName_Compare
2452 *
2453 * This routine compares two General Names for equality. For two
2454 * General Names to be equal, they must have the same choice of
2455 * underlying types, and the underlying values must be equal. The
2456 * result of the comparison will be stored at the location pointed
2457 * to by the "equalp" variable, which must point to a valid PRBool.
2458 * This routine may return PR_FAILURE upon error, in which case it
2459 * will have set an error on the error stack.
2460 *
2461 * The error may be one of the following value:
2462 * NSS_ERROR_INVALID_GENERAL_NAME
2463 * NSS_ERROR_INVALID_ARGUMENT
2464 *
2465 * Return value:
2466 * PR_FAILURE upon error
2467 * PR_SUCCESS upon a successful comparison (equal or not)
2468 */
2469
2470 NSS_EXTERN PRStatus
2471 nssGeneralName_Compare
2472 (
2473 NSSGeneralName *generalName1,
2474 NSSGeneralName *generalName2,
2475 PRBool *equalp
2476 );
2477
2478 /*
2479 * nssGeneralName_Duplicate
2480 *
2481 * This routine duplicates the specified General Name. If the optional
2482 * arena argument is non-null, the memory required will be obtained
2483 * from that arena; otherwise, the memory will be obtained from the
2484 * heap. This routine may return NULL upon error, in which case it
2485 * will have set an error on the error stack.
2486 *
2487 * The error may be one of the following values:
2488 * NSS_ERROR_INVALID_GENERAL_NAME
2489 * NSS_ERROR_NO_MEMORY
2490 *
2491 * Return value:
2492 * NULL upon error
2493 * A pointer to a new NSSGeneralName
2494 */
2495
2496 NSS_EXTERN NSSGeneralName *
2497 nssGeneralName_Duplicate
2498 (
2499 NSSGeneralName *generalName,
2500 NSSArena *arenaOpt
2501 );
2502
2503 /*
2504 * nssGeneralName_GetUID
2505 *
2506 * This routine will attempt to derive a user identifier from the
2507 * specified general name, if the choices and content of the name
2508 * permit. If the General Name is a (directory) Name consisting
2509 * of a Sequence of Relative Distinguished Names containing a UID
2510 * attribute, the UID will be the value of that attribute. Note
2511 * that no UID attribute is defined in either PKIX or PKCS#9;
2512 * rather, this seems to derive from RFC 1274, which defines the
2513 * type as a caseIgnoreString. We'll return a Directory String.
2514 * If the optional arena argument is non-null, the memory used
2515 * will be obtained from that arena; otherwise, the memory will be
2516 * obtained from the heap. This routine may return NULL upon error,
2517 * in which case it will have set an error on the error stack.
2518 *
2519 * The error may be one of the following values:
2520 * NSS_ERROR_INVALID_GENERAL_NAME
2521 * NSS_ERROR_NO_UID
2522 * NSS_ERROR_NO_MEMORY
2523 *
2524 * Return value:
2525 * NULL upon error
2526 * A pointer to a UTF8 String.
2527 */
2528
2529 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2530 nssGeneralName_GetUID
2531 (
2532 NSSGeneralName *generalName,
2533 NSSArena *arenaOpt
2534 );
2535
2536 /*
2537 * nssGeneralName_GetEmail
2538 *
2539 * This routine will attempt to derive an email address from the
2540 * specified general name, if the choices and content of the name
2541 * permit. If the General Name is a (directory) Name consisting
2542 * of a Sequence of Relative Distinguished names containing either
2543 * a PKIX email address or a PKCS#9 email address, the result will
2544 * be the value of that attribute. If the General Name is an RFC 822
2545 * Name, the result will be the string form of that name. If the
2546 * optional arena argument is non-null, the memory used will be
2547 * obtained from that arena; otherwise, the memory will be obtained
2548 * from the heap. This routine may return NULL upon error, in which
2549 * case it will have set an error on the error stack.
2550 *
2551 * The error may be one of the following values:
2552 * NSS_ERROR_INVALID_GENERAL_NAME
2553 * NSS_ERROR_NO_EMAIL
2554 * NSS_ERROR_NO_MEMORY
2555 *
2556 * Return value:
2557 * NULL upon error
2558 * A pointer to a UTF8 String
2559 */
2560
2561 NSS_EXTERN NSSUTF8 * /* XXX fgmr IA5String */
2562 nssGeneralName_GetEmail
2563 (
2564 NSSGeneralName *generalName,
2565 NSSArena *arenaOpt
2566 );
2567
2568 /*
2569 * nssGeneralName_GetCommonName
2570 *
2571 * This routine will attempt to derive a common name from the
2572 * specified general name, if the choices and content of the name
2573 * permit. If the General Name is a (directory) Name consisting
2574 * of a Sequence of Relative Distinguished names containing a PKIX
2575 * Common Name, the result will be that name. If the optional arena
2576 * argument is non-null, the memory used will be obtained from that
2577 * arena; otherwise, the memory will be obtained from the heap. This
2578 * routine may return NULL upon error, in which case it will have set
2579 * an error on the error stack.
2580 *
2581 * The error may be one of the following values:
2582 * NSS_ERROR_INVALID_GENERAL_NAME
2583 * NSS_ERROR_NO_COMMON_NAME
2584 * NSS_ERROR_NO_MEMORY
2585 *
2586 * Return value:
2587 * NULL upon error
2588 * A pointer to a UTF8 String
2589 */
2590
2591 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2592 nssGeneralName_GetCommonName
2593 (
2594 NSSGeneralName *generalName,
2595 NSSArena *arenaOpt
2596 );
2597
2598 /*
2599 * nssGeneralName_GetOrganization
2600 *
2601 * This routine will attempt to derive an organisation name from the
2602 * specified general name, if the choices and content of the name
2603 * permit. If the General Name is a (directory) Name consisting
2604 * of a Sequence of Relative Distinguished names containing an
2605 * Organization, the result will be the value of that attribute.
2606 * If the optional arena argument is non-null, the memory used will
2607 * be obtained from that arena; otherwise, the memory will be obtained
2608 * from the heap. This routine may return NULL upon error, in which
2609 * case it will have set an error on the error stack.
2610 *
2611 * The error may be one of the following values:
2612 * NSS_ERROR_INVALID_GENERAL_NAME
2613 * NSS_ERROR_NO_ORGANIZATION
2614 * NSS_ERROR_NO_MEMORY
2615 *
2616 * Return value:
2617 * NULL upon error
2618 * A pointer to a UTF8 String
2619 */
2620
2621 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2622 nssGeneralName_GetOrganization
2623 (
2624 NSSGeneralName *generalName,
2625 NSSArena *arenaOpt
2626 );
2627
2628 /*
2629 * nssGeneralName_GetOrganizationalUnits
2630 *
2631 * This routine will attempt to derive a sequence of organisational
2632 * unit names from the specified general name, if the choices and
2633 * content of the name permit. If the General Name is a (directory)
2634 * Name consisting of a Sequence of Relative Distinguished names
2635 * containing one or more organisational units, the result will
2636 * consist of those units. If the optional arena argument is non-
2637 * null, the memory used will be obtained from that arena; otherwise,
2638 * the memory will be obtained from the heap. This routine may return
2639 * NULL upon error, in which case it will have set an error on the
2640 * error stack.
2641 *
2642 * The error may be one of the following values:
2643 * NSS_ERROR_INVALID_GENERAL_NAME
2644 * NSS_ERROR_NO_ORGANIZATIONAL_UNITS
2645 * NSS_ERROR_NO_MEMORY
2646 *
2647 * Return value:
2648 * NULL upon error
2649 * A pointer to a null-terminated array of UTF8 Strings
2650 */
2651
2652 NSS_EXTERN NSSUTF8 ** /* XXX fgmr DirectoryString */
2653 nssGeneralName_GetOrganizationalUnits
2654 (
2655 NSSGeneralName *generalName,
2656 NSSArena *arenaOpt
2657 );
2658
2659 /*
2660 * nssGeneralName_GetStateOrProvince
2661 *
2662 * This routine will attempt to derive a state or province name from
2663 * the specified general name, if the choices and content of the name
2664 * permit. If the General Name is a (directory) Name consisting
2665 * of a Sequence of Relative Distinguished names containing a state or
2666 * province, the result will be the value of that attribute. If the
2667 * optional arena argument is non-null, the memory used will be
2668 * obtained from that arena; otherwise, the memory will be obtained
2669 * from the heap. This routine may return NULL upon error, in which
2670 * case it will have set an error on the error stack.
2671 *
2672 * The error may be one of the following values:
2673 * NSS_ERROR_INVALID_GENERAL_NAME
2674 * NSS_ERROR_NO_STATE_OR_PROVINCE
2675 * NSS_ERROR_NO_MEMORY
2676 *
2677 * Return value:
2678 * NULL upon error
2679 * A pointer to a UTF8 String
2680 */
2681
2682 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2683 nssGeneralName_GetStateOrProvince
2684 (
2685 NSSGeneralName *generalName,
2686 NSSArena *arenaOpt
2687 );
2688
2689 /*
2690 * nssGeneralName_GetLocality
2691 *
2692 * This routine will attempt to derive a locality name from
2693 * the specified general name, if the choices and content of the name
2694 * permit. If the General Name is a (directory) Name consisting
2695 * of a Sequence of Relative Distinguished names containing a Locality,
2696 * the result will be the value of that attribute. If the optional
2697 * arena argument is non-null, the memory used will be obtained from
2698 * that arena; otherwise, the memory will be obtained from the heap.
2699 * This routine may return NULL upon error, in which case it will have
2700 * set an error on the error stack.
2701 *
2702 * The error may be one of the following values:
2703 * NSS_ERROR_INVALID_GENERAL_NAME
2704 * NSS_ERROR_NO_LOCALITY
2705 * NSS_ERROR_NO_MEMORY
2706 *
2707 * Return value:
2708 * NULL upon error
2709 * A pointer to a UTF8 String
2710 */
2711
2712 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2713 nssGeneralName_GetLocality
2714 (
2715 NSSGeneralName *generalName,
2716 NSSArena *arenaOpt
2717 );
2718
2719 /*
2720 * nssGeneralName_GetCountry
2721 *
2722 * This routine will attempt to derive a country name from the
2723 * specified general name, if the choices and content of the name
2724 * permit. If the General Name is a (directory) Name consisting of a
2725 * Sequence of Relative Distinguished names containing a Country, the
2726 * result will be the value of that attribute. If the optional
2727 * arena argument is non-null, the memory used will be obtained from
2728 * that arena; otherwise, the memory will be obtained from the heap.
2729 * This routine may return NULL upon error, in which case it will have
2730 * set an error on the error stack.
2731 *
2732 * The error may be one of the following values:
2733 * NSS_ERROR_INVALID_GENERAL_NAME
2734 * NSS_ERROR_NO_COUNTRY
2735 * NSS_ERROR_NO_MEMORY
2736 *
2737 * Return value:
2738 * NULL upon error
2739 * A pointer to a UTF8 String
2740 */
2741
2742 NSS_EXTERN NSSUTF8 * /* XXX fgmr PrintableString */
2743 nssGeneralName_GetCountry
2744 (
2745 NSSGeneralName *generalName,
2746 NSSArena *arenaOpt
2747 );
2748
2749 /*
2750 * nssGeneralName_GetAttribute
2751 *
2752 * If the specified general name is a (directory) name consisting
2753 * of a Sequence of Relative Distinguished Names containing an
2754 * attribute with the specified type, and the actual value of that
2755 * attribute may be expressed with a Directory String, then the
2756 * value of that attribute will be returned as a Directory String.
2757 * If the optional arena argument is non-null, the memory used will
2758 * be obtained from that arena; otherwise, the memory will be obtained
2759 * from the heap. This routine may return NULL upon error, in which
2760 * case it will have set an error on the error stack.
2761 *
2762 * The error may be one of the following values:
2763 * NSS_ERROR_INVALID_GENERAL_NAME
2764 * NSS_ERROR_NO_ATTRIBUTE
2765 * NSS_ERROR_ATTRIBUTE_VALUE_NOT_STRING
2766 *
2767 * Return value:
2768 * NULL upon error
2769 * A pointer to a UTF8 String
2770 */
2771
2772 NSS_EXTERN NSSUTF8 * /* XXX fgmr DirectoryString */
2773 nssGeneralName_GetAttribute
2774 (
2775 NSSGeneralName *generalName,
2776 NSSOID *attribute,
2777 NSSArena *arenaOpt
2778 );
2779
2780 /*
2781 * NSSGeneralNameSeq
2782 *
2783 * The public "methods" regarding this "object" are:
2784 *
2785 * nssGeneralNameSeq_CreateFromBER -- constructor
2786 * nssGeneralNameSeq_Create -- constructor
2787 *
2788 * nssGeneralNameSeq_Destroy
2789 * nssGeneralNameSeq_GetDEREncoding
2790 * nssGeneralNameSeq_AppendGeneralName
2791 * nssGeneralNameSeq_GetGeneralNameCount
2792 * nssGeneralNameSeq_GetGeneralName
2793 * nssGeneralNameSeq_Compare
2794 * nssGeneralnameSeq_Duplicate
2795 */
2796
2797 /*
2798 * nssGeneralNameSeq_CreateFromBER
2799 *
2800 * This routine creates a general name sequence by decoding a BER-
2801 * or DER-encoded GeneralNames. If the optional arena argument is
2802 * non-null, the memory used will be obtained from that arena;
2803 * otherwise, the memory will be obtained from the heap. This routine
2804 * may return NULL upon error, in which case it will have set an error
2805 * on the error stack.
2806 *
2807 * The error may be one of the following values:
2808 * NSS_ERROR_INVALID_BER
2809 * NSS_ERROR_NO_MEMORY
2810 *
2811 * Return value:
2812 * NULL upon error
2813 * A pointer to an NSSGeneralNameSeq upon success
2814 */
2815
2816 NSS_EXTERN NSSGeneralNameSeq *
2817 nssGeneralNameSeq_CreateFromBER
2818 (
2819 NSSArena *arenaOpt,
2820 NSSBER *berGeneralNameSeq
2821 );
2822
2823 /*
2824 * nssGeneralNameSeq_Create
2825 *
2826 * This routine creates an NSSGeneralNameSeq from one or more General
2827 * Names. The final argument to this routine must be NULL. If the
2828 * optional arena argument is non-null, the memory used will be
2829 * obtained from that arena; otherwise, the memory will be obtained
2830 * from the heap. This routine may return NULL upon error, in which
2831 * case it will have set an error on the error stack.
2832 *
2833 * The error may be one of the following values:
2834 * NSS_ERROR_NO_MEMORY
2835 * NSS_ERROR_INVALID_GENERAL_NAME
2836 *
2837 * Return value:
2838 * NULL upon error
2839 * A pointer to an NSSGeneralNameSeq upon success
2840 */
2841
2842 NSS_EXTERN NSSGeneralNameSeq *
2843 nssGeneralNameSeq_Create
2844 (
2845 NSSArena *arenaOpt,
2846 NSSGeneralName *generalName1,
2847 ...
2848 );
2849
2850 /*
2851 * nssGeneralNameSeq_Destroy
2852 *
2853 * This routine will destroy an NSSGeneralNameSeq object. It should
2854 * eventually be called on all NSSGeneralNameSeqs created without an
2855 * arena. While it is not necessary to call it on NSSGeneralNameSeq's
2856 * created within an arena, it is not an error to do so. This routine
2857 * returns a PRStatus value; if successful, it will return PR_SUCCESS.
2858 * If unsuccessful, it will set an error on the error stack and return
2859 * PR_FAILURE.
2860 *
2861 * The error may be one of the following values:
2862 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2863 *
2864 * Return value:
2865 * PR_FAILURE upon error
2866 * PR_SUCCESS upon success
2867 */
2868
2869 NSS_EXTERN PRStatus
2870 nssGeneralNameSeq_Destroy
2871 (
2872 NSSGeneralNameSeq *generalNameSeq
2873 );
2874
2875 /*
2876 * nssGeneralNameSeq_GetDEREncoding
2877 *
2878 * This routine will DER-encode an NSSGeneralNameSeq object. If the
2879 * optional arena argument is non-null, the memory used will be
2880 * obtained from that arena; otherwise, the memory will be obtained
2881 * from the heap. This routine may return null upon error, in which
2882 * case it will have set an error on the error stack.
2883 *
2884 * The error may be one of the following values:
2885 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2886 * NSS_ERROR_NO_MEMORY
2887 *
2888 * Return value:
2889 * NULL upon error
2890 * The DER encoding of this NSSGeneralNameSeq
2891 */
2892
2893 NSS_EXTERN NSSDER *
2894 nssGeneralNameSeq_GetDEREncoding
2895 (
2896 NSSGeneralNameSeq *generalNameSeq,
2897 NSSArena *arenaOpt
2898 );
2899
2900 /*
2901 * nssGeneralNameSeq_AppendGeneralName
2902 *
2903 * This routine appends a General Name to the end of the existing
2904 * General Name Sequence. If the sequence was created with a non-null
2905 * arena argument, that same arena will be used for any additional
2906 * required memory. If the sequence was created with a NULL arena
2907 * argument, any additional memory will be obtained from the heap.
2908 * This routine returns a PRStatus value; it will return PR_SUCCESS
2909 * upon success, and upon failure it will set an error on the error
2910 * stack and return PR_FAILURE.
2911 *
2912 * The error may be one of the following values:
2913 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2914 * NSS_ERROR_INVALID_GENERAL_NAME
2915 * NSS_ERROR_NO_MEMORY
2916 *
2917 * Return value:
2918 * PR_SUCCESS upon success
2919 * PR_FAILURE upon failure.
2920 */
2921
2922 NSS_EXTERN PRStatus
2923 nssGeneralNameSeq_AppendGeneralName
2924 (
2925 NSSGeneralNameSeq *generalNameSeq,
2926 NSSGeneralName *generalName
2927 );
2928
2929 /*
2930 * nssGeneralNameSeq_GetGeneralNameCount
2931 *
2932 * This routine returns the cardinality of the specified General name
2933 * Sequence. This routine may return 0 upon error, in which case it
2934 * will have set an error on the error stack.
2935 *
2936 * The error may be one of the following values:
2937 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2938 *
2939 * Return value;
2940 * 0 upon error
2941 * A positive number upon success
2942 */
2943
2944 NSS_EXTERN PRUint32
2945 nssGeneralNameSeq_GetGeneralNameCount
2946 (
2947 NSSGeneralNameSeq *generalNameSeq
2948 );
2949
2950 /*
2951 * nssGeneralNameSeq_GetGeneralName
2952 *
2953 * This routine returns a pointer to the i'th General Name in the
2954 * specified General Name Sequence. The value of the variable 'i' is
2955 * on the range [0,c) where c is the cardinality returned from
2956 * NSSGeneralNameSeq_GetGeneralNameCount. The caller owns the General
2957 * Name the pointer to which is returned. If the optional arena
2958 * argument is non-null, the memory used will be obtained from that
2959 * arena; otherwise, the memory will be obtained from the heap. This
2960 * routine may return NULL upon error, in which case it will have set
2961 * an error upon the error stack.
2962 *
2963 * The error may be one of the following values:
2964 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2965 * NSS_ERROR_VALUE_OUT_OF_RANGE
2966 * NSS_ERROR_NO_MEMORY
2967 *
2968 * Return value:
2969 * NULL upon error
2970 * A caller-owned pointer to a General Name.
2971 */
2972
2973 NSS_EXTERN NSSGeneralName *
2974 nssGeneralNameSeq_GetGeneralName
2975 (
2976 NSSGeneralNameSeq *generalNameSeq,
2977 NSSArena *arenaOpt,
2978 PRUint32 i
2979 );
2980
2981 /*
2982 * nssGeneralNameSeq_Compare
2983 *
2984 * This routine compares two General Name Sequences for equality. For
2985 * two General Name Sequences to be equal, they must have the same
2986 * cardinality, and each General Name in one sequence must be equal to
2987 * the corresponding General Name in the other. The result of the
2988 * comparison will be stored at the location pointed to by the "equalp"
2989 * variable, which must point to a valid PRBool. This routine may
2990 * return PR_FAILURE upon error, in which case it will have set an
2991 * error on the error stack.
2992 *
2993 * The error may be one of the following values:
2994 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
2995 * NSS_ERROR_INVALID_ARGUMENT
2996 *
2997 * Return value:
2998 * PR_FAILURE upon error
2999 * PR_SUCCESS upon a successful comparison (equal or not)
3000 */
3001
3002 NSS_EXTERN PRStatus
3003 nssGeneralNameSeq_Compare
3004 (
3005 NSSGeneralNameSeq *generalNameSeq1,
3006 NSSGeneralNameSeq *generalNameSeq2,
3007 PRBool *equalp
3008 );
3009
3010 /*
3011 * nssGeneralNameSeq_Duplicate
3012 *
3013 * This routine duplicates the specified sequence of general names. If
3014 * the optional arena argument is non-null, the memory required will be
3015 * obtained from that arena; otherwise, the memory will be obtained
3016 * from the heap. This routine may return NULL upon error, in which
3017 * case it will have placed an error on the error stack.
3018 *
3019 * The error may be one of the following values:
3020 * NSS_ERROR_INVALID_GENERAL_NAME_SEQ
3021 * NSS_ERROR_NO_MEMORY
3022 *
3023 * Return value:
3024 * NULL upon error
3025 * A pointer to a new General Name Sequence.
3026 */
3027
3028 NSS_EXTERN NSSGeneralNameSeq *
3029 nssGeneralNameSeq_Duplicate
3030 (
3031 NSSGeneralNameSeq *generalNameSeq,
3032 NSSArena *arenaOpt
3033 );
3034
3035 PR_END_EXTERN_C
3036
3037 #endif /* PKI1_H */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698