00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #ifndef __OPC_UA_MESSAGES_SECURE_CHANNEL_H__ 00012 #define __OPC_UA_MESSAGES_SECURE_CHANNEL_H__ 00013 00014 #include <opc/ua/protocol/types.h> 00015 00016 namespace OpcUa 00017 { 00018 // OpenSecureChannel 00019 // os << SecureHeader 00020 // << AssymmetricAlgoripthmHeader 00021 // << SequenceHeader 00022 // << NodeId << ExpandedNodeId // if present 00023 // << RequestHeader 00024 // << OpenSecureChannel 00025 00026 struct OpenSecureChannelParameters 00027 { 00028 uint32_t ClientProtocolVersion; 00029 SecurityTokenRequestType RequestType; 00030 MessageSecurityMode SecurityMode; 00031 std::vector<uint8_t> ClientNonce; 00032 uint32_t RequestLifeTime; 00033 00034 OpenSecureChannelParameters(); 00035 }; 00036 00037 struct OpenSecureChannelRequest 00038 { 00039 ExpandedNodeId TypeId; 00040 RequestHeader Header; 00041 OpenSecureChannelParameters Parameters; 00042 00043 OpenSecureChannelRequest(); 00044 }; 00045 00046 00047 // OpenSecureChannelResponse 00048 // is >> SecureHeader 00049 // >> AsymmetricAlgorithmHeader 00050 // >> SequenceHeader 00051 // >> ResponseHeader 00052 // >> GetEndpointsResponse 00053 00054 struct SecurityToken 00055 { 00056 uint32_t SecureChannelId; 00057 uint32_t TokenId; 00058 DateTime CreatedAt; 00059 int32_t RevisedLifetime; 00060 00061 SecurityToken() 00062 : SecureChannelId(0) 00063 , TokenId(0) 00064 , CreatedAt(0) 00065 , RevisedLifetime(0) 00066 { 00067 } 00068 }; 00069 00070 struct OpenSecureChannelResponse 00071 { 00072 NodeId TypeId; 00073 ResponseHeader Header; 00074 00075 uint32_t ServerProtocolVersion; 00076 SecurityToken ChannelSecurityToken; 00077 std::vector<uint8_t> ServerNonce; 00078 00079 OpenSecureChannelResponse(); 00080 }; 00081 00082 struct CloseSecureChannelRequest 00083 { 00084 NodeId TypeId; 00085 RequestHeader Header; 00086 00087 CloseSecureChannelRequest(); 00088 }; 00089 00090 } // namespace OpcUa 00091 00092 #endif // __OPC_UA_MESSAGES_SECURE_CHANNEL_H__ 00093