|
|
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.