o
    ɶd                     @   s4   d dl mZ d dlmZ d dlZG dd deZdS )    )default_backend)rsaNc                   @   s*   e Zd ZdZd
ddZdd Zdd Zd	S )SessionKeySupplieri     c                 C   s,   || _ tj| j| j t d| _t | _dS )z
        A supplier which vends public and private keys, and can refresh the keys it uses.

        :param int key_size (optional):
            The key size to use when generating private keys. Defaults to 2048 if not provided.
        Zpublic_exponentkey_sizeZbackendN)	r   r   generate_private_keyPUBLIC_EXPONENTr   private_key	threadingLock_refresh_lock)selfr    r   Ausr/lib/python3.10/site-packages/oci/auth/session_key_supplier.py__init__   s   zSessionKeySupplier.__init__c                 C   s(   | j   | j}| j   || dS )N)Zprivatepublic)r   acquirer
   releaseZ
public_key)r   r
   r   r   r   get_key_pair   s   

zSessionKeySupplier.get_key_pairc                 C   s@   | j   ztj| j| jt d| _W | j   d S | j   w )Nr   )	r   r   r   r   r	   r   r   r
   r   )r   r   r   r   refresh&   s   

zSessionKeySupplier.refreshN)r   )__name__
__module____qualname__r	   r   r   r   r   r   r   r   r      s
    
r   )Zcryptography.hazmat.backendsr   Z)cryptography.hazmat.primitives.asymmetricr   r   objectr   r   r   r   r   <module>   s   