blob: 977386086f9653126858f14a2b8e77ba1c142f23 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import ssl
from ssl import SSLContext
from pyignite.constants import *
def wrap(conn: 'Connection', _socket):
""" Wrap socket in SSL wrapper. """
if conn.ssl_params.get('use_ssl', None):
keyfile = conn.ssl_params.get('ssl_keyfile', None)
certfile = conn.ssl_params.get('ssl_certfile', None)
if keyfile and not certfile:
raise ValueError("certfile must be specified")
password = conn.ssl_params.get('ssl_keyfile_password', None)
ssl_version = conn.ssl_params.get('ssl_version', SSL_DEFAULT_VERSION)
ciphers = conn.ssl_params.get('ssl_ciphers', SSL_DEFAULT_CIPHERS)
cert_reqs = conn.ssl_params.get('ssl_cert_reqs', ssl.CERT_NONE)
ca_certs = conn.ssl_params.get('ssl_ca_certfile', None)
context = SSLContext(ssl_version)
context.verify_mode = cert_reqs
if ca_certs:
context.load_verify_locations(ca_certs)
if certfile:
context.load_cert_chain(certfile, keyfile, password)
if ciphers:
context.set_ciphers(ciphers)
_socket = context.wrap_socket(sock=_socket)
return _socket