Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef NSSBASET_H
6 #define NSSBASET_H
8 /*
9 * nssbaset.h
10 *
11 * This file contains the most low-level, fundamental public types.
12 */
14 #include "nspr.h"
15 #include "nssilock.h"
17 /*
18 * NSS_EXTERN, NSS_IMPLEMENT, NSS_EXTERN_DATA, NSS_IMPLEMENT_DATA
19 *
20 * NSS has its own versions of these NSPR macros, in a form which
21 * does not confuse ctags and other related utilities. NSPR
22 * defines these macros to take the type as an argument, because
23 * of certain OS requirements on platforms not supported by NSS.
24 */
26 #define DUMMY /* dummy */
27 #define NSS_EXTERN extern
28 #define NSS_EXTERN_DATA extern
29 #define NSS_IMPLEMENT
30 #define NSS_IMPLEMENT_DATA
32 PR_BEGIN_EXTERN_C
34 /*
35 * NSSError
36 *
37 * Calls to NSS routines may result in one or more errors being placed
38 * on the calling thread's "error stack." Every possible error that
39 * may be returned from a function is declared where the function is
40 * prototyped. All errors are of the following type.
41 */
43 typedef PRInt32 NSSError;
45 /*
46 * NSSArena
47 *
48 * Arenas are logical sets of heap memory, from which memory may be
49 * allocated. When an arena is destroyed, all memory allocated within
50 * that arena is implicitly freed. These arenas are thread-safe:
51 * an arena pointer may be used by multiple threads simultaneously.
52 * However, as they are not backed by shared memory, they may only be
53 * used within one process.
54 */
56 struct NSSArenaStr;
57 typedef struct NSSArenaStr NSSArena;
59 /*
60 * NSSItem
61 *
62 * This is the basic type used to refer to an unconstrained datum of
63 * arbitrary size.
64 */
66 struct NSSItemStr {
67 void *data;
68 PRUint32 size;
69 };
70 typedef struct NSSItemStr NSSItem;
73 /*
74 * NSSBER
75 *
76 * Data packed according to the Basic Encoding Rules of ASN.1.
77 */
79 typedef NSSItem NSSBER;
81 /*
82 * NSSDER
83 *
84 * Data packed according to the Distinguished Encoding Rules of ASN.1;
85 * this form is also known as the Canonical Encoding Rules form (CER).
86 */
88 typedef NSSBER NSSDER;
90 /*
91 * NSSBitString
92 *
93 * Some ASN.1 types use "bit strings," which are passed around as
94 * octet strings but whose length is counted in bits. We use this
95 * typedef of NSSItem to point out the occasions when the length
96 * is counted in bits, not octets.
97 */
99 typedef NSSItem NSSBitString;
101 /*
102 * NSSUTF8
103 *
104 * Character strings encoded in UTF-8, as defined by RFC 2279.
105 */
107 typedef char NSSUTF8;
109 /*
110 * NSSASCII7
111 *
112 * Character strings guaranteed to be 7-bit ASCII.
113 */
115 typedef char NSSASCII7;
117 PR_END_EXTERN_C
119 #endif /* NSSBASET_H */