import json import os.path from typing import Dict from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization def get_connection_parameters(account: str) -> Dict[str, bytes]: """ Function to return parameters for Snowflake connection :param account: name of the connection defined in the connections.json file :return: dictionary containing connection parameter with values """ f = os.path.dirname(__file__) + "/connections.json" with open(f, "r") as file: connection_params = json.load(file)[account] private_key_file = connection_params["private_file"] with open(private_key_file, "rb") as key: p_key = serialization.load_pem_private_key( key.read(), password=connection_params["password"].encode(), backend=default_backend() ) pkb = p_key.private_bytes( encoding=serialization.Encoding.DER, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption(), ) connection_parameters = { "account": connection_params["account"], "user": connection_params["user"], "role": connection_params["role"], "private_key": pkb, "warehouse": connection_params["warehouse"], "database": connection_params["database"], "schema": connection_params["schema"], } return connection_parameters