# Written by Edouard TISSERANT (C) 2024
# This file is part of Beremiz IDE
# See COPYING file for copyrights details.
The TLS-PSK adapter that handles SSL connections instead of regular sockets,
but using Pre Shared Keys instead of Certificates
Corresponding stunnel.conf on PLC side:
from erpc.transport import TCPTransport
class SSLPSKClientTransport(TCPTransport):
def __init__(self, host, port, psk):
""" overrides TCPTransport's __init__ to wrap socket in SSl wrapper """
super(TCPTransport, self).__init__()
raise ImportError("sslpsk module is not available")
self.sslpskctx = sslpsk.SSLPSKContext(ssl.PROTOCOL_TLSv1_2)
self.sslpskctx.set_ciphers('PSK')
raw_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
raw_sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
raw_sock.connect((self._host, self._port))
self._sock = self.sslpskctx.wrap_socket(raw_sock, server_side=False)