-- Module DirectoryInformationShadowProtocol (X.519:08/1997)
-- See also ITU-T X.519 (08/1997)
-- See also the index of all ASN.1 assignments needed in this document

DirectoryInformationShadowProtocol {joint-iso-itu-t ds(5) module(1) disp(16) 3}
DEFINITIONS ::=
BEGIN

-- EXPORTS All 
-- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
-- within the Directory Specifications, and for the use of other applications which will use them to access 
-- Directory services. Other applications may use them for their own purposes, but this will not constrain
-- extensions and modifications needed to maintain or improve the Directory service.
IMPORTS
  directoryShadowAbstractService, protocolObjectIdentifiers,
    directorySecurityExchanges
    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
      usefulDefinitions(0) 3}
  ROS-OBJECT-CLASS, CONTRACT, OPERATION-PACKAGE, CONNECTION-PACKAGE, 
    Code, OPERATION
    FROM Remote-Operations-Information-Objects {joint-iso-itu-t
      remote-operations(4) informationObjects(5) version1(0)}
  ROS{}, Bind{}, Unbind{}, InvokeId
    FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
      remote-operations(4) generic-ROS-PDUs(6) version1(0)}
  APPLICATION-CONTEXT
    FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
      remote-operations(4) informationObjects-extensions(8) version1(0)}
  acse, pData, association-by-RTSE, transfer-by-RTSE
    FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
      realizations(9) version1(0)}
  acse-abstract-syntax
    FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
      remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
  id-ac-shadowSupplierInitiatedAC, id-ac-shadowSupplierInitiatedAsynchronousAC,
    id-ac-shadowConsumerInitiatedAC,
    id-ac-shadowConsumerInitiatedAsynchronousAC,
    id-ac-shadowSupplierInitiatedWith2or3seAC,
    id-ac-shadowConsumerInitiatedWith2or3seAC,
    id-ac-reliableShadowSupplierInitiatedAC,
    id-ac-reliableShadowConsumerInitiatedAC,
    id-ac-reliableShadowSupplierInitiatedWith2or3seAC,
    id-ac-reliableShadowConsumerInitiatedWith2or3seAC,
    id-rosObject-initiatingConsumerDSA, id-rosObject-respondingSupplierDSA,
    id-rosObject-initiatingSupplierDSA, id-rosObject-respondingConsumerDSA,
    id-contract-shadowConsumer, id-contract-shadowSupplier,
    id-package-dispConnection, id-package-shadowConsumer,
    id-package-shadowSupplier, id-as-directoryShadowAS,
    id-as-directoryReliableShadowAS, id-as-reliableShadowBindingAS
    FROM ProtocolObjectIdentifiers {joint-iso-itu-t ds(5) module(1)
      protocolObjectIdentifiers(4) 3}
  dSAShadowBind, dSAShadowUnbind, requestShadowUpdate, updateShadow,
    coordinateShadowUpdate
    FROM DirectoryShadowAbstractService {joint-iso-itu-t ds(5) module(1)
      directoryShadowAbstractService(15) 3}
  RTSE-apdus
    FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
  dir2or3se
    FROM DirectorySecurityExchanges {joint-iso-itu-t ds(5) module(1)
      directorySecurityExchanges(29) 1};

-- application contexts 
shadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowSupplierInitiatedAC
}

shadowSupplierInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowSupplierInitiatedAsynchronousAC
}

shadowSupplierInitiatedWith2or3seAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax | dir2or3se}
  APPLICATION CONTEXT NAME  id-ac-shadowSupplierInitiatedWith2or3seAC
}

shadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowConsumerInitiatedAC
}

shadowConsumerInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-shadowConsumerInitiatedAsynchronousAC
}

shadowConsumerInitiatedWith2or3seAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            acse
  INFORMATION TRANSFER BY   pData
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | directoryShadowAbstractSyntax | dir2or3se}
  APPLICATION CONTEXT NAME  id-ac-shadowConsumerInitiatedWith2or3seAC
}

reliableShadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowSupplierInitiatedAC
}

reliableShadowSupplierInitiatedWith2or3seAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowSupplierContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax | dir2or3se}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowSupplierInitiatedWith2or3seAC
}

reliableShadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowConsumerInitiatedAC
}

reliableShadowConsumerInitiatedWith2or3seAC APPLICATION-CONTEXT ::= {
  CONTRACT                  shadowConsumerContract
  ESTABLISHED BY            association-by-RTSE
  INFORMATION TRANSFER BY   transfer-by-RTSE
  ABSTRACT SYNTAXES
    {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
      directoryReliableShadowAbstractSyntax | dir2or3se}
  APPLICATION CONTEXT NAME  id-ac-reliableShadowConsumerInitiatedWith2or3seAC
}

-- ROS objects 
initiating-consumer-dsa ROS-OBJECT-CLASS ::= {
  INITIATES  {shadowConsumerContract}
  ID         id-rosObject-initiatingConsumerDSA
}

responding-supplier-dsa ROS-OBJECT-CLASS ::= {
  RESPONDS  {shadowConsumerContract}
  ID        id-rosObject-respondingSupplierDSA
}

initiating-supplier-dsa ROS-OBJECT-CLASS ::= {
  INITIATES  {shadowSupplierContract}
  ID         id-rosObject-initiatingSupplierDSA
}

responding-consumer-dsa ROS-OBJECT-CLASS ::= {
  RESPONDS  {shadowSupplierContract}
  ID        id-rosObject-respondingConsumerDSA
}

-- contracts 
shadowConsumerContract CONTRACT ::= {
  CONNECTION             dispConnectionPackage
  INITIATOR CONSUMER OF  {shadowConsumerPackage}
  ID                     id-contract-shadowConsumer
}

shadowSupplierContract CONTRACT ::= {
  CONNECTION             dispConnectionPackage
  RESPONDER CONSUMER OF  {shadowSupplierPackage}
  ID                     id-contract-shadowSupplier
}

-- connection package 
dispConnectionPackage CONNECTION-PACKAGE ::= {
  BIND    dSAShadowBind
  UNBIND  dSAShadowUnbind
  ID      id-package-dispConnection
}

-- packages 
shadowConsumerPackage OPERATION-PACKAGE ::= {
  CONSUMER INVOKES  {requestShadowUpdate}
  SUPPLIER INVOKES  {updateShadow}
  ID                id-package-shadowConsumer
}

shadowSupplierPackage OPERATION-PACKAGE ::= {
  SUPPLIER INVOKES  {coordinateShadowUpdate | updateShadow}
  ID                id-package-shadowSupplier
}

-- abstract syntaxes 
directoryShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
  DISP-PDUs
  IDENTIFIED BY  id-as-directoryShadowAS
}

directoryReliableShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
  Reliable-DISP-PDUs
  IDENTIFIED BY  id-as-directoryReliableShadowAS
}

reliableShadowBindingAbstractSyntax ABSTRACT-SYNTAX ::= {
  ReliableShadowBinding-PDUs
  IDENTIFIED BY  id-as-reliableShadowBindingAS
}

DISP-PDUs ::= CHOICE {
  basicROS  ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}},
  bind      Bind{dSAShadowBind},
  unbind    Unbind{dSAShadowUnbind}
}

Reliable-DISP-PDUs ::=
  ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}}

ReliableShadowBinding-PDUs ::= CHOICE {
  rTS     [0]  RTSE-apdus,
  bind    Bind{dSAShadowBind},
  unbind  Unbind{dSAShadowUnbind}
}

DISP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)

DISP-Invokable OPERATION ::=
  {requestShadowUpdate | updateShadow | coordinateShadowUpdate}

DISP-Returnable OPERATION ::=
  {requestShadowUpdate | updateShadow | coordinateShadowUpdate}

--  remote operation codes 
id-opcode-requestShadowUpdate Code ::= local:1

id-opcode-updateShadow Code ::= local:2

id-opcode-coordinateShadowUpdate Code ::= local:3

-- remote error codes 
id-errcode-shadowError Code ::= local:1

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D