@@ -37,6 +37,8 @@ def __init__(
3737 vault_url : Optional [str ] = None ,
3838 key_name : Optional [str ] = None ,
3939 key_version : Optional [str ] = None ,
40+ enc_key_name : Optional [str ] = None ,
41+ enc_key_version : Optional [str ] = None ,
4042 client_id : Optional [str ] = None ,
4143 client_secret : Optional [str ] = None ,
4244 tenant_id : Optional [str ] = None ,
@@ -46,6 +48,12 @@ def __init__(
4648 resolved_key_version = key_version or os .environ .get (
4749 'AZURE_KEY_VAULT_KEY_VERSION'
4850 )
51+ resolved_enc_key_name = enc_key_name or os .environ .get (
52+ 'AZURE_KEY_VAULT_ENC_KEY_NAME'
53+ )
54+ resolved_enc_key_version = enc_key_version or os .environ .get (
55+ 'AZURE_KEY_VAULT_ENC_KEY_VERSION'
56+ )
4957
5058 if not resolved_vault_url :
5159 raise ValueError (
@@ -74,19 +82,43 @@ def __init__(
7482 self ._key_name = resolved_key_name
7583 self ._key_version = resolved_key_version
7684 self .key_client = KeyClient (vault_url = resolved_vault_url , credential = credential )
77- key = self .key_client .get_key (resolved_key_name , version = resolved_key_version )
78- self .crypto_client = CryptographyClient (key , credential = credential )
85+
86+ sign_key = self .key_client .get_key (
87+ resolved_key_name , version = resolved_key_version
88+ )
89+ self .crypto_client = CryptographyClient (sign_key , credential = credential )
90+
91+ self .enc_crypto_client = (
92+ CryptographyClient (
93+ self .key_client .get_key (
94+ resolved_enc_key_name , version = resolved_enc_key_version
95+ ),
96+ credential = credential ,
97+ )
98+ if resolved_enc_key_name
99+ else None
100+ )
79101
80102 def encrypt (self , plaintext : str ) -> bytes :
103+ if not self .enc_crypto_client :
104+ raise ValueError (
105+ 'AZURE_KEY_VAULT_ENC_KEY_NAME must be set to use encryption'
106+ )
81107 if isinstance (plaintext , str ):
82108 plaintext = plaintext .encode ('utf-8' )
83- result = self .crypto_client .encrypt (EncryptionAlgorithm .rsa_oaep_256 , plaintext )
109+ result = self .enc_crypto_client .encrypt (
110+ EncryptionAlgorithm .rsa_oaep_256 , plaintext
111+ )
84112 return result .ciphertext
85113
86114 def decrypt (self , ciphertext : str ) -> bytes :
115+ if not self .enc_crypto_client :
116+ raise ValueError (
117+ 'AZURE_KEY_VAULT_ENC_KEY_NAME must be set to use decryption'
118+ )
87119 if isinstance (ciphertext , str ):
88120 ciphertext = ciphertext .encode ('utf-8' )
89- result = self .crypto_client .decrypt (
121+ result = self .enc_crypto_client .decrypt (
90122 EncryptionAlgorithm .rsa_oaep_256 , ciphertext
91123 )
92124 return result .plaintext
0 commit comments