]>
Commit | Line | Data |
---|---|---|
bac41a7b A |
1 | /* |
2 | * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved. | |
3 | * | |
4 | * The contents of this file constitute Original Code as defined in and are | |
5 | * subject to the Apple Public Source License Version 1.2 (the 'License'). | |
6 | * You may not use this file except in compliance with the License. Please obtain | |
7 | * a copy of the License at http://www.apple.com/publicsource and read it before | |
8 | * using this file. | |
9 | * | |
10 | * This Original Code and all software distributed under the License are | |
11 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS | |
12 | * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT | |
13 | * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | |
14 | * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the | |
15 | * specific language governing rights and limitations under the License. | |
16 | */ | |
17 | ||
18 | ||
19 | // file: .../c++-lib/inc/asn-octs.h - ASN.1 OCTET STRING type | |
20 | // | |
21 | // Mike Sample | |
22 | // 92/07/02 | |
23 | // Copyright (C) 1992 Michael Sample and the University of British Columbia | |
24 | // | |
25 | // This library is free software; you can redistribute it and/or | |
26 | // modify it provided that this copyright/license information is retained | |
27 | // in original form. | |
28 | // | |
29 | // If you modify this file, you must clearly indicate your changes. | |
30 | // | |
31 | // This source code is distributed in the hope that it will be | |
32 | // useful, but WITHOUT ANY WARRANTY; without even the implied warranty | |
33 | // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
34 | // | |
35 | // | |
36 | // ------------------------------------------------------------------------ | |
37 | // - J.G. Van Dyke & Associates, Inc. Modification History of SNACC 1.3 - | |
38 | // ------------------------------------------------------------------------ | |
39 | // | |
40 | // All modification are relative to the v1.3 of SNACC. We used SunOS 4.1.3's | |
41 | // SCCS. The revision #'s start at 1.1, which is the original version from | |
42 | // SNACC 1.3. | |
43 | // | |
44 | // | |
45 | // ../SCCS/s.asn-octs.h: | |
46 | // | |
47 | // D 1.3 98/04/24 22:46:51 pleonber 3 2 00002/00000/00129 | |
48 | // added INSERT_VDA_COMMENTS for script that adds SCCS history to file | |
49 | // | |
50 | // D 1.2 97/11/11 15:53:59 dharris 2 1 00004/00000/00125 | |
51 | // changed == operator overide to remove warning | |
52 | // | |
53 | // D 1.1 97/11/11 15:50:52 cmmaster 1 0 00125/00000/00000 | |
54 | // date and time created 97/11/11 15:50:52 by cmmaster | |
55 | // | |
56 | // ----------------------- End of VDA Modifications --------------------------- | |
57 | // | |
58 | // | |
59 | // | |
5a719ac8 | 60 | // $Header: /cvs/Darwin/src/live/Security/SecuritySNACCRuntime/c++-lib/inc/asn-octs.h,v 1.2 2002/04/18 18:58:08 dmitch Exp $ |
bac41a7b | 61 | // $Log: asn-octs.h,v $ |
29654253 A |
62 | // Revision 1.2 2002/04/18 18:58:08 dmitch |
63 | // Radar 2904404 - avoid deprecated iostream.h | |
64 | // | |
65 | // Revision 1.1.1.1.70.1 2002/04/17 00:48:53 dmitch | |
66 | // Radar 2904404 - avoid deprecated iostream.h. | |
67 | // | |
bac41a7b A |
68 | // Revision 1.1.1.1 2001/05/18 23:14:06 mb |
69 | // Move from private repository to open source repository | |
70 | // | |
71 | // Revision 1.3 2001/05/05 00:59:18 rmurphy | |
72 | // Adding darwin license headers | |
73 | // | |
74 | // Revision 1.2 2000/06/15 18:48:24 dmitch | |
75 | // Snacc-generated source files, now part of CVS tree to allow for cross-platform build of snaccRuntime. | |
76 | // | |
77 | // Revision 1.1.1.1 2000/03/09 01:00:05 rmurphy | |
78 | // Base Fortissimo Tree | |
79 | // | |
80 | // Revision 1.3 1999/03/21 02:07:33 mb | |
81 | // Added Copy to every AsnType. | |
82 | // | |
83 | // Revision 1.2 1999/03/18 22:35:27 mb | |
84 | // Made all destructors virtual. | |
85 | // | |
86 | // Revision 1.1 1999/02/25 05:21:44 mb | |
87 | // Added snacc c++ library | |
88 | // | |
89 | // Revision 1.5 1997/02/16 20:25:40 rj | |
90 | // check-in of a few cosmetic changes | |
91 | // | |
92 | // Revision 1.4 1995/07/24 17:46:52 rj | |
93 | // operator == and != return bool instead of int. | |
94 | // | |
95 | // #if TCL ... #endif wrapped into #if META ... #endif | |
96 | // | |
97 | // changed `_' to `-' in file names. | |
98 | // | |
99 | // Revision 1.3 1994/10/08 04:18:07 rj | |
100 | // code for meta structures added (provides information about the generated code itself). | |
101 | // | |
102 | // code for Tcl interface added (makes use of the above mentioned meta code). | |
103 | // | |
104 | // virtual inline functions (the destructor, the Clone() function, BEnc(), BDec() and Print()) moved from inc/*.h to src/*.C because g++ turns every one of them into a static non-inline function in every file where the .h file gets included. | |
105 | // | |
106 | // made Print() const (and some other, mainly comparison functions). | |
107 | // | |
108 | // several `unsigned long int' turned into `size_t'. | |
109 | // | |
110 | // Revision 1.2 1994/08/28 10:00:53 rj | |
111 | // comment leader fixed. | |
112 | // | |
113 | // Revision 1.1 1994/08/28 09:20:39 rj | |
114 | // first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog. | |
115 | ||
116 | #ifndef _asn_octs_h_ | |
117 | #define _asn_octs_h_ | |
118 | ||
119 | #include <string.h> | |
120 | ||
121 | class AsnOcts: public AsnType | |
122 | { | |
123 | private: | |
124 | int OctsEquiv (const AsnOcts &o) const; | |
125 | ||
126 | void FillBitStringStk (BUF_TYPE b, AsnLen elmtLen0, AsnLen& bytesDecoded, ENV_TYPE env); | |
127 | ||
128 | void BDecConsOcts (BUF_TYPE b, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env); | |
129 | ||
130 | protected: | |
131 | size_t octetLen; | |
132 | char *octs; | |
133 | ||
134 | public: | |
135 | ||
136 | // constructor and Set alway copy strings so destructor can always delete | |
137 | AsnOcts(): | |
138 | octetLen (0), | |
139 | octs (NULL) | |
140 | {} | |
141 | AsnOcts (const char *str) { Set (str); } | |
142 | AsnOcts (const char *str, const size_t len) | |
143 | { Set (str, len); } | |
144 | AsnOcts (const AsnOcts &o) { Set (o); } | |
145 | #ifndef _IBM_ENC_ | |
146 | virtual ~AsnOcts(); | |
147 | #else | |
148 | virtual ~AsnOcts() { mem_mgr_ptr->Put ((void *)octs); } // Guido Grassel, 11.8.93 | |
149 | #endif /* _IBM_ENC_ */ | |
150 | ||
151 | virtual AsnType *Clone() const; | |
152 | virtual AsnType *Copy() const; | |
153 | ||
154 | AsnOcts &operator = (const AsnOcts &o) { ReSet (o); return *this; } | |
155 | AsnOcts &operator = (const char *str) { ReSet (str); return *this; } | |
156 | ||
157 | // these set the octs and octetLen values | |
158 | void Set (const char *str, size_t len); | |
159 | void Set (const AsnOcts &o); | |
160 | void Set (const char *str); | |
161 | ||
162 | // these free the old octs value and | |
163 | // then reset the octs and octetLen values | |
164 | void ReSet (const char *str, size_t len); | |
165 | void ReSet (const AsnOcts &o); | |
166 | void ReSet (const char *str); | |
167 | ||
168 | size_t Len() const { return octetLen; } | |
169 | operator const char* () const { return octs; } | |
170 | operator char* () { return octs; } | |
29654253 A |
171 | |
172 | const char * Octs() const { return octs; } | |
bac41a7b A |
173 | |
174 | #ifdef VDADER_RULES | |
175 | bool operator == (const AsnOcts &o) const { if (OctsEquiv(o)) return true; else return false; } | |
176 | #else | |
177 | bool operator == (const AsnOcts &o) const { return OctsEquiv (o); } | |
178 | #endif | |
179 | bool operator != (const AsnOcts &o) const { return !OctsEquiv (o); } | |
180 | ||
181 | AsnLen BEncContent (BUF_TYPE b); | |
182 | void BDecContent (BUF_TYPE b, AsnTag tagId, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env); | |
183 | AsnLen BEnc (BUF_TYPE b); | |
184 | void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env); | |
185 | ||
186 | PDU_MEMBER_MACROS | |
187 | ||
188 | void Print (ostream &os) const; | |
189 | ||
190 | #if META | |
191 | static const AsnOctsTypeDesc _desc; | |
192 | ||
193 | const AsnTypeDesc *_getdesc() const; | |
194 | ||
195 | #if TCL | |
196 | int TclGetVal (Tcl_Interp *) const; | |
197 | int TclSetVal (Tcl_Interp *, const char *val); | |
198 | #endif /* TCL */ | |
199 | #endif /* META */ | |
200 | }; | |
201 | ||
202 | #endif /* conditional include */ |