summaryrefslogtreecommitdiff
path: root/security/nss/lib/asn1/asn1t.h
blob: 2f6c52ceae1f64aced68a38f6f5829dc41d34d90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/* 
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 * 
 * The Original Code is the Netscape security libraries.
 * 
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are 
 * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
 * Rights Reserved.
 * 
 * Contributor(s):
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL"), in which case the provisions of the GPL are applicable 
 * instead of those above.  If you wish to allow use of your 
 * version of this file only under the terms of the GPL and not to
 * allow others to use your version of this file under the MPL,
 * indicate your decision by deleting the provisions above and
 * replace them with the notice and other provisions required by
 * the GPL.  If you do not delete the provisions above, a recipient
 * may use your version of this file under either the MPL or the
 * GPL.
 */

#ifndef ASN1T_H
#define ASN1T_H

#ifdef DEBUG
static const char ASN1T_CVS_ID[] = "@(#) $RCSfile$ $Revision$ $Date$ $Name$";
#endif /* DEBUG */

/*
 * asn1t.h
 *
 * This file contains the ASN.1 encoder/decoder types available 
 * internally within NSS.  It's not clear right now if this file
 * will be folded into baset.h or something, I just needed to
 * get this going.  At the moment, these types are wrappers for
 * the old types.
 */

#ifndef BASET_H
#include "baset.h"
#endif /* BASET_H */

#ifndef NSSASN1T_H
#include "nssasn1t.h"
#endif /* NSSASN1T_H */

#include "seccomon.h"
#include "secasn1t.h"

PR_BEGIN_EXTERN_C

/*
 * XXX fgmr
 *
 * This sort of bites.  Let's keep an eye on this, to make sure
 * we aren't stuck with it forever.
 */

struct nssASN1ItemStr {
  PRUint32 reserved;
  PRUint8 *data;
  PRUint32 size;
};

typedef struct nssASN1ItemStr nssASN1Item;

/*
 * I'm not documenting these here, since this'll require another
 * pass anyway.
 */

typedef SEC_ASN1Template nssASN1Template;

#define nssASN1_TAG_MASK               SEC_ASN1_TAG_MASK

#define nssASN1_TAGNUM_MASK            SEC_ASN1_TAGNUM_MASK
#define nssASN1_BOOLEAN                SEC_ASN1_BOOLEAN
#define nssASN1_INTEGER                SEC_ASN1_INTEGER
#define nssASN1_BIT_STRING             SEC_ASN1_BIT_STRING
#define nssASN1_OCTET_STRING           SEC_ASN1_OCTET_STRING
#define nssASN1_NULL                   SEC_ASN1_NULL
#define nssASN1_OBJECT_ID              SEC_ASN1_OBJECT_ID
#define nssASN1_OBJECT_DESCRIPTOR      SEC_ASN1_OBJECT_DESCRIPTOR
/* External type and instance-of type   0x08 */
#define nssASN1_REAL                   SEC_ASN1_REAL
#define nssASN1_ENUMERATED             SEC_ASN1_ENUMERATED
#define nssASN1_EMBEDDED_PDV           SEC_ASN1_EMBEDDED_PDV
#define nssASN1_UTF8_STRING            SEC_ASN1_UTF8_STRING
#define nssASN1_SEQUENCE               SEC_ASN1_SEQUENCE
#define nssASN1_SET                    SEC_ASN1_SET
#define nssASN1_NUMERIC_STRING         SEC_ASN1_NUMERIC_STRING
#define nssASN1_PRINTABLE_STRING       SEC_ASN1_PRINTABLE_STRING
#define nssASN1_T61_STRING             SEC_ASN1_T61_STRING
#define nssASN1_TELETEX_STRING         nssASN1_T61_STRING
#define nssASN1_VIDEOTEX_STRING        SEC_ASN1_VIDEOTEX_STRING
#define nssASN1_IA5_STRING             SEC_ASN1_IA5_STRING
#define nssASN1_UTC_TIME               SEC_ASN1_UTC_TIME
#define nssASN1_GENERALIZED_TIME       SEC_ASN1_GENERALIZED_TIME
#define nssASN1_GRAPHIC_STRING         SEC_ASN1_GRAPHIC_STRING
#define nssASN1_VISIBLE_STRING         SEC_ASN1_VISIBLE_STRING
#define nssASN1_GENERAL_STRING         SEC_ASN1_GENERAL_STRING
#define nssASN1_UNIVERSAL_STRING       SEC_ASN1_UNIVERSAL_STRING
/*                                      0x1d */
#define nssASN1_BMP_STRING             SEC_ASN1_BMP_STRING
#define nssASN1_HIGH_TAG_NUMBER        SEC_ASN1_HIGH_TAG_NUMBER

#define nssASN1_METHOD_MASK            SEC_ASN1_METHOD_MASK
#define nssASN1_PRIMITIVE              SEC_ASN1_PRIMITIVE
#define nssASN1_CONSTRUCTED            SEC_ASN1_CONSTRUCTED
                                                                
#define nssASN1_CLASS_MASK             SEC_ASN1_CLASS_MASK
#define nssASN1_UNIVERSAL              SEC_ASN1_UNIVERSAL
#define nssASN1_APPLICATION            SEC_ASN1_APPLICATION
#define nssASN1_CONTEXT_SPECIFIC       SEC_ASN1_CONTEXT_SPECIFIC
#define nssASN1_PRIVATE                SEC_ASN1_PRIVATE

#define nssASN1_OPTIONAL               SEC_ASN1_OPTIONAL 
#define nssASN1_EXPLICIT               SEC_ASN1_EXPLICIT 
#define nssASN1_ANY                    SEC_ASN1_ANY      
#define nssASN1_INLINE                 SEC_ASN1_INLINE   
#define nssASN1_POINTER                SEC_ASN1_POINTER  
#define nssASN1_GROUP                  SEC_ASN1_GROUP    
#define nssASN1_DYNAMIC                SEC_ASN1_DYNAMIC  
#define nssASN1_SKIP                   SEC_ASN1_SKIP     
#define nssASN1_INNER                  SEC_ASN1_INNER    
#define nssASN1_SAVE                   SEC_ASN1_SAVE     
#define nssASN1_MAY_STREAM             SEC_ASN1_MAY_STREAM
#define nssASN1_SKIP_REST              SEC_ASN1_SKIP_REST
#define nssASN1_CHOICE                 SEC_ASN1_CHOICE

#define nssASN1_SEQUENCE_OF            SEC_ASN1_SEQUENCE_OF 
#define nssASN1_SET_OF                 SEC_ASN1_SET_OF      
#define nssASN1_ANY_CONTENTS           SEC_ASN1_ANY_CONTENTS

typedef SEC_ASN1TemplateChooserPtr nssASN1ChooseTemplateFunction;

typedef SEC_ASN1DecoderContext nssASN1Decoder;
typedef SEC_ASN1EncoderContext nssASN1Encoder;

typedef enum {
  nssASN1EncodingPartIdentifier    = SEC_ASN1_Identifier,
  nssASN1EncodingPartLength        = SEC_ASN1_Length,
  nssASN1EncodingPartContents      = SEC_ASN1_Contents,
  nssASN1EncodingPartEndOfContents = SEC_ASN1_EndOfContents
} nssASN1EncodingPart;

typedef SEC_ASN1NotifyProc nssASN1NotifyFunction;

typedef SEC_ASN1WriteProc nssASN1EncoderWriteFunction;
typedef SEC_ASN1WriteProc nssASN1DecoderFilterFunction;

PR_END_EXTERN_C

#endif /* ASN1T_H */