UA_stackInternalTypes.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. #include "UA_stackInternalTypes.h"
  2. UA_Int32 UA_MessageType_calcSize(UA_MessageType const * ptr){
  3. if(ptr==UA_NULL){return sizeof(UA_MessageType);}
  4. return 0
  5. + 3 * sizeof(UA_Byte);
  6. }
  7. UA_Int32 UA_MessageType_encode(UA_MessageType const * src, UA_Int32* pos, UA_Byte* dst){
  8. UA_Int32 retval = UA_SUCCESS;
  9. UA_Byte tmpBuf[3];
  10. tmpBuf[0] = (UA_Byte)((((UA_Int32)*src) >> 16) );
  11. tmpBuf[1] = (UA_Byte)((((UA_Int32)*src) >> 8));
  12. tmpBuf[2] = (UA_Byte)(((UA_Int32)*src));
  13. retval |= UA_Byte_encode(&(tmpBuf[0]),pos,dst);
  14. retval |= UA_Byte_encode(&(tmpBuf[1]),pos,dst);
  15. retval |= UA_Byte_encode(&(tmpBuf[2]),pos,dst);
  16. return retval;
  17. }
  18. UA_Int32 UA_MessageType_decode(UA_Byte const * src, UA_Int32* pos, UA_MessageType* dst){
  19. UA_Int32 retval = UA_SUCCESS;
  20. UA_Byte tmpBuf[3];
  21. retval |= UA_Byte_decode(src,pos,&(tmpBuf[0]));//messageType to Byte representation
  22. retval |= UA_Byte_decode(src,pos,&(tmpBuf[1]));
  23. retval |= UA_Byte_decode(src,pos,&(tmpBuf[2]));
  24. *dst = (UA_MessageType)((UA_Int32)(tmpBuf[0]<<16) + (UA_Int32)(tmpBuf[1]<<8) + (UA_Int32)(tmpBuf[2]));
  25. return retval;
  26. }
  27. UA_TYPE_METHOD_DELETE_FREE(UA_MessageType)
  28. UA_TYPE_METHOD_DELETEMEMBERS_NOACTION(UA_MessageType)
  29. void UA_MessageType_printf(char *label, UA_MessageType* p) {
  30. UA_Byte* b = (UA_Byte*) p;
  31. printf("%s{%c%c%c}\n", label, b[2],b[1],b[0]);
  32. }
  33. UA_Int32 UA_OPCUATcpMessageHeader_calcSize(UA_OPCUATcpMessageHeader const * ptr) {
  34. if(ptr==UA_NULL){return sizeof(UA_OPCUATcpMessageHeader);}
  35. return 0
  36. + UA_MessageType_calcSize(&(ptr->messageType))
  37. + sizeof(UA_Byte) // isFinal
  38. + sizeof(UA_UInt32) // messageSize
  39. ;
  40. }
  41. UA_Int32 UA_OPCUATcpMessageHeader_encode(UA_OPCUATcpMessageHeader const * src, UA_Int32* pos, UA_Byte* dst) {
  42. UA_Int32 retval = UA_SUCCESS;
  43. retval |= UA_MessageType_encode(&(src->messageType),pos,dst);
  44. retval |= UA_Byte_encode(&(src->isFinal),pos,dst);
  45. retval |= UA_UInt32_encode(&(src->messageSize),pos,dst);
  46. return retval;
  47. }
  48. UA_Int32 UA_OPCUATcpMessageHeader_decode(UA_Byte const * src, UA_Int32* pos, UA_OPCUATcpMessageHeader* dst) {
  49. UA_Int32 retval = UA_SUCCESS;
  50. retval |= UA_MessageType_decode(src,pos,&(dst->messageType));
  51. retval |= UA_Byte_decode(src,pos,&(dst->isFinal));
  52. retval |= UA_UInt32_decode(src,pos,&(dst->messageSize));
  53. return retval;
  54. }
  55. UA_Int32 UA_OPCUATcpMessageHeader_delete(UA_OPCUATcpMessageHeader* p) {
  56. UA_Int32 retval = UA_SUCCESS;
  57. retval |= UA_OPCUATcpMessageHeader_deleteMembers(p);
  58. retval |= UA_free(p);
  59. return retval;
  60. }
  61. UA_Int32 UA_OPCUATcpMessageHeader_deleteMembers(UA_OPCUATcpMessageHeader* p) {
  62. UA_Int32 retval = UA_SUCCESS;
  63. return retval;
  64. }
  65. UA_Int32 UA_OPCUATcpHelloMessage_calcSize(UA_OPCUATcpHelloMessage const * ptr) {
  66. if(ptr==UA_NULL){return sizeof(UA_OPCUATcpHelloMessage);}
  67. return 0
  68. + sizeof(UA_UInt32) // protocolVersion
  69. + sizeof(UA_UInt32) // receiveBufferSize
  70. + sizeof(UA_UInt32) // sendBufferSize
  71. + sizeof(UA_UInt32) // maxMessageSize
  72. + sizeof(UA_UInt32) // maxChunkCount
  73. + UA_String_calcSize(&(ptr->endpointUrl))
  74. ;
  75. }
  76. UA_Int32 UA_OPCUATcpHelloMessage_encode(UA_OPCUATcpHelloMessage const * src, UA_Int32* pos, UA_Byte* dst) {
  77. UA_Int32 retval = UA_SUCCESS;
  78. retval |= UA_UInt32_encode(&(src->protocolVersion),pos,dst);
  79. retval |= UA_UInt32_encode(&(src->receiveBufferSize),pos,dst);
  80. retval |= UA_UInt32_encode(&(src->sendBufferSize),pos,dst);
  81. retval |= UA_UInt32_encode(&(src->maxMessageSize),pos,dst);
  82. retval |= UA_UInt32_encode(&(src->maxChunkCount),pos,dst);
  83. retval |= UA_String_encode(&(src->endpointUrl),pos,dst);
  84. return retval;
  85. }
  86. UA_Int32 UA_OPCUATcpHelloMessage_decode(UA_Byte const * src, UA_Int32* pos, UA_OPCUATcpHelloMessage* dst) {
  87. UA_Int32 retval = UA_SUCCESS;
  88. retval |= UA_UInt32_decode(src,pos,&(dst->protocolVersion));
  89. retval |= UA_UInt32_decode(src,pos,&(dst->receiveBufferSize));
  90. retval |= UA_UInt32_decode(src,pos,&(dst->sendBufferSize));
  91. retval |= UA_UInt32_decode(src,pos,&(dst->maxMessageSize));
  92. retval |= UA_UInt32_decode(src,pos,&(dst->maxChunkCount));
  93. retval |= UA_String_decode(src,pos,&(dst->endpointUrl));
  94. return retval;
  95. }
  96. UA_Int32 UA_OPCUATcpHelloMessage_delete(UA_OPCUATcpHelloMessage* p) {
  97. UA_Int32 retval = UA_SUCCESS;
  98. retval |= UA_OPCUATcpHelloMessage_deleteMembers(p);
  99. retval |= UA_free(p);
  100. return retval;
  101. }
  102. UA_Int32 UA_OPCUATcpHelloMessage_deleteMembers(UA_OPCUATcpHelloMessage* p) {
  103. UA_Int32 retval = UA_SUCCESS;
  104. retval |= UA_String_deleteMembers(&(p->endpointUrl));
  105. return retval;
  106. }
  107. UA_Int32 UA_OPCUATcpAcknowledgeMessage_calcSize(UA_OPCUATcpAcknowledgeMessage const * ptr) {
  108. if(ptr==UA_NULL){return sizeof(UA_OPCUATcpAcknowledgeMessage);}
  109. return 0
  110. + sizeof(UA_UInt32) // protocolVersion
  111. + sizeof(UA_UInt32) // receiveBufferSize
  112. + sizeof(UA_UInt32) // sendBufferSize
  113. + sizeof(UA_UInt32) // maxMessageSize
  114. + sizeof(UA_UInt32) // maxChunkCount
  115. ;
  116. }
  117. UA_Int32 UA_OPCUATcpAcknowledgeMessage_encode(UA_OPCUATcpAcknowledgeMessage const * src, UA_Int32* pos, UA_Byte* dst) {
  118. UA_Int32 retval = UA_SUCCESS;
  119. retval |= UA_UInt32_encode(&(src->protocolVersion),pos,dst);
  120. retval |= UA_UInt32_encode(&(src->receiveBufferSize),pos,dst);
  121. retval |= UA_UInt32_encode(&(src->sendBufferSize),pos,dst);
  122. retval |= UA_UInt32_encode(&(src->maxMessageSize),pos,dst);
  123. retval |= UA_UInt32_encode(&(src->maxChunkCount),pos,dst);
  124. return retval;
  125. }
  126. UA_Int32 UA_OPCUATcpAcknowledgeMessage_decode(UA_Byte const * src, UA_Int32* pos, UA_OPCUATcpAcknowledgeMessage* dst) {
  127. UA_Int32 retval = UA_SUCCESS;
  128. retval |= UA_UInt32_decode(src,pos,&(dst->protocolVersion));
  129. retval |= UA_UInt32_decode(src,pos,&(dst->receiveBufferSize));
  130. retval |= UA_UInt32_decode(src,pos,&(dst->sendBufferSize));
  131. retval |= UA_UInt32_decode(src,pos,&(dst->maxMessageSize));
  132. retval |= UA_UInt32_decode(src,pos,&(dst->maxChunkCount));
  133. return retval;
  134. }
  135. UA_Int32 UA_OPCUATcpAcknowledgeMessage_delete(UA_OPCUATcpAcknowledgeMessage* p) {
  136. UA_Int32 retval = UA_SUCCESS;
  137. retval |= UA_OPCUATcpAcknowledgeMessage_deleteMembers(p);
  138. retval |= UA_free(p);
  139. return retval;
  140. }
  141. UA_Int32 UA_OPCUATcpAcknowledgeMessage_deleteMembers(UA_OPCUATcpAcknowledgeMessage* p) {
  142. UA_Int32 retval = UA_SUCCESS;
  143. return retval;
  144. }
  145. UA_Int32 UA_SecureConversationMessageHeader_calcSize(UA_SecureConversationMessageHeader const * ptr) {
  146. if(ptr==UA_NULL){return sizeof(UA_SecureConversationMessageHeader);}
  147. return 0
  148. // + UA_OPCUATcpMessageHeader_calcSize(ptr->tcpMessageHeader)
  149. + sizeof(UA_UInt32) // secureChannelId
  150. ;
  151. }
  152. UA_Int32 UA_SecureConversationMessageHeader_encode(UA_SecureConversationMessageHeader const * src, UA_Int32* pos, UA_Byte* dst) {
  153. UA_Int32 retval = UA_SUCCESS;
  154. // retval |= UA_OPCUATcpMessageHeader_encode(src->tcpMessageHeader,pos,dst);
  155. retval |= UA_UInt32_encode(&(src->secureChannelId),pos,dst);
  156. return retval;
  157. }
  158. UA_Int32 UA_SecureConversationMessageHeader_decode(UA_Byte const * src, UA_Int32* pos, UA_SecureConversationMessageHeader* dst) {
  159. UA_Int32 retval = UA_SUCCESS;
  160. //retval |= UA_alloc((void**)&(dst->tcpMessageHeader),UA_OPCUATcpMessageHeader_calcSize(UA_NULL));
  161. //retval |= UA_OPCUATcpMessageHeader_decode(src,pos,dst->tcpMessageHeader);
  162. retval |= UA_UInt32_decode(src,pos,&(dst->secureChannelId));
  163. return retval;
  164. }
  165. UA_Int32 UA_SecureConversationMessageHeader_delete(UA_SecureConversationMessageHeader* p) {
  166. UA_Int32 retval = UA_SUCCESS;
  167. // retval |= UA_SecureConversationMessageHeader_deleteMembers(p);
  168. retval |= UA_free(p);
  169. return retval;
  170. }
  171. UA_Int32 UA_SecureConversationMessageHeader_deleteMembers(UA_SecureConversationMessageHeader* p) {
  172. UA_Int32 retval = UA_SUCCESS;
  173. // retval |= UA_OPCUATcpMessageHeader_delete(p->tcpMessageHeader);
  174. return retval;
  175. }
  176. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_calcSize(UA_AsymmetricAlgorithmSecurityHeader const * ptr) {
  177. if(ptr==UA_NULL){return sizeof(UA_AsymmetricAlgorithmSecurityHeader);}
  178. return 0
  179. + UA_ByteString_calcSize(&(ptr->securityPolicyUri))
  180. + UA_ByteString_calcSize(&(ptr->senderCertificate))
  181. + UA_ByteString_calcSize(&(ptr->receiverCertificateThumbprint))
  182. ;
  183. }
  184. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_encode(UA_AsymmetricAlgorithmSecurityHeader const * src, UA_Int32* pos, UA_Byte* dst) {
  185. UA_Int32 retval = UA_SUCCESS;
  186. retval |= UA_ByteString_encode(&(src->securityPolicyUri),pos,dst);
  187. retval |= UA_ByteString_encode(&(src->senderCertificate),pos,dst);
  188. retval |= UA_ByteString_encode(&(src->receiverCertificateThumbprint),pos,dst);
  189. return retval;
  190. }
  191. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_decode(UA_Byte const * src, UA_Int32* pos, UA_AsymmetricAlgorithmSecurityHeader* dst) {
  192. UA_Int32 retval = UA_SUCCESS;
  193. retval |= UA_ByteString_decode(src,pos,&(dst->securityPolicyUri));
  194. retval |= UA_ByteString_decode(src,pos,&(dst->senderCertificate));
  195. retval |= UA_ByteString_decode(src,pos,&(dst->receiverCertificateThumbprint));
  196. return retval;
  197. }
  198. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_delete(UA_AsymmetricAlgorithmSecurityHeader* p) {
  199. UA_Int32 retval = UA_SUCCESS;
  200. retval |= UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(p);
  201. retval |= UA_free(p);
  202. return retval;
  203. }
  204. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_deleteMembers(UA_AsymmetricAlgorithmSecurityHeader* p) {
  205. UA_Int32 retval = UA_SUCCESS;
  206. retval |= UA_ByteString_deleteMembers(&(p->securityPolicyUri));
  207. retval |= UA_ByteString_deleteMembers(&(p->senderCertificate));
  208. retval |= UA_ByteString_deleteMembers(&(p->receiverCertificateThumbprint));
  209. return retval;
  210. }
  211. UA_Int32 UA_AsymmetricAlgorithmSecurityHeader_init(UA_AsymmetricAlgorithmSecurityHeader* p) {
  212. UA_Int32 retval = UA_SUCCESS;
  213. if(p==UA_NULL) return UA_ERROR;
  214. retval |= UA_ByteString_init(&(p->securityPolicyUri));
  215. retval |= UA_ByteString_init(&(p->senderCertificate));
  216. retval |= UA_ByteString_init(&(p->receiverCertificateThumbprint));
  217. return retval;
  218. }
  219. UA_TYPE_METHOD_DECODE_AS(UA_SymmetricAlgorithmSecurityHeader, UA_UInt32)
  220. UA_TYPE_METHOD_ENCODE_AS(UA_SymmetricAlgorithmSecurityHeader, UA_UInt32)
  221. UA_TYPE_METHOD_DELETE_AS(UA_SymmetricAlgorithmSecurityHeader, UA_UInt32)
  222. UA_TYPE_METHOD_DELETEMEMBERS_AS(UA_SymmetricAlgorithmSecurityHeader, UA_UInt32)
  223. UA_TYPE_METHOD_CALCSIZE_AS(UA_SymmetricAlgorithmSecurityHeader, UA_UInt32)
  224. UA_Int32 UA_SequenceHeader_calcSize(UA_SequenceHeader const * ptr) {
  225. if(ptr==UA_NULL){return sizeof(UA_SequenceHeader);}
  226. return 0
  227. + sizeof(UA_UInt32) // sequenceNumber
  228. + sizeof(UA_UInt32) // requestId
  229. ;
  230. }
  231. UA_Int32 UA_SequenceHeader_encode(UA_SequenceHeader const * src, UA_Int32* pos, UA_Byte* dst) {
  232. UA_Int32 retval = UA_SUCCESS;
  233. retval |= UA_UInt32_encode(&(src->sequenceNumber),pos,dst);
  234. retval |= UA_UInt32_encode(&(src->requestId),pos,dst);
  235. return retval;
  236. }
  237. UA_Int32 UA_SequenceHeader_decode(UA_Byte const * src, UA_Int32* pos, UA_SequenceHeader* dst) {
  238. UA_Int32 retval = UA_SUCCESS;
  239. retval |= UA_UInt32_decode(src,pos,&(dst->sequenceNumber));
  240. retval |= UA_UInt32_decode(src,pos,&(dst->requestId));
  241. return retval;
  242. }
  243. UA_Int32 UA_SequenceHeader_delete(UA_SequenceHeader* p) {
  244. UA_Int32 retval = UA_SUCCESS;
  245. retval |= UA_SequenceHeader_deleteMembers(p);
  246. retval |= UA_free(p);
  247. return retval;
  248. }
  249. UA_Int32 UA_SequenceHeader_deleteMembers(UA_SequenceHeader* p) {
  250. UA_Int32 retval = UA_SUCCESS;
  251. return retval;
  252. }
  253. UA_Int32 UA_SecureConversationMessageFooter_calcSize(UA_SecureConversationMessageFooter const * ptr) {
  254. if(ptr==UA_NULL){return sizeof(UA_SecureConversationMessageFooter);}
  255. return 0
  256. + 0 //paddingSize is included in UA_Array_calcSize
  257. + UA_Array_calcSize(ptr->paddingSize, UA_BYTE, (void const**) ptr->padding)
  258. + sizeof(UA_Byte) // signature
  259. ;
  260. }
  261. UA_Int32 UA_SecureConversationMessageFooter_encode(UA_SecureConversationMessageFooter const * src, UA_Int32* pos, UA_Byte* dst) {
  262. UA_Int32 retval = UA_SUCCESS;
  263. retval |= UA_Int32_encode(&(src->paddingSize),pos,dst); // encode size
  264. retval |= UA_Array_encode((void const**) (src->padding),src->paddingSize, UA_BYTE,pos,dst);
  265. retval |= UA_Byte_encode(&(src->signature),pos,dst);
  266. return retval;
  267. }
  268. UA_Int32 UA_SecureConversationMessageFooter_decode(UA_Byte const * src, UA_Int32* pos, UA_SecureConversationMessageFooter* dst) {
  269. UA_Int32 retval = UA_SUCCESS;
  270. retval |= UA_Int32_decode(src,pos,&(dst->paddingSize)); // decode size
  271. retval |= UA_Array_new((void**)&(dst->padding),dst->paddingSize, UA_BYTE);
  272. retval |= UA_Array_decode(src,dst->paddingSize, UA_BYTE,pos,(void ** const) (dst->padding));
  273. retval |= UA_Byte_decode(src,pos,&(dst->signature));
  274. return retval;
  275. }
  276. UA_Int32 UA_SecureConversationMessageFooter_delete(UA_SecureConversationMessageFooter* p) {
  277. UA_Int32 retval = UA_SUCCESS;
  278. retval |= UA_SecureConversationMessageFooter_deleteMembers(p);
  279. retval |= UA_free(p);
  280. return retval;
  281. }
  282. UA_Int32 UA_SecureConversationMessageFooter_deleteMembers(UA_SecureConversationMessageFooter* p) {
  283. UA_Int32 retval = UA_SUCCESS;
  284. retval |= UA_Array_delete((void**)p->padding,p->paddingSize,UA_BYTE);
  285. return retval;
  286. }
  287. UA_Int32 UA_SecureConversationMessageAbortBody_calcSize(UA_SecureConversationMessageAbortBody const * ptr) {
  288. if(ptr==UA_NULL){return sizeof(UA_SecureConversationMessageAbortBody);}
  289. return 0
  290. + sizeof(UA_UInt32) // error
  291. + UA_String_calcSize(&(ptr->reason))
  292. ;
  293. }
  294. UA_Int32 UA_SecureConversationMessageAbortBody_encode(UA_SecureConversationMessageAbortBody const * src, UA_Int32* pos, UA_Byte* dst) {
  295. UA_Int32 retval = UA_SUCCESS;
  296. retval |= UA_UInt32_encode(&(src->error),pos,dst);
  297. retval |= UA_String_encode(&(src->reason),pos,dst);
  298. return retval;
  299. }
  300. UA_Int32 UA_SecureConversationMessageAbortBody_decode(UA_Byte const * src, UA_Int32* pos, UA_SecureConversationMessageAbortBody* dst) {
  301. UA_Int32 retval = UA_SUCCESS;
  302. retval |= UA_UInt32_decode(src,pos,&(dst->error));
  303. retval |= UA_String_decode(src,pos,&(dst->reason));
  304. return retval;
  305. }
  306. UA_Int32 UA_SecureConversationMessageAbortBody_delete(UA_SecureConversationMessageAbortBody* p) {
  307. UA_Int32 retval = UA_SUCCESS;
  308. retval |= UA_SecureConversationMessageAbortBody_deleteMembers(p);
  309. retval |= UA_free(p);
  310. return retval;
  311. }
  312. UA_Int32 UA_SecureConversationMessageAbortBody_deleteMembers(UA_SecureConversationMessageAbortBody* p) {
  313. UA_Int32 retval = UA_SUCCESS;
  314. retval |= UA_String_deleteMembers(&(p->reason));
  315. return retval;
  316. }