<opc:TypeDictionary
  xmlns:opc="http://opcfoundation.org/BinarySchema/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:ua="http://opcfoundation.org/UA/"
  xmlns:tns="http://opcfoundation.org/UA/"
  DefaultByteOrder="LittleEndian"
  TargetNamespace="http://opcfoundation.org/UA/"
>

  <opc:Import Namespace="http://opcfoundation.org/BinarySchema/" />

<!-- Transport types begin  -->

  <opc:EnumeratedType Name="MessageTypeAndFinal" LengthInBits="32">
    <opc:Documentation>Message Type and whether the message contains the final chunk</opc:Documentation>
    <opc:EnumeratedValue Name="ACKF" Value="1179337537" />
    <opc:EnumeratedValue Name="CLOF" Value="1179601987" />
    <opc:EnumeratedValue Name="HELF" Value="1179403592" />
    <opc:EnumeratedValue Name="MSGF" Value="1179079501" />
    <opc:EnumeratedValue Name="OPNF" Value="1179537487" />
  </opc:EnumeratedType>

   <opc:StructuredType Name="TcpMessageHeader">
    <opc:Documentation>TCP Header</opc:Documentation>
    <opc:Field Name="MessageTypeAndFinal" TypeName="opc:UInt32" />
    <opc:Field Name="MessageSize" TypeName="opc:UInt32" />
  </opc:StructuredType>
  
   <opc:StructuredType Name="TcpHelloMessage">
    <opc:Documentation>Hello Message</opc:Documentation>
    <opc:Field Name="ProtocolVersion" TypeName="opc:UInt32" />
    <opc:Field Name="ReceiveBufferSize" TypeName="opc:UInt32" />
    <opc:Field Name="SendBufferSize" TypeName="opc:UInt32" />
    <opc:Field Name="MaxMessageSize" TypeName="opc:UInt32" />
	<opc:Field Name="MaxChunkCount" TypeName="opc:UInt32" />
    <opc:Field Name="EndpointUrl" TypeName="opc:String" />
  </opc:StructuredType>
  
   <opc:StructuredType Name="TcpAcknowledgeMessage">
    <opc:Documentation>Acknowledge Message</opc:Documentation>
    <opc:Field Name="ProtocolVersion" TypeName="opc:UInt32" />
    <opc:Field Name="ReceiveBufferSize" TypeName="opc:UInt32" />
    <opc:Field Name="SendBufferSize" TypeName="opc:UInt32" />
    <opc:Field Name="MaxMessageSize" TypeName="opc:UInt32" />
	<opc:Field Name="MaxChunkCount" TypeName="opc:UInt32" />
  </opc:StructuredType>
  
  <opc:StructuredType Name="SecureConversationMessageHeader">
    <opc:Documentation>Secure Layer Sequence Header</opc:Documentation>
    <opc:Field Name="MessageHeader" TypeName="opc:TcpMessageHeader" />
    <opc:Field Name="SecureChannelId" TypeName="opc:UInt32" />
  </opc:StructuredType>
  
  <opc:StructuredType Name="AsymmetricAlgorithmSecurityHeader">
    <opc:Documentation>Security Header</opc:Documentation>
    <opc:Field Name="SecurityPolicyUri" TypeName="opc:ByteString" />
    <opc:Field Name="SenderCertificate" TypeName="opc:ByteString" />
    <opc:Field Name="ReceiverCertificateThumbprint" TypeName="opc:ByteString" />
  </opc:StructuredType>
  
  <opc:StructuredType Name="SymmetricAlgorithmSecurityHeader">
    <opc:Documentation>Secure Layer Symmetric Algorithm Header</opc:Documentation>
    <opc:Field Name="TokenId" TypeName="opc:UInt32" />
  </opc:StructuredType>
  
  <opc:StructuredType Name="SequenceHeader">
    <opc:Documentation>Secure Layer Sequence Header</opc:Documentation>
    <opc:Field Name="SequenceNumber" TypeName="opc:UInt32" />
    <opc:Field Name="RequestId" TypeName="opc:UInt32"/>
  </opc:StructuredType>
  
  <opc:StructuredType Name="SecureConversationMessageFooter">
    <opc:Documentation>Secure Conversation Message Footer</opc:Documentation>
    <opc:Field Name="PaddingSize" TypeName="opc:Byte" />
    <opc:Field Name="Padding" TypeName="opc:Byte" LengthField="PaddingSize" />
    <opc:Field Name="Signature" TypeName="opc:Byte"/>
  </opc:StructuredType>
  
  <opc:StructuredType Name="SecureConversationMessageAbortBody">
    <opc:Documentation>Secure Conversation Message Abort Body</opc:Documentation>
    <opc:Field Name="Error" TypeName="opc:UInt32" />
    <opc:Field Name="Reason" TypeName="opc:String" />
  </opc:StructuredType>
 
<!-- Transport types end -->

</opc:TypeDictionary>