@@ -91,6 +91,27 @@ async def connect(self) -> bool:
9191 )
9292 return await self .base_connect ()
9393
94+ @classmethod
95+ def generate_ssl (
96+ cls ,
97+ certfile : str | None = None ,
98+ keyfile : str | None = None ,
99+ password : str | None = None ,
100+ ) -> ssl .SSLContext :
101+ """Generate sslctx from cert/key/password.
102+
103+ :param certfile: Cert file path for TLS server request
104+ :param keyfile: Key file path for TLS server request
105+ :param password: Password for for decrypting private key file
106+
107+ Remark:
108+ - MODBUS/TCP Security Protocol Specification demands TLSv2 at least
109+ - verify_mode is set to ssl.NONE
110+ """
111+ return CommParams .generate_ssl (
112+ False , certfile = certfile , keyfile = keyfile , password = password
113+ )
114+
94115
95116class ModbusTlsClient (ModbusTcpClient ):
96117 """**ModbusTlsClient**.
@@ -160,6 +181,28 @@ def __init__(
160181 )
161182 self .server_hostname = server_hostname
162183
184+
185+ @classmethod
186+ def generate_ssl (
187+ cls ,
188+ certfile : str | None = None ,
189+ keyfile : str | None = None ,
190+ password : str | None = None ,
191+ ) -> ssl .SSLContext :
192+ """Generate sslctx from cert/key/password.
193+
194+ :param certfile: Cert file path for TLS server request
195+ :param keyfile: Key file path for TLS server request
196+ :param password: Password for for decrypting private key file
197+
198+ Remark:
199+ - MODBUS/TCP Security Protocol Specification demands TLSv2 at least
200+ - verify_mode is set to ssl.NONE
201+ """
202+ return CommParams .generate_ssl (
203+ False , certfile = certfile , keyfile = keyfile , password = password ,
204+ )
205+
163206 @property
164207 def connected (self ) -> bool :
165208 """Connect internal."""
0 commit comments