From a5b37c7d857f2d1a32086e364029bb05fd4bb5d4 Mon Sep 17 00:00:00 2001 From: Brendan Walsh Date: Thu, 21 Dec 2023 17:21:46 -0800 Subject: [PATCH] chore: Add script to generate pypi mfa qr --- tools/pypi/generate-pypi-mfa-qr.py | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tools/pypi/generate-pypi-mfa-qr.py diff --git a/tools/pypi/generate-pypi-mfa-qr.py b/tools/pypi/generate-pypi-mfa-qr.py new file mode 100644 index 0000000000..1280bc071f --- /dev/null +++ b/tools/pypi/generate-pypi-mfa-qr.py @@ -0,0 +1,35 @@ +import qrcode +import subprocess +from io import BytesIO +from PIL import Image +from azure.identity import DefaultAzureCredential +from azure.keyvault.secrets import SecretClient + +vault_url = "https://mmlspark-keys.vault.azure.net" +secret_name = "pypi-mfa-uri" + +def retrieve_secret_from_keyvault(vault_url, secret_name): + try: + return SecretClient(vault_url=vault_url, credential=DefaultAzureCredential()).get_secret(secret_name).value + except Exception as e: + print(f"Error: Failed to retrieve the secret from Azure Key Vault. {e}") + return None + +def generate_qr_code(text): + qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4) + qr.add_data(text) + qr.make(fit=True) + qr_img = qr.make_image(fill_color="black", back_color="white") + return qr_img + +def main(): + keyvault_secret_value = retrieve_secret_from_keyvault(vault_url, secret_name) + + if keyvault_secret_value is not None: + qr_img = generate_qr_code(keyvault_secret_value) + qr_img.show() + else: + print("Error: Failed to retrieve the secret from Azure Key Vault. Make sure you are logged in with `az login` and have access to the Azure Key Vault.") + +if __name__ == "__main__": + main()