UA_stackInternalTypes.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #ifndef OPCUA_STACKINTERNALTYPES_H_
  2. #define OPCUA_STACKINTERNALTYPES_H_
  3. #include "opcua.h"
  4. static const UA_Int32 SL_HEADER_LENGTH = 0;
  5. /* Enums */
  6. typedef enum {
  7. UA_SECURITYTOKEN_ISSUE = 0,
  8. UA_SECURITYTOKEN_RENEW = 1
  9. } SecurityTokenRequestType;
  10. typedef enum {
  11. UA_SECURITYMODE_INVALID = 0,
  12. UA_SECURITYMODE_SIGN = 1,
  13. UA_SECURITYMODE_SIGNANDENCRYPT = 2
  14. } securityMode;
  15. /* Structures */
  16. typedef struct T_SL_Response {
  17. UA_UInt32 serverProtocolVersion;
  18. UA_ChannelSecurityToken securityToken;
  19. UA_String serverNonce;
  20. }UA_SL_Response;
  21. UA_TYPE_METHOD_PROTOTYPES(UA_SL_Response)
  22. /* MessageType */
  23. typedef UA_Int32 UA_MessageType;
  24. UA_Int32 UA_MessageType_calcSize(UA_MessageType const * ptr);
  25. UA_Int32 UA_MessageType_encodeBinary(UA_MessageType const * src, UA_Int32* pos, UA_ByteString* dst);
  26. UA_Int32 UA_MessageType_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_MessageType* dst);
  27. UA_Int32 UA_MessageType_delete(UA_MessageType* p);
  28. UA_Int32 UA_MessageType_deleteMembers(UA_MessageType* p);
  29. void UA_MessageType_printf(char *label, UA_MessageType* p);
  30. /*** UA_OPCUATcpMessageHeader ***/
  31. /* TCP Header */
  32. typedef struct T_UA_OPCUATcpMessageHeader {
  33. UA_MessageType messageType;
  34. UA_Byte isFinal;
  35. UA_UInt32 messageSize;
  36. } UA_OPCUATcpMessageHeader;
  37. UA_Int32 UA_OPCUATcpMessageHeader_calcSize(UA_OPCUATcpMessageHeader const * ptr);
  38. UA_Int32 UA_OPCUATcpMessageHeader_encodeBinary(UA_OPCUATcpMessageHeader const * src, UA_Int32* pos, UA_ByteString* dst);
  39. UA_Int32 UA_OPCUATcpMessageHeader_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_OPCUATcpMessageHeader* dst);
  40. UA_Int32 UA_OPCUATcpMessageHeader_delete(UA_OPCUATcpMessageHeader* p);
  41. UA_Int32 UA_OPCUATcpMessageHeader_deleteMembers(UA_OPCUATcpMessageHeader* p);
  42. /*** UA_OPCUATcpHelloMessage ***/
  43. /* Hello Message */
  44. typedef struct T_UA_OPCUATcpHelloMessage {
  45. UA_UInt32 protocolVersion;
  46. UA_UInt32 receiveBufferSize;
  47. UA_UInt32 sendBufferSize;
  48. UA_UInt32 maxMessageSize;
  49. UA_UInt32 maxChunkCount;
  50. UA_String endpointUrl;
  51. } UA_OPCUATcpHelloMessage;
  52. UA_Int32 UA_OPCUATcpHelloMessage_calcSize(UA_OPCUATcpHelloMessage const * ptr);
  53. UA_Int32 UA_OPCUATcpHelloMessage_encodeBinary(UA_OPCUATcpHelloMessage const * src, UA_Int32* pos, UA_ByteString* dst);
  54. UA_Int32 UA_OPCUATcpHelloMessage_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_OPCUATcpHelloMessage* dst);
  55. UA_Int32 UA_OPCUATcpHelloMessage_delete(UA_OPCUATcpHelloMessage* p);
  56. UA_Int32 UA_OPCUATcpHelloMessage_deleteMembers(UA_OPCUATcpHelloMessage* p);
  57. /*** UA_OPCUATcpAcknowledgeMessage ***/
  58. /* Acknowledge Message */
  59. typedef struct T_UA_OPCUATcpAcknowledgeMessage {
  60. UA_UInt32 protocolVersion;
  61. UA_UInt32 receiveBufferSize;
  62. UA_UInt32 sendBufferSize;
  63. UA_UInt32 maxMessageSize;
  64. UA_UInt32 maxChunkCount;
  65. } UA_OPCUATcpAcknowledgeMessage;
  66. UA_Int32 UA_OPCUATcpAcknowledgeMessage_calcSize(UA_OPCUATcpAcknowledgeMessage const * ptr);
  67. UA_Int32 UA_OPCUATcpAcknowledgeMessage_encodeBinary(UA_OPCUATcpAcknowledgeMessage const * src, UA_Int32* pos, UA_ByteString* dst);
  68. UA_Int32 UA_OPCUATcpAcknowledgeMessage_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_OPCUATcpAcknowledgeMessage* dst);
  69. UA_Int32 UA_OPCUATcpAcknowledgeMessage_delete(UA_OPCUATcpAcknowledgeMessage* p);
  70. UA_Int32 UA_OPCUATcpAcknowledgeMessage_deleteMembers(UA_OPCUATcpAcknowledgeMessage* p);
  71. /*** UA_SecureConversationMessageHeader ***/
  72. /* Secure Layer Sequence Header */
  73. typedef struct T_UA_SecureConversationMessageHeader {
  74. // UA_OPCUATcpMessageHeader* tcpMessageHeader;
  75. UA_UInt32 secureChannelId;
  76. } UA_SecureConversationMessageHeader;
  77. UA_Int32 UA_SecureConversationMessageHeader_calcSize(UA_SecureConversationMessageHeader const * ptr);
  78. UA_Int32 UA_SecureConversationMessageHeader_encodeBinary(UA_SecureConversationMessageHeader const * src, UA_Int32* pos, UA_ByteString* dst);
  79. UA_Int32 UA_SecureConversationMessageHeader_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_SecureConversationMessageHeader* dst);
  80. UA_Int32 UA_SecureConversationMessageHeader_delete(UA_SecureConversationMessageHeader* p);
  81. UA_Int32 UA_SecureConversationMessageHeader_deleteMembers(UA_SecureConversationMessageHeader* p);
  82. /*** UA_AsymmetricAlgorithmSecurityHeader ***/
  83. /* Security Header> */
  84. typedef struct T_UA_AsymmetricAlgorithmSecurityHeader {
  85. UA_ByteString securityPolicyUri;
  86. UA_ByteString senderCertificate;
  87. UA_ByteString receiverCertificateThumbprint;
  88. } UA_AsymmetricAlgorithmSecurityHeader;
  89. UA_TYPE_METHOD_PROTOTYPES (UA_AsymmetricAlgorithmSecurityHeader)
  90. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_init(UA_AsymmetricAlgorithmSecurityHeader* p);
  91. /*** UA_SymmetricAlgorithmSecurityHeader ***/
  92. /* Secure Layer Symmetric Algorithm Header */
  93. typedef UA_Int32 UA_SymmetricAlgorithmSecurityHeader;
  94. UA_TYPE_METHOD_PROTOTYPES(UA_SymmetricAlgorithmSecurityHeader)
  95. /*** UA_SequenceHeader ***/
  96. /* Secure Layer Sequence Header */
  97. typedef struct T_UA_SequenceHeader {
  98. UA_UInt32 sequenceNumber;
  99. UA_UInt32 requestId;
  100. } UA_SequenceHeader;
  101. UA_Int32 UA_SequenceHeader_calcSize(UA_SequenceHeader const * ptr);
  102. UA_Int32 UA_SequenceHeader_encodeBinary(UA_SequenceHeader const * src, UA_Int32* pos, UA_ByteString* dst);
  103. UA_Int32 UA_SequenceHeader_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_SequenceHeader* dst);
  104. UA_Int32 UA_SequenceHeader_delete(UA_SequenceHeader* p);
  105. UA_Int32 UA_SequenceHeader_deleteMembers(UA_SequenceHeader* p);
  106. /*** UA_SecureConversationMessageFooter ***/
  107. /* Secure Conversation Message Footer */
  108. typedef struct T_UA_SecureConversationMessageFooter {
  109. UA_Int32 paddingSize;
  110. UA_Byte** padding;
  111. UA_Byte signature;
  112. } UA_SecureConversationMessageFooter;
  113. UA_Int32 UA_SecureConversationMessageFooter_calcSize(UA_SecureConversationMessageFooter const * ptr);
  114. UA_Int32 UA_SecureConversationMessageFooter_encodeBinary(UA_SecureConversationMessageFooter const * src, UA_Int32* pos, UA_ByteString* dst);
  115. UA_Int32 UA_SecureConversationMessageFooter_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_SecureConversationMessageFooter* dst);
  116. UA_Int32 UA_SecureConversationMessageFooter_delete(UA_SecureConversationMessageFooter* p);
  117. UA_Int32 UA_SecureConversationMessageFooter_deleteMembers(UA_SecureConversationMessageFooter* p);
  118. /*** UA_SecureConversationMessageAbortBody ***/
  119. /* Secure Conversation Message Abort Body */
  120. typedef struct T_UA_SecureConversationMessageAbortBody {
  121. UA_UInt32 error;
  122. UA_String reason;
  123. } UA_SecureConversationMessageAbortBody;
  124. UA_Int32 UA_SecureConversationMessageAbortBody_calcSize(UA_SecureConversationMessageAbortBody const * ptr);
  125. UA_Int32 UA_SecureConversationMessageAbortBody_encodeBinary(UA_SecureConversationMessageAbortBody const * src, UA_Int32* pos, UA_ByteString* dst);
  126. UA_Int32 UA_SecureConversationMessageAbortBody_decodeBinary(UA_ByteString const * src, UA_Int32* pos, UA_SecureConversationMessageAbortBody* dst);
  127. UA_Int32 UA_SecureConversationMessageAbortBody_delete(UA_SecureConversationMessageAbortBody* p);
  128. UA_Int32 UA_SecureConversationMessageAbortBody_deleteMembers(UA_SecureConversationMessageAbortBody* p);
  129. #endif