CONTENTS Title Page Copyright Page Preface 1 Planning Your Application 1.1 Assessing Your Requirements 1.1.1 Assessing the Services 1.1.2 Using the Services 1.2 Researching the Information Requirements of Your Application 1.3 Data Structures 1.3.1 Categories of Data 1.3.2 Private and Public Objects 1.3.3 Descriptor Structures 1.3.4 Using Object Management Objects 1.4 Controlling Directory Operations 1.4.1 Choosing Synchronous and Asynchronous Operations 1.4.1.1 Synchronous Operations 1.4.1.2 Asynchronous Operations 1.4.2 Limiting Operations 1.4.2.1 Limiting Information Returned 1.4.2.2 Limiting Processing Time 1.4.3 Distributing Requests 1.4.4 Returning Referrals and Continuation References 1.4.4.1 Handling Continuation References or Referrals 1.4.4.2 Referral Scope 1.4.5 Using Alias Entries 1.4.6 Using Copy Entries 1.4.7 Setting Priorities for Operations 1.4.8 Specifying the Operation Start State 1.4.9 Using Default Values 1.5 Interworking 1.6 Speed and Accuracy 1.7 Security 1.7.1 Access Control 1.7.2 Authentication 1.8 The User Interface 1.9 XDS Example Programs 2 Application Task Descriptions 2.1 Connecting and Disconnecting 2.1.1 Initializing the Interface 2.1.2 Opening a Directory Session 2.1.3 Setting the Default Service Controls 2.1.4 Negotiating the Version of Interface and Service 2.1.5 Closing a Directory Session 2.1.6 Releasing a Workspace 2.1.7 Using Other DSAs 2.2 Creating and Manipulating Objects 2.3 Using Asynchronous Operations 2.3.1 Receiving Results of Asynchronous Operations 2.3.2 Abandoning Asynchronous Operations 2.3.3 Use of Asynchronous Operations 2.4 Continuing Operations 2.5 Interrogating the Directory Information Base 2.5.1 Reading Entry Information 2.5.1.1 Specifying the Entry to Read 2.5.1.2 Specifying the Information Returned 2.5.1.3 Obtaining Results 2.5.2 Listing an Entry 2.5.2.1 Specifying What to List 2.5.2.2 Obtaining Results 2.5.3 Comparing Attribute Values and Specified Values 2.5.3.1 Specifying the Entry to Compare 2.5.3.2 Specifying Values to Compare 2.5.3.3 Obtaining Results 2.5.4 Searching for an Entry 2.5.4.1 Specifying the Starting Point of the Search 2.5.4.2 Specifying the Depth of the Search 2.5.4.3 Omitting Entries from the Search 2.5.4.4 Specifying the Information Returned 2.5.4.5 Specifying Whether to Search Aliases 2.5.4.6 Obtaining Results 2.5.5 Using the OM-Get Routine to Extract Data From a Read-Result Object 2.6 Modifying the Directory Information Base 2.6.1 Adding an Entry 2.6.1.1 Specifying the Entry Name 2.6.1.2 Specifying Entry Attributes 2.6.2 Modifying an Entry 2.6.2.1 Specifying the Entry to Be Modified 2.6.2.2 Specifying the Modifications 2.6.3 Removing an Entry 2.6.4 Modifying a Relative Distinguished Name 2.7 Error Handling 3 Completing Your Application 3.1 Privileges Required on an OpenVMS System 3.2 Compiling an Application 3.2.1 Header Files 3.2.1.1 xom.h and xomi.h 3.2.1.2 xds.h 3.2.1.3 xdsbdcp.h 3.2.1.4 xdsdec.h 3.2.1.5 xdssap.h 3.2.1.6 xdsmdup.h and xmhp.h 3.2.2 Compiler 3.3 Linking an Application 3.3.1 On a DEC OSF/1 System 3.3.2 On an ULTRIX System 3.3.3 On an OpenVMS System A Digital's X.500 API A.1 Extensions A.1.1 The Communications-Error Object Class A.1.2 The XDS Public Trace Routine A.1.3 Conversion of Local Strings A.1.4 Password in Session Object A.1.5 Bind Function Error Information A.2 Optional Features FIGURES 1-1 Interfaces to the X.500 API 1-2 Components of a Descriptor 1-3 Components of a Descriptor List 1-4 Relationship Between Descriptors and Descriptor Lists 1-5 Chaining to a Single DSA 1-6 Simultaneous Chaining to Multiple DSAs 1-7 A Referral Handled by the X.500 API 1-8 A Referral Handled by the Application 1-9 Scope for Returning Referrals 2-1 Depths of Search 2-2 Attributes of the OM Class Filter 2-3 Attributes of the OM Class Filter-Item TABLES 2-1 Attributes of Entry-Mod 2-2 Values of Mod-Type