|
|
1.1 root 1: -- quipu-enc.py - additional QUIPU directory type definitions module
2:
3: -- $Header: /f/osi/dsap/x500as/RCS/qu-enc.py,v 7.0 89/11/23 21:50:47 mrose Rel $
4: --
5: --
6: -- $Log: qu-enc.py,v $
7: -- Revision 7.0 89/11/23 21:50:47 mrose
8: -- Release 6.0
9: --
10:
11: --
12: -- NOTICE
13: --
14: -- Acquisition, use, and distribution of this module and related
15: -- materials are subject to the restrictions of a license agreement.
16: -- Consult the Preface in the User's Manual for the full terms of
17: -- this agreement.
18: --
19: --
20:
21:
22: Quipu
23: {
24: ccitt
25: data(9)
26: pss(2342)
27: ucl(19200300)
28: quipu(99)
29: directoryDefinitions(1)
30: }
31:
32: DEFINITIONS ::=
33:
34: %{
35: #include <stdio.h>
36: #include "quipu/util.h"
37: #include "quipu/entry.h"
38: #include "quipu/authen.h"
39:
40: extern LLog * log_dsap;
41: #define encode_UNIV_PrintableString build_UNIV_PrintableString
42: #define encode_UNIV_UTCTime build_UNIV_UTCTime
43: %}
44:
45: PREFIXES encode decode print
46:
47: BEGIN
48:
49: IMPORTS
50: NameError ,
51: ServiceError ,
52: SecurityError
53: FROM DAS
54: {
55: joint-iso-ccitt
56: ds(5)
57: modules(1)
58: directoryAbstractService(2)
59: }
60:
61: DistinguishedName ,
62: RelativeDistinguishedName ,
63: Attribute ,
64: AttributeType
65: FROM IF
66: {
67: joint-iso-ccitt
68: ds(5)
69: modules(1)
70: informationFramework(1)
71: }
72: AlgorithmIdentifier
73: FROM AF {
74: joint-iso-ccitt
75: ds(5)
76: modules(1)
77: authenticationFramework(7)
78: };
79:
80: -- ReliableROSData
81: -- ::=
82: -- SEQUENCE
83: -- {
84: -- rosOperation
85: -- INTEGER ,
86: -- the operation being applied
87: -- data
88: -- ANY ,
89: -- the Operation Argument
90: -- oldVersion
91: -- ANY ,
92: -- data version to which operation should be applied
93: -- newVersion
94: -- ANY
95: -- version number which results from operation
96: -- }
97:
98: ENCODER encode
99:
100: AccessSelector [[P struct acl_info *]]
101: ::=
102: %{
103: DLOG(log_dsap, LLOG_PDUS, ("About to encode AccessSelector"));
104: %}
105: CHOICE <<parm->acl_selector_type + 1>>
106: {
107: entry
108: [0] NULL ,
109: other
110: [2] NULL ,
111: prefix
112: [3] NameList [[p parm->acl_name]] ,
113: group
114: [4] NameList [[p parm->acl_name]]
115: }
116: %{
117: DLOG(log_dsap, LLOG_PDUS, ("Done encode AccessSelector"));
118: %}
119:
120: AccessCategories [[P u_char]]
121: ::=
122: %{
123: DLOG(log_dsap, LLOG_PDUS, ("About to encode AccessCategories"));
124: %}
125: ENUMERATED [[i parm]]
126: {
127: none (0) ,
128: detect (1) ,
129: compare (2) ,
130: read (3) ,
131: add (4) ,
132: write (5)
133: }
134: %{
135: DLOG(log_dsap, LLOG_PDUS, ("Done encode AccessCategories"));
136: %}
137:
138: ACLInfo [[P struct acl_info *]]
139: %{
140: struct acl_info * ai_tmp;
141: %}
142: ::=
143: %{
144: DLOG(log_dsap, LLOG_PDUS, ("About to encode ACLInfo"));
145: %}
146: SET OF
147: <<ai_tmp=parm; ai_tmp != NULLACL_INFO; ai_tmp=ai_tmp->acl_next>>
148: SEQUENCE
149: {
150: AccessSelector [[p ai_tmp]] ,
151: AccessCategories [[p ai_tmp->acl_categories]]
152: }
153: %{
154: DLOG(log_dsap, LLOG_PDUS, ("Done encode ACLInfo"));
155: %}
156:
157: AttributeACL [[P struct acl_attr *]]
158: %{
159: struct oid_seq * os_tmp;
160: %}
161: ::=
162: %{
163: DLOG(log_dsap, LLOG_PDUS, ("About to encode AttributeACL"));
164: %}
165: SEQUENCE
166: {
167: SET OF
168: <<os_tmp=parm->aa_types; os_tmp != NULLOIDSEQ; os_tmp=os_tmp->oid_next>>
169: -- AttributeType
170: OBJECT IDENTIFIER [[O os_tmp->oid_oid]] ,
171: ACLInfo [[p parm->aa_acl]]
172: -- DEFAULT {{other , read}, {entry, write}}
173: OPTIONAL <<test_acl_default(parm->aa_acl) != OK>>
174: }
175: %{
176: DLOG(log_dsap, LLOG_PDUS, ("Done encode AttributeACL"));
177: %}
178:
179: ACLSyntax [[P struct acl *]]
180: %{
181: struct acl_attr * aa_tmp;
182: %}
183: ::=
184: %{
185: DLOG(log_dsap, LLOG_PDUS, ("About to encode ACLSyntax"));
186: %}
187: SEQUENCE
188: {
189: childACL
190: [0] ACLInfo [[p parm->ac_child]]
191: -- DEFAULT {{other , read}, {entry, write}} ,
192: OPTIONAL <<test_acl_default(parm->ac_child) != OK>> ,
193: entryACL
194: [1] ACLInfo [[p parm->ac_entry]]
195: -- DEFAULT {{other , read}, {entry, write}} ,
196: OPTIONAL <<test_acl_default(parm->ac_entry) != OK>> ,
197: defaultAttributeACL
198: [2] ACLInfo [[p parm->ac_default]]
199: -- DEFAULT {{other , read}, {entry, write}} ,
200: OPTIONAL <<test_acl_default(parm->ac_default) != OK>> ,
201: [3] SET OF
202: <<aa_tmp=parm->ac_attributes; aa_tmp!=NULLACL_ATTR; aa_tmp=aa_tmp->aa_next>>
203: AttributeACL [[p aa_tmp]]
204: }
205: %{
206: DLOG(log_dsap, LLOG_PDUS, ("Done encode ACLSyntax"));
207: %}
208:
209: NameList [[P struct dn_seq *]]
210: %{
211: struct dn_seq * dns_tmp;
212: %}
213: ::=
214: %{
215: DLOG(log_dsap, LLOG_PDUS, ("About to encode NameList"));
216: %}
217: SET OF
218: <<dns_tmp=parm; dns_tmp!=NULLDNSEQ; dns_tmp=dns_tmp->dns_next>>
219: DistinguishedName [[p dns_tmp->dns_dn]]
220: %{
221: DLOG(log_dsap, LLOG_PDUS, ("Done encode NameList"));
222: %}
223:
224: EDBInfoSyntax [[P struct edb_info *]]
225: ::=
226: %{
227: DLOG(log_dsap, LLOG_PDUS, ("About to encode EDBInfoSyntax"));
228: %}
229: SEQUENCE
230: {
231: edb
232: DistinguishedName [[p parm->edb_name]] ,
233: getFromDSA
234: DistinguishedName [[p parm->edb_getfrom]]
235: OPTIONAL <<parm->edb_getfrom != NULLDN>> ,
236: sendToDSAs
237: NameList [[p parm->edb_sendto]] ,
238: getEDBAllowed
239: NameList [[p parm->edb_allowed]]
240: }
241: %{
242: DLOG(log_dsap, LLOG_PDUS, ("Done encode EDBInfoSyntax"));
243: %}
244:
245: TreeStructureSyntax [[P struct tree_struct *]]
246: %{
247: OID oid_tmp;
248: int do_once;
249: %}
250: ::=
251: %{
252: DLOG(log_dsap, LLOG_PDUS, ("About to encode TreeStructureSyntax"));
253: if (parm->tree_object == NULLOBJECTCLASS) {
254: DLOG(log_dsap, LLOG_DEBUG, ("NULL OID in tree structure"));
255: oid_tmp = NULLOID;
256: } else {
257: oid_tmp = oid_cpy(parm->tree_object->oc_ot.ot_oid);
258: DLOG(log_dsap, LLOG_DEBUG, ("oc encodes as oid: %s", sprintoid(oid_tmp)));
259: }
260: %}
261: SET
262: {
263: mandatoryObjectClasses
264: [1] SET OF
265: %{
266: DLOG(log_dsap, LLOG_DEBUG, ("Another mandatory oc"));
267: %}
268: <<do_once = 1; do_once != 0; do_once = 0>>
269: OBJECT IDENTIFIER [[O oid_tmp]] ,
270: optionalObjectClasses
271: [2] SET OF
272: OBJECT IDENTIFIER
273: -- OPTIONAL <<FALSE>> ,
274: OPTIONAL ,
275: permittedRDNs
276: [3] SET OF
277: SET OF
278: AttributeType [[p NULLAttrT]]
279: }
280: %{
281: if(oid_tmp != NULLOID)
282: oid_free (oid_tmp);
283: DLOG(log_dsap, LLOG_PDUS, ("Done encode TreeStructureSyntax"));
284: %}
285:
286: EntryDataBlock [[P struct entry *]]
287: %{
288: struct entry * ent_tmp;
289: %}
290: ::=
291: %{
292: DLOG(log_dsap, LLOG_TRACE, ("About to encode EntryDataBlock"));
293: %}
294: SEQUENCE OF
295: <<ent_tmp = parm; ent_tmp != NULLENTRY; ent_tmp=ent_tmp->e_sibling>>
296: RelativeEntry [[p ent_tmp]]
297: %{
298: DLOG(log_dsap, LLOG_TRACE, ("Done encode EntryDataBlock"));
299: %}
300:
301: RelativeEntry [[P struct entry *]]
302: %{
303: Attr_Sequence as_tmp;
304: %}
305: ::=
306: %{
307: DLOG(log_dsap, LLOG_PDUS, ("About to encode RelativeEntry"));
308: %}
309: SEQUENCE
310: {
311: RelativeDistinguishedName [[p parm->e_name]] ,
312: SET OF
313: <<as_tmp = parm->e_attributes; as_tmp != NULLATTR; as_tmp=as_tmp->attr_link>>
314: Attribute [[p as_tmp]]
315: }
316: %{
317: DLOG(log_dsap, LLOG_PDUS, ("Done encode RelativeEntry"));
318: %}
319:
320: EDBVersion [[P char *]]
321: %{
322: %}
323: ::=
324: %{
325: DLOG(log_dsap, LLOG_PDUS, ("About to encode EDBVersion"));
326: if(parm == NULLCP)
327: LLOG(log_dsap, LLOG_EXCEPTIONS, ("NULL CP Version encoded!"));
328: %}
329: UTCTime [[s parm]]
330: %{
331: DLOG(log_dsap, LLOG_PDUS, ("Done encode EDBVersion"));
332: %}
333:
334: GetEntryDataBlockArgument [[P struct getedb_arg *]]
335: ::=
336: %{
337: DLOG(log_dsap, LLOG_TRACE, ("About to encode GetEntryDataBlockArgument"));
338: %}
339: SET
340: {
341: entry
342: [0] DistinguishedName [[p parm->ga_entry]] ,
343: sendIfMoreRecentThan
344: [1] EDBVersion [[p parm->ga_version]]
345: OPTIONAL <<parm->ga_version != NULL>>
346: -- if omitted, send in any case
347: }
348: %{
349: DLOG(log_dsap, LLOG_TRACE, ("Done encode GetEntryDataBlockArgument"));
350: %}
351:
352: GetEntryDataBlockResult [[P struct getedb_result *]]
353: ::=
354: %{
355: DLOG(log_dsap, LLOG_TRACE, ("About to encode GetEntryDataBlockResult"));
356: %}
357: SEQUENCE
358: {
359: versionHeld
360: [0] EDBVersion [[p parm->gr_version]] ,
361: [1] EntryDataBlock [[p parm->gr_edb]]
362: OPTIONAL <<parm->gr_edb != NULLENTRY>>
363: }
364: %{
365: DLOG(log_dsap, LLOG_TRACE, ("Done encode GetEntryDataBlockResult"));
366: %}
367:
368:
369: ProtectedPassword [[P struct protected_password *]]
370: ::=
371: %{
372: DLOG(log_dsap, LLOG_TRACE, ("About to encode ProtectedPassword"));
373: %}
374: SEQUENCE
375: {
376: algorithm [0] AlgorithmIdentifier [[p (struct alg_id *)0 ]]
377: -- OPTIONAL <<FALSE>>,
378: OPTIONAL ,
379: salt [1] SET
380: {
381: time1 [0] UTCTime [[s parm->time1]]
382: OPTIONAL <<parm->time1 != NULLCP>>,
383: time2 [1] UTCTime [[s parm->time2]]
384: OPTIONAL <<parm->time2 != NULLCP>>,
385: random1 [2] BIT STRING
386: -- OPTIONAL <<FALSE>>,
387: OPTIONAL ,
388: random2 [3] BIT STRING
389: -- OPTIONAL <<FALSE>>
390: OPTIONAL
391: }
392: OPTIONAL <<(parm->protected != '\0')>>,
393: password [2] OCTET STRING
394: [[o (parm->passwd) $ (parm->n_octets)]]
395: }
396: %{
397: DLOG(log_dsap, LLOG_TRACE, ("Done decode ProtectedPassword"));
398: %}
399:
400:
401: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.