HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/1991109/root/usr/lib/python3/dist-packages/acme/__pycache__/
Upload File :
Current File : //proc/1991109/root/usr/lib/python3/dist-packages/acme/__pycache__/crypto_util.cpython-311.pyc
�

E��c�E��^�dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlmZddlm
Z
ddlmZdd	lmZdd
lmZddlmZddlZddlmZdd
lmZddlmZeje��ZejZGd�d��ZGd�d��Zddeddfde de de!de!de!dee"e!fde
ee dej#fd�Z$			d7d e d!e
eee"ee"fd"e%d#e
eeej&ej'fde f
d$�Z(d%eej#ej)fdee"fd&�Z*d'eej#ej)fdee"fd(�Z+d'eej#ej)fdee"fd)�Z,d'eej#ej)fdee"fd*�Z-					d8d-ej.d!e
ee"d.e
e!d/e!d0e%d1e
eej/d2e
eeej&ej'fdej#fd3�Z0ej1fd4eeej2eej#fd5e!de fd6�Z3dS)9zCrypto utilities.�N)�Any)�Callable)�List)�Mapping)�Optional)�Sequence)�Set)�Tuple)�Union)�crypto)�SSL)�errorsc��eZdZdeeeejejfffd�Z	de
jdeeejejffd�Z
dS)�_DefaultCertSelection�certsc��||_dS�N)r)�selfrs  �2/usr/lib/python3/dist-packages/acme/crypto_util.py�__init__z_DefaultCertSelection.__init__&s
����
�
�
��
connection�returnc�h�|���}|r|j�|d��SdSr)�get_servernamer�get)rr�server_names   r�__call__z_DefaultCertSelection.__call__)s6�� �/�/�1�1���	5��:�>�>�+�t�4�4�4��trN)�__name__�
__module__�__qualname__r�bytesr
r�PKey�X509rr
�
Connectionrr�rrrr%s��������g�e�U�6�;���3K�-L�&L�M������3�>��h�u�V�[�RX�R]�E]�?^�6_������rrc�t�eZdZdZdeddfdejdeeee	e
je
jffde
deeejeegefdeeejgee	e
je
jffddfd	�Zd
edefd�Zdejddfd
�ZGd�d��Zde	eeffd�ZdS)�	SSLSocketa�SSL wrapper for sockets.

    :ivar socket sock: Original wrapped socket.
    :ivar dict certs: Mapping from domain names (`bytes`) to
        `OpenSSL.crypto.X509`.
    :ivar method: See `OpenSSL.SSL.Context` for allowed values.
    :ivar alpn_selection: Hook to select negotiated ALPN protocol for
        connection.
    :ivar cert_selection: Hook to select certificate for connection. If given,
        `certs` parameter would be ignored, and therefore must be empty.

    N�sockr�method�alpn_selection�cert_selectionrc��||_||_||_|s|std���|r|rtd���|}|�t	|r|ni��}||_dS)Nz*Neither cert_selection or certs specified.z(Both cert_selection and certs specified.)r)r+r*�
ValueErrorrr,)rr)rr*r+r,�actual_cert_selections       rrzSSLSocket.__init__=s�����	�,�������	K�e�	K��I�J�J�J��	I�e�	I��G�H�H�H�Tb�	�!�(�$9�5�:P�%�%�b�$Q�$Q�!�3����r�namec�,�t|j|��Sr)�getattrr)�rr0s  r�__getattr__zSSLSocket.__getattr__Ts���t�y�$�'�'�'rrc�
�|�|��}|�/t�d|�����dS|\}}t	j|j��}|�tj��|�tj	��|�
|��|�|��|j�|�
|j��|�|��dS)a�SNI certificate callback.

        This method will set a new OpenSSL context object for this
        connection when an incoming connection provides an SNI name
        (in order to serve the appropriate certificate, if any).

        :param connection: The TLS connection object on which the SNI
            extension was received.
        :type connection: :class:`OpenSSL.Connection`

        Nz=Certificate selection for server name %s failed, dropping SSL)r,�logger�debugrr
�Contextr*�set_options�OP_NO_SSLv2�OP_NO_SSLv3�use_privatekey�use_certificater+�set_alpn_select_callback�set_context)rr�pair�key�cert�new_contexts      r�_pick_certificate_cbzSSLSocket._pick_certificate_cbWs����"�"�:�.�.���<��L�L�X�#�2�2�4�4�
6�
6�
6��F��	��T��k�$�+�.�.�������0�0�0������0�0�0��"�"�3�'�'�'��#�#�D�)�)�)���*��0�0��1D�E�E�E����{�+�+�+�+�+rc�L�eZdZdZdejddfd�Zdedefd�Z	dede
fd	�ZdS)
�SSLSocket.FakeConnectionzFake OpenSSL.SSL.Connection.rrNc��||_dSr)�_wrapped)rrs  rrz!SSLSocket.FakeConnection.__init__ws
��&�D�M�M�Mrr0c�,�t|j|��Sr)r2rHr3s  rr4z$SSLSocket.FakeConnection.__getattr__zs���4�=�$�/�/�/r�unused_argsc��	|j���S#tj$r}t	j|���d}~wwxYwr)rH�shutdownr
�Error�socket�error)rrJrOs   rrLz!SSLSocket.FakeConnection.shutdown}sN��
*��}�-�-�/�/�/���9�
*�
*�
*�
�l�5�)�)�)�����
*���s��A�>�A)rr r!�__doc__r
r%r�strrr4�boolrLr&rr�FakeConnectionrFrs�������*�*�	'�s�~�	'�$�	'�	'�	'�	'�	0�C�	0�C�	0�	0�	0�	0�		*��		*��		*�		*�		*�		*�		*�		*rrSc��|j���\}}tj|j��}|�tj��|�tj��|�|j	��|j
�|�|j
��|�tj
||����}|���t�d|��	|���n+#tj$r}t'j|���d}~wwxYw||fS)NzPerforming handshake with %s)r)�acceptr
r8r*r9r:r;�set_tlsext_servername_callbackrDr+r>rSr%�set_accept_stater6r7�do_handshakerMrNrO)rr)�addr�context�ssl_sockrOs      rrUzSSLSocket.accept�s.���Y�%�%�'�'�
��d��+�d�k�*�*�����C�O�,�,�,����C�O�,�,�,��.�.�t�/H�I�I�I���*��,�,�T�-@�A�A�A��&�&�s�~�g�t�'D�'D�E�E���!�!�#�#�#�	���3�T�:�:�:�	&��!�!�#�#�#�#���y�	&�	&�	&��,�u�%�%�%�����	&����
��~�s�D�E�+D?�?E)rr r!rP�_DEFAULT_SSL_METHODrNrrr"r
rr#r$�intrr
r%rrrQrr4rDrSrUr&rrr(r(0s���������UY�2�\`�UY�
4�4�V�]�4� ����f�k�6�;�6N�0O�)O�!P�Q�4��4�"*�(�C�N�D��K�3P�RW�3W�*X�!Y�4�"*�(�C�N�3C�3;�E�&�+�BH�+�CN�=O�4P�4P�+Q�"R�	4��4�4�4�4�.(��(��(�(�(�(�,�s�~�,�$�,�,�,�,�6*�*�*�*�*�*�*�*�,��n�c�1�2������rr(i�i,)�rr0�host�port�timeoutr*�source_address�alpn_protocolsrc
�`�tj|��}|�|��d|i}	t�d||t|��r"d�|d|d��nd��||f}	tj|	fi|��}
n+#tj	$r}tj|���d}~wwxYwtj
|
��5}tj||��}
|
���|
�|��|�|
�|��	|
���|
���n+#tj$r}tj|���d}~wwxYw	ddd��n#1swxYwY|
���}|sJ�|S)a	Probe SNI server for SSL certificate.

    :param bytes name: Byte string to send as the server name in the
        client hello message.
    :param bytes host: Host to connect to.
    :param int port: Port to connect to.
    :param int timeout: Timeout in seconds.
    :param method: See `OpenSSL.SSL.Context` for allowed values.
    :param tuple source_address: Enables multi-path probing (selection
        of source interface). See `socket.creation_connection` for more
        info. Available only in Python 2.7+.
    :param alpn_protocols: Protocols to request using ALPN.
    :type alpn_protocols: `Sequence` of `bytes`

    :raises acme.errors.Error: In case of any problems.

    :returns: SSL certificate presented by the server.
    :rtype: OpenSSL.crypto.X509

    rbz!Attempting to connect to %s:%d%s.z
 from {0}:{1}r�r^N)r
r8�set_timeoutr6r7�any�formatrN�create_connectionrOrrM�
contextlib�closingr%�set_connect_state�set_tlsext_host_name�set_alpn_protosrXrL�get_peer_certificate)r0r_r`rar*rbrcrZ�
socket_kwargs�socket_tupler)rO�client�
client_sslrBs               r�	probe_snirt�s ��.�k�&�!�!�G����� � � �%�~�6�M�"����/��t��^�$�$�
-�O�"�"��q�!��q�!�
�
�
�+-�	
�	
�	
�,0��,���'��F�F�
�F�F�����<�"�"�"��l�5�!�!�!�����"����
�	�D�	!�	!�
&�V��^�G�V�4�4�
��$�$�&�&�&��'�'��-�-�-��%��&�&�~�6�6�6�	&��#�#�%�%�%����!�!�!�!���y�	&�	&�	&��,�u�%�%�%�����	&����
"�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��*�*�,�,�D��K�K�K��KsO�A$B�B<�#B7�7B<�AF�*(E�F�E;�"E6�6E;�;F�F�FF�private_key_pem�domains�must_staple�ipaddrsc��tjtj|��}tj��}g}|�g}|�g}t	|��t	|��zdkrtd���|D]}|�d|z���|D]}|�d|jz��� d�|���	d��}	tj
dd	|	�
��g}
|r*|
�tj
dd	d�
����|�|
��|�|��|�
d��|�|d
��tjtj|��S)a�Generate a CSR containing domains or IPs as subjectAltNames.

    :param buffer private_key_pem: Private key, in PEM PKCS#8 format.
    :param list domains: List of DNS names to include in subjectAltNames of CSR.
    :param bool must_staple: Whether to include the TLS Feature extension (aka
        OCSP Must Staple: https://tools.ietf.org/html/rfc7633).
    :param list ipaddrs: List of IPaddress(type ipaddress.IPv4Address or ipaddress.IPv6Address)
    names to include in subbjectAltNames of CSR.
    params ordered this way for backward competablity when called by positional argument.
    :returns: buffer PEM-encoded Certificate Signing Request.
    NrzAAt least one of domains or ipaddrs parameter need to be not empty�DNS:�IP:�, �ascii�subjectAltNameF��critical�values1.3.6.1.5.5.7.1.24sDER:30:03:02:01:05�sha256)r�load_privatekey�FILETYPE_PEM�X509Req�lenr.�append�exploded�join�encode�
X509Extension�add_extensions�
set_pubkey�set_version�sign�dump_certificate_request)rurvrwrx�private_key�csr�sanlist�address�ips�
san_string�
extensionss           r�make_csrr��s����(���_�.�.�K�
�.�
�
�C��G���������
�7�|�|�C��L�L� �A�%�%��\�]�]�]��)�)�����v��'�(�(�(�(��-�-�����u�s�|�+�,�,�,�,����7�#�#�*�*�7�3�3�J�	�����	
�	
�	
��J��*����&�.�!��'�)�)�)�	*�	*�	*����z�"�"�"��N�N�;�����O�O�A�����H�H�[�(�#�#�#��*���S�"�"�"r�loaded_cert_or_reqc���|���j�t|��}��|S�g�fd�|D��zS)Nc� ��g|]
}|�k�|��Sr&r&)�.0�d�common_names  �r�
<listcomp>z4_pyopenssl_cert_or_req_all_names.<locals>.<listcomp>s#���@�@�@�!�q�K�/?�/?�A�/?�/?�/?r)�get_subject�CN�_pyopenssl_cert_or_req_san)r��sansr�s  @r� _pyopenssl_cert_or_req_all_namesr�sT���%�0�0�2�2�5�K�%�&8�9�9�D������=�@�@�@�@�t�@�@�@�@�@r�cert_or_reqc�P���d�d�z�t|��}��fd�|D��S)a�Get Subject Alternative Names from certificate or CSR using pyOpenSSL.

    .. todo:: Implement directly in PyOpenSSL!

    .. note:: Although this is `acme` internal API, it is used by
        `letsencrypt`.

    :param cert_or_req: Certificate or CSR.
    :type cert_or_req: `OpenSSL.crypto.X509` or `OpenSSL.crypto.X509Req`.

    :returns: A list of Subject Alternative Names that is DNS.
    :rtype: `list` of `str`

    �:�DNSc�p��g|]2}|�����|����d��3S)re)�
startswith�split)r��part�part_separator�prefixs  ��rr�z._pyopenssl_cert_or_req_san.<locals>.<listcomp>4sJ���?�?�?��d�o�o�f�&=�&=�?�D�J�J�~�&�&�q�)�?�?�?r��_pyopenssl_extract_san_list_raw)r��
sans_partsr�r�s  @@rr�r�sR����$�N�
�^�
#�F�0��=�=�J�?�?�?�?�?�"�?�?�?�?rc�L��d}d|z�t|��}�fd�|D��S)aeGet Subject Alternative Names IPs from certificate or CSR using pyOpenSSL.

    :param cert_or_req: Certificate or CSR.
    :type cert_or_req: `OpenSSL.crypto.X509` or `OpenSSL.crypto.X509Req`.

    :returns: A list of Subject Alternative Names that are IP Addresses.
    :rtype: `list` of `str`. note that this returns as string, not IPaddress object

    r�z
IP Addressc�h��g|].}|�����|t���d���/Sr)r�r�)r�r�r�s  �rr�z1_pyopenssl_cert_or_req_san_ip.<locals>.<listcomp>Is9���Q�Q�Q�4�����9P�9P�Q�D��V������Q�Q�Qrr�)r�r�r�r�s   @r�_pyopenssl_cert_or_req_san_ipr�8s;����N�
�N�
*�F�0��=�=�J�Q�Q�Q�Q�:�Q�Q�Q�Qrc��t|tj��r3tjtj|���d��}n2tjtj|���d��}tjd|��}d}|�gn'|�	d���
|��}|S)aGet raw SAN string from cert or csr, parse it as UTF-8 and return.

    :param cert_or_req: Certificate or CSR.
    :type cert_or_req: `OpenSSL.crypto.X509` or `OpenSSL.crypto.X509Req`.

    :returns: raw san strings, parsed byte as utf-8
    :rtype: `list` of `str`

    zutf-8z5X509v3 Subject Alternative Name:(?: critical)?\s*(.*)r|Nre)�
isinstancerr$�dump_certificate�
FILETYPE_TEXT�decoder��re�search�groupr�)r��text�raw_san�parts_separatorr�s     rr�r�Ls����+�v�{�+�+�b��&�v�';�[�I�I�P�P�QX�Y�Y����.�v�/C�[�Q�Q�X�X�Y`�a�a���i�P�RV�W�W�G��O�����G�M�M�!�,<�,<�,B�,B�?�,S�,S�J��r�:	TrA�
not_before�validity�	force_sanr�r�c	�n�|s|s
Jd���tj��}|�tt	jt
jd����d����|�d��|�g}|�g}|�g}|�	tj
ddd����t|��dkr|d|���_
|�|�����g}|D]}	|�	d	|	z���|D]}
|�	d
|
jz��� d�|���d��}|s&t|��d
kst|��dkr*|�	tj
dd|�����|�|��|�|�dn|��|�|��|�|��|�|d��|S)atGenerate new self-signed certificate.

    :type domains: `list` of `str`
    :param OpenSSL.crypto.PKey key:
    :param bool force_san:
    :param extensions: List of additional extensions to include in the cert.
    :type extensions: `list` of `OpenSSL.crypto.X509Extension`
    :type ips: `list` of (`ipaddress.IPv4Address` or `ipaddress.IPv6Address`)

    If more than one domain is provided, all of the domains are put into
    ``subjectAltName`` X.509 extension and first domain is set as the
    subject CN. If only one domain is provided no ``subjectAltName``
    extension is used, unless `force_san` is ``True``.

    z7Must provide one or more hostnames or IPs for the cert.��NsbasicConstraintsTsCA:TRUE, pathlen:0rrzr{r|r}rer~Frr�)rr$�set_serial_numberr]�binascii�hexlify�os�urandomr�r�r�r�r�r��
set_issuerr�r�r�r��gmtime_adj_notBefore�gmtime_adj_notAfterr�r�)rArvr�r�r�r�r�rBr�r��ipr�s            r�gen_ss_certr�ksK��*�T�c�T�T�T�T�T�T��;�=�=�D����3�x�/��
�2���?�?��D�D�E�E�E����Q�������
�����
�{����������'<�	>�	>����
�7�|�|�a��� '��
��������O�O�D�$�$�&�&�'�'�'��G��)�)�����v��'�(�(�(�(��,�,�����u�r�{�*�+�+�+�+����7�#�#�*�*�7�3�3�J���C��L�L�1�$�$��C���1������&�.����
�
�
�	�	�	�	���
�#�#�#����:�#5�a�a�:�F�F�F����X�&�&�&��O�O�C�����I�I�c�8�����Kr�chain�filetypec����dttjtjfdt
f�fd��d��fd�|D����S)z�Dump certificate chain into a bundle.

    :param list chain: List of `OpenSSL.crypto.X509` (or wrapped in
        :class:`josepy.util.ComparableX509`).

    :returns: certificate chain bundle
    :rtype: bytes

    rBrc����t|tj��r:t|jtj��rt
jd���|j}t	j�|��S)NzUnexpected CSR provided.)	r��jose�ComparableX509�wrappedrr�rrMr�)rBr�s �r�
_dump_certz(dump_pyopenssl_chain.<locals>._dump_cert�sY����d�D�/�0�0�	 ��$�,���7�7�
?��l�#=�>�>�>��<�D��&�x��6�6�6rrc3�.�K�|]}�|��V��dSrr&)r�rBr�s  �r�	<genexpr>z'dump_pyopenssl_chain.<locals>.<genexpr>�s-�����7�7��J�J�t�$�$�7�7�7�7�7�7r)rr�r�rr$r"r�)r�r�r�s `@r�dump_pyopenssl_chainr��sh����7��t�2�F�K�?�@�7�U�7�7�7�7�7�7��8�8�7�7�7�7��7�7�7�7�7�7r)NFN)NNr�TNN)4rPr�rj�	ipaddress�loggingr�r�rN�typingrrrrrrr	r
r�josepyr��OpenSSLrr
�acmer�	getLoggerrr6�
SSLv23_METHODr\rr(r"r]rQr$rtrR�IPv4Address�IPv6Addressr�r�r�r�r�r�r#r�r�r�r�r�r&rr�<module>r�s���������������������	�	�	�	�	�	�	�	�
�
�
�
�����������������������������������������������������������������������������	��	�8�	$�	$���'����������o�o�o�o�o�o�o�o�d58��/�SZ�:>�6�6�E�6��6�c�6�#�6��6�AF�s�C�x��6�&�x���7�6�CI�;�6�6�6�6�rVZ�!&�\`�4"�4"�e�4"�h�u�S��X�t�C�y�=P�7Q�.R�4"��4"��t�E�)�*?��AV�*V�$W�X�Y�4"��4"�4"�4"�4"�nA��v�{�F�N�?Z�9[�A�*.�s�)�A�A�A�A�?�E�&�+�v�~�2M�,N�?�SW�X[�S\�?�?�?�?�6R�u�V�[�&�.�5P�/Q�R�VZ�[^�V_�R�R�R�R�(��v�{�F�N�7R�1S��X\�]`�Xa�����>BF�,0�FJ�CG�[_�	?�?�V�[�?�8�D��I�+>�?�$�S�M�?��?�?C�?�%�T�&�*>�%?�@�?��d�5��)>�	�@U�)U�#V�W�X�	?�
�[�?�?�?�?�F*0�)<�8�8��d�4�+>�&?��f�k�AR�&R� S�8�#&�8�AF�8�8�8�8�8�8r