
íÂÐZk  ã               @   sè   d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 m Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d S)zJTest utilities.

.. warning:: This module is not part of the public API.

é    N)Údefault_backend)Úserialization)ÚComparableRSAKeyÚComparableX509c              G   s   t  j t t j j d |  Œ ƒ S)zPath to a test vector.Útestdata)Úpkg_resourcesZresource_filenameÚ__name__ÚosÚpathÚjoin)Únames© r   ú2/usr/lib/python3/dist-packages/josepy/test_util.pyÚvector_path   s    r   c              G   s   t  j t t j j d |  Œ ƒ S)zLoad contents of a test vector.r   )r   Zresource_stringr   r	   r
   r   )r   r   r   r   Úload_vector   s    r   c             C   sT   t  j j |  ƒ \ } } | j ƒ  d k r. | S| j ƒ  d k rD | St d ƒ ‚ d  S)Nz.pemz.derz1Loader could not be recognized based on extension)r	   r
   ÚsplitextÚlowerÚ
ValueError)ÚfilenameZ
loader_pemZ
loader_derÚ_Zextr   r   r   Ú_guess_loader   s    r   c              G   s;   t  |  d t j j t j j ƒ } t j j | t |  Œ  ƒ S)zLoad certificate.é   éÿÿÿÿ)r   ÚOpenSSLÚcryptoÚFILETYPE_PEMÚFILETYPE_ASN1Zload_certificater   )r   Úloaderr   r   r   Ú	load_cert(   s    r   c              G   s   t  t |  Œ  ƒ S)zLoad ComparableX509 cert.)r   r   )r   r   r   r   Úload_comparable_cert/   s    r   c              G   s;   t  |  d t j j t j j ƒ } t j j | t |  Œ  ƒ S)zLoad certificate request.r   r   )r   r   r   r   r   Zload_certificate_requestr   )r   r   r   r   r   Úload_csr4   s    r    c              G   s   t  t |  Œ  ƒ S)z(Load ComparableX509 certificate request.)r   r    )r   r   r   r   Úload_comparable_csr;   s    r!   c              G   sA   t  |  d t j t j ƒ } t | t |  Œ  d d d t ƒ  ƒƒ S)zLoad RSA private key.r   ZpasswordNZbackendr   )r   r   Zload_pem_private_keyZload_der_private_keyr   r   r   )r   r   r   r   r   Úload_rsa_private_key@   s    r"   c              G   s;   t  |  d t j j t j j ƒ } t j j | t |  Œ  ƒ S)zLoad pyOpenSSL private key.r   r   )r   r   r   r   r   Zload_privatekeyr   )r   r   r   r   r   Úload_pyopenssl_private_keyH   s    r#   c             C   s=   t  t d ƒ r t j |  | ƒ S|  r/ d d „  Sd d „  Sd S)aq  Skip tests unless a condition holds.

    This implements the basic functionality of unittest.skipUnless
    which is only available on Python 2.7+.

    :param bool condition: If ``False``, the test will be skipped
    :param str reason: the reason for skipping the test

    :rtype: callable
    :returns: decorator that hides tests unless condition is ``True``

    Ú
skipUnlessc             S   s   |  S)Nr   )Úclsr   r   r   Ú<lambda>_   s    zskip_unless.<locals>.<lambda>c             S   s   d  S)Nr   )r%   r   r   r   r&   a   s    N)ÚhasattrÚunittestr$   )Z	conditionÚreasonr   r   r   Úskip_unlessO   s
    
r*   )Ú__doc__r	   r(   r   r   Zcryptography.hazmat.backendsr   Zcryptography.hazmat.primitivesr   Zjosepyr   r   r   r   r   r   r   r    r!   r"   r#   r*   r   r   r   r   Ú<module>   s"   
