ua_transport.c 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. #include "ua_transport.h"
  2. #include "ua_types_encoding_binary.h"
  3. #include "stdio.h"
  4. UA_TYPE_DEFAULT(UA_MessageType)
  5. UA_Int32 UA_MessageType_calcSize(UA_MessageType const * ptr){
  6. if(ptr==UA_NULL){return sizeof(UA_MessageType);}
  7. return 0
  8. + 3 * sizeof(UA_Byte);
  9. }
  10. UA_Int32 UA_MessageType_encodeBinary(UA_MessageType const * src, UA_ByteString* dst, UA_UInt32 *offset){
  11. UA_Int32 retval = UA_SUCCESS;
  12. UA_Byte tmpBuf[3];
  13. tmpBuf[0] = (UA_Byte)((((UA_Int32)*src) >> 16) );
  14. tmpBuf[1] = (UA_Byte)((((UA_Int32)*src) >> 8));
  15. tmpBuf[2] = (UA_Byte)(((UA_Int32)*src));
  16. retval |= UA_Byte_encodeBinary(&(tmpBuf[0]),dst,offset);
  17. retval |= UA_Byte_encodeBinary(&(tmpBuf[1]),dst,offset);
  18. retval |= UA_Byte_encodeBinary(&(tmpBuf[2]),dst,offset);
  19. return retval;
  20. }
  21. UA_Int32 UA_MessageType_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_MessageType* dst){
  22. UA_Int32 retval = UA_SUCCESS;
  23. UA_Byte tmpBuf[3];
  24. retval |= UA_Byte_decodeBinary(src,offset,&(tmpBuf[0])); //messageType to Byte representation
  25. retval |= UA_Byte_decodeBinary(src,offset,&(tmpBuf[1]));
  26. retval |= UA_Byte_decodeBinary(src,offset,&(tmpBuf[2]));
  27. *dst = (UA_MessageType)((UA_Int32)(tmpBuf[0]<<16) + (UA_Int32)(tmpBuf[1]<<8) + (UA_Int32)(tmpBuf[2]));
  28. return retval;
  29. }
  30. void UA_MessageType_printf(char *label, UA_MessageType* p) {
  31. UA_Byte* b = (UA_Byte*) p;
  32. printf("%s{%c%c%c}\n", label, b[2],b[1],b[0]);
  33. }
  34. UA_Int32 UA_OPCUATcpMessageHeader_calcSizeBinary(UA_OPCUATcpMessageHeader const * ptr) {
  35. if(ptr==UA_NULL) return sizeof(UA_OPCUATcpMessageHeader);
  36. return 0
  37. + 3 // messageType
  38. + sizeof(UA_Byte) // isFinal
  39. + sizeof(UA_UInt32) // messageSize
  40. ;
  41. }
  42. UA_Int32 UA_OPCUATcpMessageHeader_encodeBinary(UA_OPCUATcpMessageHeader const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  43. UA_Int32 retval = UA_SUCCESS;
  44. retval |= UA_MessageType_encodeBinary(&src->messageType,dst,offset);
  45. retval |= UA_Byte_encodeBinary(&src->isFinal,dst,offset);
  46. retval |= UA_UInt32_encodeBinary(&src->messageSize,dst,offset);
  47. return retval;
  48. }
  49. UA_Int32 UA_OPCUATcpMessageHeader_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_OPCUATcpMessageHeader * dst) {
  50. UA_Int32 retval = UA_SUCCESS;
  51. UA_OPCUATcpMessageHeader_init(dst);
  52. CHECKED_DECODE(UA_MessageType_decodeBinary(src,offset,&dst->messageType), UA_OPCUATcpMessageHeader_deleteMembers(dst));
  53. CHECKED_DECODE(UA_Byte_decodeBinary(src,offset,&dst->isFinal), UA_OPCUATcpMessageHeader_deleteMembers(dst));
  54. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->messageSize), UA_OPCUATcpMessageHeader_deleteMembers(dst));
  55. return retval;
  56. }
  57. UA_Int32 UA_OPCUATcpMessageHeader_delete(UA_OPCUATcpMessageHeader *p) {
  58. UA_Int32 retval = UA_SUCCESS;
  59. retval |= UA_OPCUATcpMessageHeader_deleteMembers(p);
  60. retval |= UA_free(p);
  61. return retval;
  62. }
  63. UA_Int32 UA_OPCUATcpMessageHeader_deleteMembers(UA_OPCUATcpMessageHeader *p) {
  64. UA_Int32 retval = UA_SUCCESS;
  65. return retval;
  66. }
  67. UA_Int32 UA_OPCUATcpMessageHeader_init(UA_OPCUATcpMessageHeader *p) {
  68. UA_Int32 retval = UA_SUCCESS;
  69. retval |= UA_Byte_init(&p->isFinal);
  70. retval |= UA_UInt32_init(&p->messageSize);
  71. return retval;
  72. }
  73. UA_TYPE_NEW_DEFAULT(UA_OPCUATcpMessageHeader)
  74. UA_Int32 UA_OPCUATcpMessageHeader_copy(const UA_OPCUATcpMessageHeader *src,UA_OPCUATcpMessageHeader *dst) {
  75. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  76. UA_Int32 retval = UA_SUCCESS;
  77. memcpy(dst, src, sizeof(UA_OPCUATcpMessageHeader));
  78. return retval;
  79. }
  80. UA_Int32 UA_OPCUATcpHelloMessage_calcSizeBinary(UA_OPCUATcpHelloMessage const * ptr) {
  81. if(ptr==UA_NULL) return sizeof(UA_OPCUATcpHelloMessage);
  82. return 0
  83. + sizeof(UA_UInt32) // protocolVersion
  84. + sizeof(UA_UInt32) // receiveBufferSize
  85. + sizeof(UA_UInt32) // sendBufferSize
  86. + sizeof(UA_UInt32) // maxMessageSize
  87. + sizeof(UA_UInt32) // maxChunkCount
  88. + UA_String_calcSizeBinary(&ptr->endpointUrl)
  89. ;
  90. }
  91. UA_Int32 UA_OPCUATcpHelloMessage_encodeBinary(UA_OPCUATcpHelloMessage const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  92. UA_Int32 retval = UA_SUCCESS;
  93. retval |= UA_UInt32_encodeBinary(&src->protocolVersion,dst,offset);
  94. retval |= UA_UInt32_encodeBinary(&src->receiveBufferSize,dst,offset);
  95. retval |= UA_UInt32_encodeBinary(&src->sendBufferSize,dst,offset);
  96. retval |= UA_UInt32_encodeBinary(&src->maxMessageSize,dst,offset);
  97. retval |= UA_UInt32_encodeBinary(&src->maxChunkCount,dst,offset);
  98. retval |= UA_String_encodeBinary(&src->endpointUrl,dst,offset);
  99. return retval;
  100. }
  101. UA_Int32 UA_OPCUATcpHelloMessage_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_OPCUATcpHelloMessage * dst) {
  102. UA_Int32 retval = UA_SUCCESS;
  103. UA_OPCUATcpHelloMessage_init(dst);
  104. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->protocolVersion), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  105. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->receiveBufferSize), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  106. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->sendBufferSize), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  107. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->maxMessageSize), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  108. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->maxChunkCount), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  109. CHECKED_DECODE(UA_String_decodeBinary(src,offset,&dst->endpointUrl), UA_OPCUATcpHelloMessage_deleteMembers(dst));
  110. return retval;
  111. }
  112. UA_Int32 UA_OPCUATcpHelloMessage_delete(UA_OPCUATcpHelloMessage *p) {
  113. UA_Int32 retval = UA_SUCCESS;
  114. retval |= UA_OPCUATcpHelloMessage_deleteMembers(p);
  115. retval |= UA_free(p);
  116. return retval;
  117. }
  118. UA_Int32 UA_OPCUATcpHelloMessage_deleteMembers(UA_OPCUATcpHelloMessage *p) {
  119. UA_Int32 retval = UA_SUCCESS;
  120. retval |= UA_String_deleteMembers(&p->endpointUrl);
  121. return retval;
  122. }
  123. UA_Int32 UA_OPCUATcpHelloMessage_init(UA_OPCUATcpHelloMessage *p) {
  124. UA_Int32 retval = UA_SUCCESS;
  125. retval |= UA_UInt32_init(&p->protocolVersion);
  126. retval |= UA_UInt32_init(&p->receiveBufferSize);
  127. retval |= UA_UInt32_init(&p->sendBufferSize);
  128. retval |= UA_UInt32_init(&p->maxMessageSize);
  129. retval |= UA_UInt32_init(&p->maxChunkCount);
  130. retval |= UA_String_init(&p->endpointUrl);
  131. return retval;
  132. }
  133. UA_TYPE_NEW_DEFAULT(UA_OPCUATcpHelloMessage)
  134. UA_Int32 UA_OPCUATcpHelloMessage_copy(const UA_OPCUATcpHelloMessage *src,UA_OPCUATcpHelloMessage *dst) {
  135. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  136. UA_Int32 retval = UA_SUCCESS;
  137. memcpy(dst, src, sizeof(UA_OPCUATcpHelloMessage));
  138. retval |= UA_String_copy(&src->endpointUrl,&dst->endpointUrl);
  139. return retval;
  140. }
  141. UA_Int32 UA_OPCUATcpAcknowledgeMessage_calcSizeBinary(UA_OPCUATcpAcknowledgeMessage const * ptr) {
  142. if(ptr==UA_NULL) return sizeof(UA_OPCUATcpAcknowledgeMessage);
  143. return 0
  144. + sizeof(UA_UInt32) // protocolVersion
  145. + sizeof(UA_UInt32) // receiveBufferSize
  146. + sizeof(UA_UInt32) // sendBufferSize
  147. + sizeof(UA_UInt32) // maxMessageSize
  148. + sizeof(UA_UInt32) // maxChunkCount
  149. ;
  150. }
  151. UA_Int32 UA_OPCUATcpAcknowledgeMessage_encodeBinary(UA_OPCUATcpAcknowledgeMessage const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  152. UA_Int32 retval = UA_SUCCESS;
  153. retval |= UA_UInt32_encodeBinary(&src->protocolVersion,dst,offset);
  154. retval |= UA_UInt32_encodeBinary(&src->receiveBufferSize,dst,offset);
  155. retval |= UA_UInt32_encodeBinary(&src->sendBufferSize,dst,offset);
  156. retval |= UA_UInt32_encodeBinary(&src->maxMessageSize,dst,offset);
  157. retval |= UA_UInt32_encodeBinary(&src->maxChunkCount,dst,offset);
  158. return retval;
  159. }
  160. UA_Int32 UA_OPCUATcpAcknowledgeMessage_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_OPCUATcpAcknowledgeMessage * dst) {
  161. UA_Int32 retval = UA_SUCCESS;
  162. UA_OPCUATcpAcknowledgeMessage_init(dst);
  163. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->protocolVersion), UA_OPCUATcpAcknowledgeMessage_deleteMembers(dst));
  164. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->receiveBufferSize), UA_OPCUATcpAcknowledgeMessage_deleteMembers(dst));
  165. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->sendBufferSize), UA_OPCUATcpAcknowledgeMessage_deleteMembers(dst));
  166. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->maxMessageSize), UA_OPCUATcpAcknowledgeMessage_deleteMembers(dst));
  167. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->maxChunkCount), UA_OPCUATcpAcknowledgeMessage_deleteMembers(dst));
  168. return retval;
  169. }
  170. UA_Int32 UA_OPCUATcpAcknowledgeMessage_delete(UA_OPCUATcpAcknowledgeMessage *p) {
  171. UA_Int32 retval = UA_SUCCESS;
  172. retval |= UA_OPCUATcpAcknowledgeMessage_deleteMembers(p);
  173. retval |= UA_free(p);
  174. return retval;
  175. }
  176. UA_Int32 UA_OPCUATcpAcknowledgeMessage_deleteMembers(UA_OPCUATcpAcknowledgeMessage *p) {
  177. UA_Int32 retval = UA_SUCCESS;
  178. return retval;
  179. }
  180. UA_Int32 UA_OPCUATcpAcknowledgeMessage_init(UA_OPCUATcpAcknowledgeMessage *p) {
  181. UA_Int32 retval = UA_SUCCESS;
  182. retval |= UA_UInt32_init(&p->protocolVersion);
  183. retval |= UA_UInt32_init(&p->receiveBufferSize);
  184. retval |= UA_UInt32_init(&p->sendBufferSize);
  185. retval |= UA_UInt32_init(&p->maxMessageSize);
  186. retval |= UA_UInt32_init(&p->maxChunkCount);
  187. return retval;
  188. }
  189. UA_TYPE_NEW_DEFAULT(UA_OPCUATcpAcknowledgeMessage)
  190. UA_Int32 UA_OPCUATcpAcknowledgeMessage_copy(const UA_OPCUATcpAcknowledgeMessage *src,UA_OPCUATcpAcknowledgeMessage *dst) {
  191. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  192. UA_Int32 retval = UA_SUCCESS;
  193. memcpy(dst, src, sizeof(UA_OPCUATcpAcknowledgeMessage));
  194. return retval;
  195. }
  196. UA_Int32 UA_SecureConversationMessageHeader_calcSizeBinary(UA_SecureConversationMessageHeader const * ptr) {
  197. if(ptr==UA_NULL) return sizeof(UA_SecureConversationMessageHeader);
  198. return 0
  199. + sizeof(UA_OPCUATcpMessageHeader) // messageHeader CHECK: delete this or use in binary_secure.c
  200. + sizeof(UA_UInt32) // secureChannelId
  201. ;
  202. }
  203. UA_Int32 UA_SecureConversationMessageHeader_encodeBinary(UA_SecureConversationMessageHeader const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  204. UA_Int32 retval = UA_SUCCESS;
  205. retval |= UA_OPCUATcpMessageHeader_encodeBinary(&src->messageHeader,dst,offset);
  206. retval |= UA_UInt32_encodeBinary(&src->secureChannelId,dst,offset);
  207. return retval;
  208. }
  209. UA_Int32 UA_SecureConversationMessageHeader_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_SecureConversationMessageHeader * dst) {
  210. UA_Int32 retval = UA_SUCCESS;
  211. UA_SecureConversationMessageHeader_init(dst);
  212. CHECKED_DECODE(UA_OPCUATcpMessageHeader_decodeBinary(src,offset,&dst->messageHeader), UA_SecureConversationMessageHeader_deleteMembers(dst));
  213. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->secureChannelId), UA_SecureConversationMessageHeader_deleteMembers(dst));
  214. return retval;
  215. }
  216. UA_Int32 UA_SecureConversationMessageHeader_delete(UA_SecureConversationMessageHeader *p) {
  217. UA_Int32 retval = UA_SUCCESS;
  218. retval |= UA_SecureConversationMessageHeader_deleteMembers(p);
  219. retval |= UA_free(p);
  220. return retval;
  221. }
  222. UA_Int32 UA_SecureConversationMessageHeader_deleteMembers(UA_SecureConversationMessageHeader *p) {
  223. UA_Int32 retval = UA_SUCCESS;
  224. return retval;
  225. }
  226. UA_Int32 UA_SecureConversationMessageHeader_init(UA_SecureConversationMessageHeader *p) {
  227. UA_Int32 retval = UA_SUCCESS;
  228. retval |= UA_OPCUATcpMessageHeader_init(&p->messageHeader);
  229. retval |= UA_UInt32_init(&p->secureChannelId);
  230. return retval;
  231. }
  232. UA_TYPE_NEW_DEFAULT(UA_SecureConversationMessageHeader)
  233. UA_Int32 UA_SecureConversationMessageHeader_copy(const UA_SecureConversationMessageHeader *src,UA_SecureConversationMessageHeader *dst) {
  234. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  235. UA_Int32 retval = UA_SUCCESS;
  236. memcpy(dst, src, sizeof(UA_SecureConversationMessageHeader));
  237. return retval;
  238. }
  239. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_calcSizeBinary(UA_AsymmetricAlgorithmSecurityHeader const * ptr) {
  240. if(ptr==UA_NULL) return sizeof(UA_AsymmetricAlgorithmSecurityHeader);
  241. return 0
  242. + UA_ByteString_calcSizeBinary(&ptr->securityPolicyUri)
  243. + UA_ByteString_calcSizeBinary(&ptr->senderCertificate)
  244. + UA_ByteString_calcSizeBinary(&ptr->receiverCertificateThumbprint)
  245. // + sizeof(UA_UInt32) // requestId
  246. ;
  247. }
  248. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_encodeBinary(UA_AsymmetricAlgorithmSecurityHeader const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  249. UA_Int32 retval = UA_SUCCESS;
  250. retval |= UA_ByteString_encodeBinary(&src->securityPolicyUri,dst,offset);
  251. retval |= UA_ByteString_encodeBinary(&src->senderCertificate,dst,offset);
  252. retval |= UA_ByteString_encodeBinary(&src->receiverCertificateThumbprint,dst,offset);
  253. // retval |= UA_UInt32_encodeBinary(&src->requestId,dst,offset);
  254. return retval;
  255. }
  256. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_AsymmetricAlgorithmSecurityHeader * dst) {
  257. UA_Int32 retval = UA_SUCCESS;
  258. UA_AsymmetricAlgorithmSecurityHeader_init(dst);
  259. CHECKED_DECODE(UA_ByteString_decodeBinary(src,offset,&dst->securityPolicyUri), UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(dst));
  260. CHECKED_DECODE(UA_ByteString_decodeBinary(src,offset,&dst->senderCertificate), UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(dst));
  261. CHECKED_DECODE(UA_ByteString_decodeBinary(src,offset,&dst->receiverCertificateThumbprint), UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(dst));
  262. // CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->requestId), UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(dst));
  263. return retval;
  264. }
  265. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_delete(UA_AsymmetricAlgorithmSecurityHeader *p) {
  266. UA_Int32 retval = UA_SUCCESS;
  267. retval |= UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(p);
  268. retval |= UA_free(p);
  269. return retval;
  270. }
  271. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(UA_AsymmetricAlgorithmSecurityHeader *p) {
  272. UA_Int32 retval = UA_SUCCESS;
  273. retval |= UA_ByteString_deleteMembers(&p->securityPolicyUri);
  274. retval |= UA_ByteString_deleteMembers(&p->senderCertificate);
  275. retval |= UA_ByteString_deleteMembers(&p->receiverCertificateThumbprint);
  276. return retval;
  277. }
  278. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_init(UA_AsymmetricAlgorithmSecurityHeader *p) {
  279. UA_Int32 retval = UA_SUCCESS;
  280. retval |= UA_ByteString_init(&p->securityPolicyUri);
  281. retval |= UA_ByteString_init(&p->senderCertificate);
  282. retval |= UA_ByteString_init(&p->receiverCertificateThumbprint);
  283. //retval |= UA_UInt32_init(&p->requestId);
  284. return retval;
  285. }
  286. UA_TYPE_NEW_DEFAULT(UA_AsymmetricAlgorithmSecurityHeader)
  287. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_copy(const UA_AsymmetricAlgorithmSecurityHeader *src,UA_AsymmetricAlgorithmSecurityHeader *dst) {
  288. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  289. UA_Int32 retval = UA_SUCCESS;
  290. memcpy(dst, src, sizeof(UA_AsymmetricAlgorithmSecurityHeader));
  291. retval |= UA_ByteString_copy(&src->securityPolicyUri,&dst->securityPolicyUri);
  292. retval |= UA_ByteString_copy(&src->senderCertificate,&dst->senderCertificate);
  293. retval |= UA_ByteString_copy(&src->receiverCertificateThumbprint,&dst->receiverCertificateThumbprint);
  294. return retval;
  295. }
  296. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_calcSizeBinary(UA_SymmetricAlgorithmSecurityHeader const * ptr) {
  297. if(ptr==UA_NULL) return sizeof(UA_SymmetricAlgorithmSecurityHeader);
  298. return 0
  299. + sizeof(UA_UInt32) // tokenId
  300. ;
  301. }
  302. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_encodeBinary(UA_SymmetricAlgorithmSecurityHeader const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  303. UA_Int32 retval = UA_SUCCESS;
  304. retval |= UA_UInt32_encodeBinary(&src->tokenId,dst,offset);
  305. return retval;
  306. }
  307. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_SymmetricAlgorithmSecurityHeader * dst) {
  308. UA_Int32 retval = UA_SUCCESS;
  309. UA_SymmetricAlgorithmSecurityHeader_init(dst);
  310. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->tokenId), UA_SymmetricAlgorithmSecurityHeader_deleteMembers(dst));
  311. return retval;
  312. }
  313. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_delete(UA_SymmetricAlgorithmSecurityHeader *p) {
  314. UA_Int32 retval = UA_SUCCESS;
  315. retval |= UA_SymmetricAlgorithmSecurityHeader_deleteMembers(p);
  316. retval |= UA_free(p);
  317. return retval;
  318. }
  319. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_deleteMembers(UA_SymmetricAlgorithmSecurityHeader *p) {
  320. UA_Int32 retval = UA_SUCCESS;
  321. return retval;
  322. }
  323. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_init(UA_SymmetricAlgorithmSecurityHeader *p) {
  324. UA_Int32 retval = UA_SUCCESS;
  325. retval |= UA_UInt32_init(&p->tokenId);
  326. return retval;
  327. }
  328. UA_TYPE_NEW_DEFAULT(UA_SymmetricAlgorithmSecurityHeader)
  329. UA_Int32 UA_SymmetricAlgorithmSecurityHeader_copy(const UA_SymmetricAlgorithmSecurityHeader *src,UA_SymmetricAlgorithmSecurityHeader *dst) {
  330. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  331. UA_Int32 retval = UA_SUCCESS;
  332. memcpy(dst, src, sizeof(UA_SymmetricAlgorithmSecurityHeader));
  333. return retval;
  334. }
  335. UA_Int32 UA_SequenceHeader_calcSizeBinary(UA_SequenceHeader const * ptr) {
  336. if(ptr==UA_NULL) return sizeof(UA_SequenceHeader);
  337. return 0
  338. + sizeof(UA_UInt32) // sequenceNumber
  339. + sizeof(UA_UInt32) // requestId
  340. ;
  341. }
  342. UA_Int32 UA_SequenceHeader_encodeBinary(UA_SequenceHeader const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  343. UA_Int32 retval = UA_SUCCESS;
  344. retval |= UA_UInt32_encodeBinary(&src->sequenceNumber,dst,offset);
  345. retval |= UA_UInt32_encodeBinary(&src->requestId,dst,offset);
  346. return retval;
  347. }
  348. UA_Int32 UA_SequenceHeader_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_SequenceHeader * dst) {
  349. UA_Int32 retval = UA_SUCCESS;
  350. UA_SequenceHeader_init(dst);
  351. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->sequenceNumber), UA_SequenceHeader_deleteMembers(dst));
  352. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->requestId), UA_SequenceHeader_deleteMembers(dst));
  353. return retval;
  354. }
  355. UA_Int32 UA_SequenceHeader_delete(UA_SequenceHeader *p) {
  356. UA_Int32 retval = UA_SUCCESS;
  357. retval |= UA_SequenceHeader_deleteMembers(p);
  358. retval |= UA_free(p);
  359. return retval;
  360. }
  361. UA_Int32 UA_SequenceHeader_deleteMembers(UA_SequenceHeader *p) {
  362. UA_Int32 retval = UA_SUCCESS;
  363. return retval;
  364. }
  365. UA_Int32 UA_SequenceHeader_init(UA_SequenceHeader *p) {
  366. UA_Int32 retval = UA_SUCCESS;
  367. retval |= UA_UInt32_init(&p->sequenceNumber);
  368. retval |= UA_UInt32_init(&p->requestId);
  369. return retval;
  370. }
  371. UA_TYPE_NEW_DEFAULT(UA_SequenceHeader)
  372. UA_Int32 UA_SequenceHeader_copy(const UA_SequenceHeader *src,UA_SequenceHeader *dst) {
  373. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  374. UA_Int32 retval = UA_SUCCESS;
  375. memcpy(dst, src, sizeof(UA_SequenceHeader));
  376. return retval;
  377. }
  378. UA_Int32 UA_SecureConversationMessageFooter_calcSizeBinary(UA_SecureConversationMessageFooter const * ptr) {
  379. if(ptr==UA_NULL) return sizeof(UA_SecureConversationMessageFooter);
  380. return 0
  381. + UA_Array_calcSizeBinary(ptr->paddingSize,&UA_.types[UA_BYTE],ptr->padding)
  382. + sizeof(UA_Byte) // signature
  383. ;
  384. }
  385. UA_Int32 UA_SecureConversationMessageFooter_encodeBinary(UA_SecureConversationMessageFooter const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  386. UA_Int32 retval = UA_SUCCESS;
  387. retval |= UA_Array_encodeBinary(src->padding,src->paddingSize,&UA_.types[UA_BYTE],dst,offset);
  388. retval |= UA_Byte_encodeBinary(&src->signature,dst,offset);
  389. return retval;
  390. }
  391. UA_Int32 UA_SecureConversationMessageFooter_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_SecureConversationMessageFooter * dst) {
  392. UA_Int32 retval = UA_SUCCESS;
  393. UA_SecureConversationMessageFooter_init(dst);
  394. CHECKED_DECODE(UA_Int32_decodeBinary(src,offset,&dst->paddingSize),UA_SecureConversationMessageFooter_deleteMembers(dst));
  395. CHECKED_DECODE(UA_Array_decodeBinary(src,offset,dst->paddingSize,&UA_.types[UA_BYTE],(void**)&dst->padding), UA_SecureConversationMessageFooter_deleteMembers(dst));
  396. CHECKED_DECODE(UA_Byte_decodeBinary(src,offset,&dst->signature), UA_SecureConversationMessageFooter_deleteMembers(dst));
  397. return retval;
  398. }
  399. UA_Int32 UA_SecureConversationMessageFooter_delete(UA_SecureConversationMessageFooter *p) {
  400. UA_Int32 retval = UA_SUCCESS;
  401. retval |= UA_SecureConversationMessageFooter_deleteMembers(p);
  402. retval |= UA_free(p);
  403. return retval;
  404. }
  405. UA_Int32 UA_SecureConversationMessageFooter_deleteMembers(UA_SecureConversationMessageFooter *p) {
  406. UA_Int32 retval = UA_SUCCESS;
  407. retval |= UA_Array_delete((void*)p->padding,p->paddingSize,&UA_.types[UA_BYTE]);
  408. return retval;
  409. }
  410. UA_Int32 UA_SecureConversationMessageFooter_init(UA_SecureConversationMessageFooter *p) {
  411. UA_Int32 retval = UA_SUCCESS;
  412. p->paddingSize = 0;
  413. p->padding = UA_NULL;
  414. retval |= UA_Byte_init(&p->signature);
  415. return retval;
  416. }
  417. UA_TYPE_NEW_DEFAULT(UA_SecureConversationMessageFooter)
  418. UA_Int32 UA_SecureConversationMessageFooter_copy(const UA_SecureConversationMessageFooter *src,UA_SecureConversationMessageFooter *dst) {
  419. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  420. UA_Int32 retval = UA_SUCCESS;
  421. memcpy(dst, src, sizeof(UA_SecureConversationMessageFooter));
  422. <<<<<<< HEAD
  423. dst->padding = src->padding;
  424. retval |= UA_Array_copy(&src->padding, src->paddingSize,&UA_.types[UA_BYTE],(void**)&dst->padding);
  425. =======
  426. retval |= UA_Array_copy(src->padding, src->paddingSize,&UA_.types[UA_BYTE],(void**)&dst->padding);
  427. >>>>>>> origin/master
  428. return retval;
  429. }
  430. UA_Int32 UA_SecureConversationMessageAbortBody_calcSizeBinary(UA_SecureConversationMessageAbortBody const * ptr) {
  431. if(ptr==UA_NULL) return sizeof(UA_SecureConversationMessageAbortBody);
  432. return 0
  433. + sizeof(UA_UInt32) // error
  434. + UA_String_calcSizeBinary(&ptr->reason)
  435. ;
  436. }
  437. UA_Int32 UA_SecureConversationMessageAbortBody_encodeBinary(UA_SecureConversationMessageAbortBody const * src, UA_ByteString* dst, UA_UInt32 *offset) {
  438. UA_Int32 retval = UA_SUCCESS;
  439. retval |= UA_UInt32_encodeBinary(&src->error,dst,offset);
  440. retval |= UA_String_encodeBinary(&src->reason,dst,offset);
  441. return retval;
  442. }
  443. UA_Int32 UA_SecureConversationMessageAbortBody_decodeBinary(UA_ByteString const * src, UA_UInt32 *offset, UA_SecureConversationMessageAbortBody * dst) {
  444. UA_Int32 retval = UA_SUCCESS;
  445. UA_SecureConversationMessageAbortBody_init(dst);
  446. CHECKED_DECODE(UA_UInt32_decodeBinary(src,offset,&dst->error), UA_SecureConversationMessageAbortBody_deleteMembers(dst));
  447. CHECKED_DECODE(UA_String_decodeBinary(src,offset,&dst->reason), UA_SecureConversationMessageAbortBody_deleteMembers(dst));
  448. return retval;
  449. }
  450. UA_Int32 UA_SecureConversationMessageAbortBody_delete(UA_SecureConversationMessageAbortBody *p) {
  451. UA_Int32 retval = UA_SUCCESS;
  452. retval |= UA_SecureConversationMessageAbortBody_deleteMembers(p);
  453. retval |= UA_free(p);
  454. return retval;
  455. }
  456. UA_Int32 UA_SecureConversationMessageAbortBody_deleteMembers(UA_SecureConversationMessageAbortBody *p) {
  457. UA_Int32 retval = UA_SUCCESS;
  458. retval |= UA_String_deleteMembers(&p->reason);
  459. return retval;
  460. }
  461. UA_Int32 UA_SecureConversationMessageAbortBody_init(UA_SecureConversationMessageAbortBody *p) {
  462. UA_Int32 retval = UA_SUCCESS;
  463. retval |= UA_UInt32_init(&p->error);
  464. retval |= UA_String_init(&p->reason);
  465. return retval;
  466. }
  467. UA_TYPE_NEW_DEFAULT(UA_SecureConversationMessageAbortBody)
  468. UA_Int32 UA_SecureConversationMessageAbortBody_copy(const UA_SecureConversationMessageAbortBody *src,UA_SecureConversationMessageAbortBody *dst) {
  469. if(src == UA_NULL || dst == UA_NULL) return UA_ERROR;
  470. UA_Int32 retval = UA_SUCCESS;
  471. memcpy(dst, src, sizeof(UA_SecureConversationMessageAbortBody));
  472. retval |= UA_String_copy(&src->reason,&dst->reason);
  473. return retval;
  474. }