Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/modules/crypto/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyc

�
�Udac@`s]ddlmZmZmZeZidd6dgd6dd6ZdZd	Zd
Z	ddl
Z
ddlZddlZddl
Z
ddlmZdd
lmZddlmZmZddlmZmZmZddlmZdZdZdZ y\ddl!Z!dd
l!mZee!j"�Z#e!j$j%dkrEdZ&dZ'ndZ&dZ'Wn#e(k
rwe
j)�Z e*Z+nXe,Z+dZ-y?ddl.Z.ddl.m/Z/ddl0m1Z1ee.j"�Z2Wn#e(k
r�e
j)�Z-e*Z3nXe,Z3dZ4dej5fd��YZ6de6fd��YZ7de6fd ��YZ8d!�Z9e:d"krYe9�ndS(#i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontpreviewtstatust	communitytsupported_byso
---
module: openssl_csr_info
version_added: '2.8'
short_description: Provide information of OpenSSL Certificate Signing Requests (CSR)
description:
    - This module allows one to query information on OpenSSL Certificate Signing Requests (CSR).
    - In case the CSR signature cannot be validated, the module will fail. In this case, all return
      variables are still returned.
    - It uses the pyOpenSSL or cryptography python library to interact with OpenSSL. If both the
      cryptography and PyOpenSSL libraries are available (and meet the minimum version requirements)
      cryptography will be preferred as a backend over PyOpenSSL (unless the backend is forced with
      C(select_crypto_backend)). Please note that the PyOpenSSL backend was deprecated in Ansible 2.9
      and will be removed in Ansible 2.13.
requirements:
    - PyOpenSSL >= 0.15 or cryptography >= 1.3
author:
  - Felix Fontein (@felixfontein)
  - Yanis Guenane (@Spredzy)
options:
    path:
        description:
            - Remote absolute path where the CSR file is loaded from.
        type: path
        required: true

    select_crypto_backend:
        description:
            - Determines which crypto backend to use.
            - The default choice is C(auto), which tries to use C(cryptography) if available, and falls back to C(pyopenssl).
            - If set to C(pyopenssl), will try to use the L(pyOpenSSL,https://pypi.org/project/pyOpenSSL/) library.
            - If set to C(cryptography), will try to use the L(cryptography,https://cryptography.io/) library.
            - Please note that the C(pyopenssl) backend has been deprecated in Ansible 2.9, and will be removed in Ansible 2.13.
              From that point on, only the C(cryptography) backend will be available.
        type: str
        default: auto
        choices: [ auto, cryptography, pyopenssl ]

seealso:
- module: openssl_csr
ss
- name: Generate an OpenSSL Certificate Signing Request
  openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com

- name: Get information on the CSR
  openssl_csr_info:
    path: /etc/ssl/csr/www.ansible.com.csr
  register: result

- name: Dump information
  debug:
    var: result
s�
signature_valid:
    description:
        - Whether the CSR's signature is valid.
        - In case the check returns C(no), the module will fail.
    returned: success
    type: bool
basic_constraints:
    description: Entries in the C(basic_constraints) extension, or C(none) if extension is not present.
    returned: success
    type: list
    elements: str
    sample: "[CA:TRUE, pathlen:1]"
basic_constraints_critical:
    description: Whether the C(basic_constraints) extension is critical.
    returned: success
    type: bool
extended_key_usage:
    description: Entries in the C(extended_key_usage) extension, or C(none) if extension is not present.
    returned: success
    type: list
    elements: str
    sample: "[Biometric Info, DVCS, Time Stamping]"
extended_key_usage_critical:
    description: Whether the C(extended_key_usage) extension is critical.
    returned: success
    type: bool
extensions_by_oid:
    description: Returns a dictionary for every extension OID
    returned: success
    type: dict
    contains:
        critical:
            description: Whether the extension is critical.
            returned: success
            type: bool
        value:
            description: The Base64 encoded value (in DER format) of the extension
            returned: success
            type: str
            sample: "MAMCAQU="
    sample: '{"1.3.6.1.5.5.7.1.24": { "critical": false, "value": "MAMCAQU="}}'
key_usage:
    description: Entries in the C(key_usage) extension, or C(none) if extension is not present.
    returned: success
    type: str
    sample: "[Key Agreement, Data Encipherment]"
key_usage_critical:
    description: Whether the C(key_usage) extension is critical.
    returned: success
    type: bool
subject_alt_name:
    description: Entries in the C(subject_alt_name) extension, or C(none) if extension is not present.
    returned: success
    type: list
    elements: str
    sample: "[DNS:www.ansible.com, IP:1.2.3.4]"
subject_alt_name_critical:
    description: Whether the C(subject_alt_name) extension is critical.
    returned: success
    type: bool
ocsp_must_staple:
    description: C(yes) if the OCSP Must Staple extension is present, C(none) otherwise.
    returned: success
    type: bool
ocsp_must_staple_critical:
    description: Whether the C(ocsp_must_staple) extension is critical.
    returned: success
    type: bool
subject:
    description:
        - The CSR's subject as a dictionary.
        - Note that for repeated values, only the last one will be returned.
    returned: success
    type: dict
    sample: '{"commonName": "www.example.com", "emailAddress": "[email protected]"}'
subject_ordered:
    description: The CSR's subject as an ordered list of tuples.
    returned: success
    type: list
    elements: list
    sample: '[["commonName", "www.example.com"], ["emailAddress": "[email protected]"]]'
    version_added: "2.9"
public_key:
    description: CSR's public key in PEM format
    returned: success
    type: str
    sample: "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A..."
public_key_fingerprints:
    description:
        - Fingerprints of CSR's public key.
        - For every hash algorithm available, the fingerprint is computed.
    returned: success
    type: dict
    sample: "{'sha256': 'd4:b3:aa:6d:c8:04:ce:4e:ba:f6:29:4d:92:a3:94:b0:c2:ff:bd:bf:33:63:11:43:34:0f:51:b0:95:09:2f:63',
              'sha512': 'f7:07:4a:f0:b0:f0:e6:8b:95:5f:f9:e6:61:0a:32:68:f1..."
subject_key_identifier:
    description:
        - The CSR's subject key identifier.
        - The identifier is returned in hexadecimal, with C(:) used to separate bytes.
        - Is C(none) if the C(SubjectKeyIdentifier) extension is not present.
    returned: success and if the pyOpenSSL backend is I(not) used
    type: str
    sample: '00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33'
    version_added: "2.9"
authority_key_identifier:
    description:
        - The CSR's authority key identifier.
        - The identifier is returned in hexadecimal, with C(:) used to separate bytes.
        - Is C(none) if the C(AuthorityKeyIdentifier) extension is not present.
    returned: success and if the pyOpenSSL backend is I(not) used
    type: str
    sample: '00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33'
    version_added: "2.9"
authority_cert_issuer:
    description:
        - The CSR's authority cert issuer as a list of general names.
        - Is C(none) if the C(AuthorityKeyIdentifier) extension is not present.
    returned: success and if the pyOpenSSL backend is I(not) used
    type: list
    elements: str
    sample: "[DNS:www.ansible.com, IP:1.2.3.4]"
    version_added: "2.9"
authority_cert_serial_number:
    description:
        - The CSR's authority cert serial number.
        - Is C(none) if the C(AuthorityKeyIdentifier) extension is not present.
    returned: success and if the pyOpenSSL backend is I(not) used
    type: int
    sample: '12345'
    version_added: "2.9"
N(tLooseVersion(tcrypto(t
AnsibleModuletmissing_required_lib(t	to_nativetto_texttto_bytes(t	ipaddresss1.3s0.15it
tlsfeaturetstatus_requests1.3.6.1.5.5.7.1.24sDER:30:03:02:01:05(tx509(t
serializations
%Y%m%d%H%M%SZtCertificateSigningRequestInfocB`s�eZd�Zd�Zd�Zejd��Zejd��Zejd��Z	ejd��Z
ejd��Zejd��Zejd	��Z
ejd
��Zejd��Zejd��Zejd
��Zd�ZRS(cC`s?tt|�j|jddt|j�||_||_dS(Ntpathtpresent(tsuperRt__init__tparamstFalset
check_modetbackendtmodule(tselfRR((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyRs

	cC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pytgeneratescC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pytdumpscC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_subject_orderedscC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_key_usagescC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_extended_key_usagescC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_basic_constraints scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_ocsp_must_staple$scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_subject_alt_name(scC`sdS(N((Rtbinary((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_public_key,scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_subject_key_identifier0scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_authority_key_identifier4scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_all_extensions8scC`sdS(N((R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_is_signature_valid<scC`s�t�}tj|jd|j�|_|j�}t�|d<x"|D]\}}||d|<qGW||d<|j�\|d<|d<|j�\|d<|d<|j	�\|d<|d	<|j
�\|d
<|d<|j�\|d<|d
<|jdt
�|d<|jdt�}|dk	r4tj|�nt�|d<|jdkrb|j�}|dk	r�ttj|��}djgtdt|�d�D]}|||d!^q��}n||d<|j�\}}	}
|dk	rAttj|��}djgtdt|�d�D]}|||d!^q�}n||d<|	|d<|
|d<n|j�|d<|j�|d<|ds�|jjdd|�n|S(NRtsubjecttsubject_orderedt	key_usagetkey_usage_criticaltextended_key_usagetextended_key_usage_criticaltbasic_constraintstbasic_constraints_criticaltocsp_must_stapletocsp_must_staple_criticaltsubject_alt_nametsubject_alt_name_criticalR't
public_keytpublic_key_fingerprintst	pyopensslt:iitsubject_key_identifiertauthority_key_identifiertauthority_cert_issuertauthority_cert_serial_numbertextensions_by_oidtsignature_validtmsgsCSR signature is invalid!(tdicttcrypto_utilstload_certificate_requestRRtcsrR!R"R#R$R%R&R(RtTruetNonetget_fingerprint_of_bytesR)RtbinasciithexlifytjointrangetlenR*R+R,Rt	fail_json(RtresultR-tktvtpktskititakitacitacsn((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pytget_info@sF	

(B
B




(t__name__t
__module__RRR tabctabstractmethodR!R"R#R$R%R&R(R)R*R+R,RZ(((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyRs	
		t)CertificateSigningRequestInfoCryptographycB`szeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�ZRS(
s9Validate the supplied CSR, using the cryptography backendcC`stt|�j|d�dS(Ntcryptography(RR_R(RR((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyRoscC`sCg}x6|jjD](}|jtj|j�|jg�qW|S(N(RGR-tappendREtcryptography_oid_to_nametoidtvalue(RRQt	attribute((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR!rs&cC`sHy#|jjjtj�}|j}td|jd|jd|j	d|j
d|jd|jd|j
dtd	t�	}|dr�|jtd|jd	|j��ntdd
dddddd
ddddddddd	d�	}tg|j�D]\}}|r�||^q��|jfSWntjjk
rCdtfSXdS(Ntdigital_signaturetcontent_commitmenttkey_enciphermenttdata_enciphermentt
key_agreementt
key_cert_signtcrl_signt
encipher_onlyt
decipher_onlysDigital SignaturesNon RepudiationsKey EnciphermentsData Encipherments
Key AgreementsCertificate SignsCRL Signs
Encipher Onlys
Decipher Only(RGt
extensionstget_extension_for_classRtKeyUsageRdRDRfRgRhRiRjRkRlRtupdateRmRntsortedtitemstcriticalR`tExtensionNotFoundRI(Rtcurrent_key_exttcurrent_key_usageR/tkey_usage_namestnameRd((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR"xs@									
		/cC`ssyN|jjjtj�}tg|jD]}tj|�^q(�|j	fSWnt
jjk
rndt
fSXdS(N(RGRoRpRtExtendedKeyUsageRsRdRERbRuR`RvRIR(Rtext_keyusage_extteku((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR#�s%cC`s�y�|jjjtj�}g}|jdj|jjr?dnd��|jj	dk	rz|jdj|jj	��nt|�|jfSWnt
jjk
r�dtfSXdS(NsCA:{0}tTRUEtFALSEspathlen:{0}(RGRoRpRtBasicConstraintsRatformatRdtcatpath_lengthRIRsRuR`RvR(RR|RQ((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR$�s(cC`s�y�y4|jjjtj�}tjjj|jk}WnLt	k
r�}tj
jd�}|jjj|�}|jjdk}nX||j
fSWntjjk
r�dtfSXdS(Ns1.3.6.1.5.5.7.1.24s0(RGRoRpRt
TLSFeatureR`tTLSFeatureTypeRRdtAttributeErrorRctObjectIdentifiertget_extension_for_oidRuRvRIR(Rttlsfeature_extRdtdummyRc((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR%�scC`ssyN|jjjtj�}g|jD]}tj|�^q%}||jfSWnt	jj
k
rndtfSXdS(N(
RGRoRpRtSubjectAlternativeNameRdREtcryptography_decode_nameRuR`RvRIR(Rtsan_exttsanRQ((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR&�s%cC`s7|jj�j|r!tjjn	tjjtjj�S(N(	RGR9tpublic_bytesRtEncodingtDERtPEMtPublicFormattSubjectPublicKeyInfo(RR'((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR(�scC`sEy&|jjjtj�}|jjSWntjjk
r@dSXdS(N(
RGRoRpRtSubjectKeyIdentifierRdtdigestR`RvRI(Rtext((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR)�s
cC`s�yx|jjjtj�}d}|jjdk	r^g|jjD]}tj	|�^q@}n|jj
||jjfSWntjj
k
r�dSXdS(N(NNN(RGRoRpRtAuthorityKeyIdentifierRIRdR?RER�tkey_identifierR@R`Rv(RR�tissuerR�((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR*�s+cC`stj|j�S(N(REt$cryptography_get_extensions_from_csrRG(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR+�scC`s
|jjS(N(RGtis_signature_valid(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR,�s(R[R\t__doc__RR!R"R#R$R%R&R(R)R*R+R,(((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR_ms			&								
	t&CertificateSigningRequestInfoPyOpenSSLcB`s�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZRS(svalidate the supplied CSR.cC`stt|�j|d�dS(NR;(RR�R(RR((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR�scC`sKg}x>|j�D]0}|jtj|d�t|d�g�qW|S(Nii(tget_componentsRaREtpyopenssl_normalize_nameR
(RRzRQtsub((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt
__get_name�s.cC`s|j|jj��S(N(t1_CertificateSigningRequestInfoPyOpenSSL__get_nameRGtget_subject(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR!�scC`s�x�|jj�D]q}|j�|krgt|dd�jd�D]}tj|j��^qD}t|�t	|j
��fSqWdtfS(Nterrorstsurrogate_or_strictt,(
RGtget_extensionstget_short_nameR
tsplitRER�tstripRstbooltget_criticalRIR(Rt
short_namet	extensiontusageRQ((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_get_extension�s
= cC`s
|jd�S(NtkeyUsage(R�(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR"�scC`s
|jd�S(NtextendedKeyUsage(R�(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR#scC`s
|jd�S(NtbasicConstraints(R�(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR$scC`s�|jj�}g|D]6}t|j��tkrt|�tkr|^q}tjjdkr�|j	g|D]0}|j�dkrq|j
�dkrq|^qq�n|r�tt|dj
��fSdtfSdS(NitUNDEFs0i(RGR�RR�tOPENSSL_MUST_STAPLE_NAMEtOPENSSL_MUST_STAPLE_VALUEtOpenSSLtSSLtOPENSSL_VERSION_NUMBERtextendtget_dataRHR�R�RIR(RRoR�toms_ext((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR%s
6GcC`sa|jd�r&d|td�}n|jd�r]tj|d�}dj|j�}n|S(NsIP Address:sIP:isIP:{0}(t
startswithROtcompat_ipaddresst
ip_addressR�t
compressed(RR�tip((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt_normalize_sanscC`s�x||jj�D]k}|j�dkrgt|dd�jd�D]}|j|j��^qD}|t|j��fSqWdt
fS(NtsubjectAltNameR�R�s, (RGR�R�R
R�R�R�R�R�RIR(RR�taltnameRQ((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR& s:cC`s�y/tj|rtjntj|jj��SWn�tk
r�y�tj�}|rxtjj	||jj�j
�}n!tjj||jj�j
�}|dkr�tj�ntj
|�SWq�tk
r�|jjd�q�XnXdS(Nis�Your pyOpenSSL version does not support dumping public keys. Please upgrade to version 16.0 or newer, or use the cryptography backend.(R	tdump_publickeyt
FILETYPE_ASN1tFILETYPE_PEMRGt
get_pubkeyR�t_new_mem_buft_libti2d_PUBKEY_biot_pkeytPEM_write_bio_PUBKEYt_raise_current_errort_bio_to_stringRtwarn(RR'tbiotrc((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR((s
$!

cC`sdS(N(RI(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR)<scC`sdS(N(NNN(RI(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR*@scC`stj|j�S(N(REt!pyopenssl_get_extensions_from_csrRG(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR+DscC`s?y#t|jj|jj���SWntjk
r:tSXdS(N(R�RGtverifyR�R	tErrorR(R((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR,Gs#(R[R\R�RR�R!R�R"R#R$R%R�R&R(R)R*R+R,(((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyR��s 										
					cC`satdtdtdddt�dtddddd	dd
dg��dt�}y�tjj|jd�ppd
}tjj|�s�|jd|dd|�n|jd}|dkr7t	o�t
tt�k}t
o�ttt�k}|r�d
}n|r	d}n|dkr7|jddjtt��q7n|dkr�t
sq|jdtdjt��dt�nyttjd�Wn!tk
r�|jdd�nX|jddd�t|�}nI|d
krt	s|jdtdjt��dt�nt|�}n|j�}|j|�Wn,tjk
r\}|jdt|��nXdS(Nt
argument_specRttypetrequiredtselect_crypto_backendtstrtdefaulttautotchoicesR`R;tsupports_check_modet.RzRCs>The directory %s does not exist or the file is not a directorys]Can't detect any of the required Python libraries cryptography (>= {0}) or PyOpenSSL (>= {1})spyOpenSSL >= {0}t	exceptionR�s You need to have PyOpenSSL>=0.15sKThe module is using the PyOpenSSL backend. This backend has been deprecatedtversions2.13scryptography >= {0}( R
RDRHtosRtdirnameRtisdirRPtCRYPTOGRAPHY_FOUNDtCRYPTOGRAPHY_VERSIONRtMINIMAL_CRYPTOGRAPHY_VERSIONtPYOPENSSL_FOUNDtPYOPENSSL_VERSIONtMINIMAL_PYOPENSSL_VERSIONR�RtPYOPENSSL_IMP_ERRtgetattrR	tX509ReqR�t	deprecateR�tCRYPTOGRAPHY_IMP_ERRR_RZt	exit_jsonREtOpenSSLObjectErrorR(Rtbase_dirRtcan_use_cryptographytcan_use_pyopenssltcertificateRQtexc((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pytmainOsT'		
		


t__main__(;t
__future__RRRR�t
__metaclass__tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLEStRETURNR]RKR�t	tracebacktdistutils.versionRtansible.module_utilsR	REtansible.module_utils.basicR
Rtansible.module_utils._textRR
Rtansible.module_utils.compatRR�R�R�RIR�R�t__version__R�R�R�R�R�tImportErrort
format_excRR�RHR�R`Rtcryptography.hazmat.primitivesRR�R�tTIMESTAMP_FORMATt
OpenSSLObjectRR_R�R�R[(((sK/usr/lib/python2.7/site-packages/ansible/modules/crypto/openssl_csr_info.pyt<module>sb


*�	




lzh	;

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]