
    kKjL                     "   d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ dedefdZ ddededz  defdZ!	 	 	 ddeded   dz  de"dz  dedz  def
dZ# G d dee      Z$y)    )AnyLiteralcast)ABCMetaabstractmethod)load_pem_x509_certificate)load_pem_private_keyload_pem_public_keyload_ssh_public_keyload_ssh_private_keyload_der_private_keyload_der_public_keyEncodingPrivateFormatPublicFormatKeySerializationEncryptionBestAvailableEncryptionNoEncryption   )NativeKeyBinding
GenericKey)DictKey   )InvalidKeyTypeError)to_bytesrawreturnc                     t        |       S N)r   )r   s    e/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/_rfc7517/pem.pyimport_from_ssh_keyr!      s    s##    Npasswordc                    d| v rt        | |      }|S d| v rt        |       }|S d| v rt        | |      }|S d| v rt        |       }|j	                         S 	 t        | |      }|S # t        $ r t        |       }Y |S w xY w)Ns   OPENSSH PRIVATE)r#   s   PUBLICs   PRIVATEs   CERTIFICATE)r   r
   r	   r   
public_keyr   
ValueErrorr   )r   r#   keycerts       r    import_from_pem_keyr)      s     S "3:" J 
c	!#& J 
s	"3: J 
3	(-  	+&sX>C J  	+%c*CJ	+s   A' 'A?>A?r'   encodingPEMDERprivatec                 h   ||dk(  rt         j                  }n$|dk(  rt         j                  }nt        d|       |rD|t	               }nt        t        |            }| j                  |t        j                  |      }n!| j                  |t        j                        }t        t        |      S )zExport key into PEM/DER format bytes.

    :param key: native cryptography key
    :param encoding: "PEM" or "DER"
    :param private: export private key or public key
    :param password: encrypt private key with password
    :return: bytes
    r,   r-   zInvalid encoding: )r*   formatencryption_algorithm)r*   r0   )r   r,   r-   r&   r   r   r   private_bytesr   PKCS8public_bytesr   SubjectPublicKeyInfor   bytes)r'   r*   r.   r#   encoding_enumr1   values          r    dump_pem_keyr9   4   s     8u, 	U	 -hZ899#/> #:8H;M#N !!" &&!5 " 
   "44 ! 
 ur"   c                      e Zd ZU eed<   eed<   eed<   ededefd       Z	ededefd       Z
ed	ed
edefd       Zededefd       Zeddededz  defd       Ze	 	 	 ddeded   dz  d
ededz  def
d       Zeededefd              Zeededefd              Zeededefd              Zeededefd              Zy)CryptographyBindingkey_typessh_type_cryptography_key_typesr8   r   c                 8    |j                  | j                        S r   )
startswithr=   clsr8   s     r    check_ssh_typez"CryptographyBinding.check_ssh_typeb   s    --r"   
native_keyc                 .    t        || j                        S r   )
isinstancer>   )rB   rD   s     r    check_cryptography_keyz*CryptographyBinding.check_cryptography_keyf   s    *c&A&ABBr"   raw_keyr.   c                 l    |r| j                  |      }n| j                  |      }t        t        |      S r   )export_private_keyexport_public_keyr   r   )rB   rH   r.   r8   s       r    convert_raw_key_to_dictz+CryptographyBinding.convert_raw_key_to_dictj   s2    **73E))'2EGU##r"   c                 N    d|v r| j                  |      S | j                  |      S )Nd)import_private_keyimport_public_keyrA   s     r    import_from_dictz$CryptographyBinding.import_from_dictr   s+    %<))%00$$U++r"   Nr#   c                     | j                  |      rt        |      S |t        |      }t        ||      }| j	                  |      st        d| j                   d      |S )NzNot a key of: '')rC   r!   r   r)   rG   r   r<   )rB   r8   r#   r'   s       r    import_from_bytesz%CryptographyBinding.import_from_bytesx   sb    e$&u--)H!%2))#.%~Q&GHH
r"   r'   r*   r+   c                 f    |rt        | j                  |||      S t        | j                  |||      S r   )r9   private_keyr%   )r'   r*   r.   r#   s       r    as_byteszCryptographyBinding.as_bytes   s1     7HMM'8LLr"   objc                      y r    rB   rX   s     r    rO   z&CryptographyBinding.import_private_key        	r"   c                      y r   rZ   r[   s     r    rP   z%CryptographyBinding.import_public_key   r\   r"   c                      y r   rZ   rB   r'   s     r    rJ   z&CryptographyBinding.export_private_key   r\   r"   c                      y r   rZ   r_   s     r    rK   z%CryptographyBinding.export_public_key   r\   r"   r   NFN)__name__
__module____qualname__str__annotations__r6   r   classmethodboolrC   rG   r   rL   rQ   rT   staticmethodr   r   rW   r   rO   rP   rJ   rK   rZ   r"   r    r;   r;   ]   s   MO  .5 .T . . C C C C $c $D $W $ $ ,W , , ,
 
e 
sTz 
S 
 
  26#		M	M,'$.	M 	M *		M
 
	M 	M S S    C C    S S    C C   r"   r;   )	metaclassr   ra   )%typingr   r   r   abcr   r   cryptography.x509r   ,cryptography.hazmat.primitives.serializationr	   r
   r   r   r   r   r   r   r   r   r   r   modelsr   r   typesr   errorsr   utilr   r6   r!   r)   rh   r9   r;   rZ   r"   r    <module>rs      s    % % ' 7    1  ( $U $s $U edl c 4 .2 	&	&l#d*& D[& Dj	&
 &RF*g Fr"   