Ejemplo n.º 1
0
def header_from_binary(data):
    hdr = ua.Header()
    hdr.MessageType, hdr.ChunkType, hdr.packet_size = struct.unpack("<3scI", data.read(8))
    hdr.body_size = hdr.packet_size - 8
    if hdr.MessageType in (ua.MessageType.SecureOpen, ua.MessageType.SecureClose, ua.MessageType.SecureMessage):
        hdr.body_size -= 4
        hdr.ChannelId = Primitives.UInt32.unpack(data)
        hdr.header_size = 12
    return hdr
Ejemplo n.º 2
0
def uatcp_to_binary(message_type, message):
    """
    Convert OPC UA TCP message (see OPC UA specs Part 6, 7.1) to binary.
    The only supported types are Hello, Acknowledge and ErrorMessage
    """
    header = ua.Header(message_type, ua.ChunkType.Single)
    binmsg = struct_to_binary(message)
    header.body_size = len(binmsg)
    return header_to_binary(header) + binmsg
Ejemplo n.º 3
0
 def __init__(self, security_policy, body=b'', msg_type=ua.MessageType.SecureMessage, chunk_type=ua.ChunkType.Single):
     self.MessageHeader = ua.Header(msg_type, chunk_type)
     if msg_type in (ua.MessageType.SecureMessage, ua.MessageType.SecureClose):
         self.SecurityHeader = ua.SymmetricAlgorithmHeader()
     elif msg_type == ua.MessageType.SecureOpen:
         self.SecurityHeader = ua.AsymmetricAlgorithmHeader()
     else:
         raise ua.UaError("Unsupported message type: {0}".format(msg_type))
     self.SequenceHeader = ua.SequenceHeader()
     self.Body = body
     self.security_policy = security_policy