� A��g�9����UddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z mZGd�dej��Zd�eD��Ze jeje jeje jeje jeje jeje jejiZd ed <ejeefZejeefZe j d e j!d e j"d e j#de j$de jde j%de jde j&di Z'ded<d�e'�(��D��Z)e jde jde j diZ*d'd�Z+d(d�Z,Gd�d ��Z-Gd!�d"��Z.Gd#�d$��Z/Gd%�d&��Z0dS))�)� annotationsN)�utils)�x509)�NameOID�ObjectIdentifierc�>�eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)� _ASN1Type��� ���������N)�__name__� __module__� __qualname__� BitString� OctetString� UTF8String� NumericString�PrintableString� T61String� IA5String�UTCTime�GeneralizedTime� VisibleString�UniversalString� BMPString���f/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/cryptography/x509/name.pyr r sJ�������I��K��J��M��O��I��I��G��O��M��O��I�I�Ir&r c��i|] }|j|�� Sr%)�value)�.0�is r'� <dictcomp>r,!s��4�4�4�Q�a�g�q�4�4�4r&z!dict[ObjectIdentifier, _ASN1Type]�_NAMEOID_DEFAULT_TYPE�CN�L�ST�O�OU�C�STREET�DC�UID� _OidNameMap�_NAMEOID_TO_NAMEc��i|]\}}||�� Sr%r%)r*�k�vs r'r,r,<s��>�>�>�T�Q��A�q�>�>�>r&)�r<)��@�val� str | bytes�return�strc�<�|sdSt|t��r*dtj|���d��zS|�dd��}|�dd��}|�dd ��}|�d d ��}|�d d ��}|�dd��}|�dd��}|�dd��}|ddvrd|z}|ddkr |dd�dz}|S)z>Escape special characters in RFC4514 Distinguished Name value.��#�utf8�\z\\�"z\"�+z\+�,z\,�;z\;�<z\<�>z\>�z\00r)rE� �����rONz\ )� isinstance�bytes�binascii�hexlify�decode�replace)r?s r'�_escape_dn_valuerWEs�� ���r��#�u���:��X�%�c�*�*�1�1�&�9�9�9�9� �+�+�d�F� #� #�C� �+�+�c�5� !� !�C� �+�+�c�5� !� !�C� �+�+�c�5� !� !�C� �+�+�c�5� !� !�C� �+�+�c�5� !� !�C� �+�+�c�5� !� !�C� �+�+�d�F� #� #�C� �1�v�����S�j�� �2�w�#�~�~��#�2�#�h���� �Jr&c�P�|sdSd�}tj�||��S)NrDc��|�d��}t|��dkr|Stt|d����S)Nr=�)�group�len�chr�int)�mr?s r'�subz_unescape_dn_value.<locals>.subjs;���g�g�a�j�j�� �s�8�8�q�=�=��J��3�s�B�<�<� � � r&)�_RFC4514NameParser�_PAIR_REr`)r?r`s r'�_unescape_dn_valuercbs9�� ���r� !�!�!� � &� *� *�3�� 4� 4�4r&c��eZdZ ddd�dd�Zedd���Zedd���Zed d���Z dd!d�Zd"d�Z d#d�Z d d�Z dS)$� NameAttributeNT)� _validate�oidrr)r@�_type�_ASN1Type | Nonerf�boolrA�Nonec�2�t|t��std���|tjkrD|t jkrtd���t|t��std���n$t|t��std���t� |��}|�~|\}}t|t��sJ�t|� d����}||ks||kr4d|�d|�d|��} |d urt| ���tj| d � ��|�%t � |tj��}t|t��std ���||_||_||_dS) Nz2oid argument must be an ObjectIdentifier instance.z6oid must be X500_UNIQUE_IDENTIFIER for BitString type.z!value must be bytes for BitStringzvalue argument must be a strrFzAttribute's length must be >= z and <= z , but it was Tr<)� stacklevelz%_type must be from the _ASN1Type enum)rQr� TypeErrorr rr�X500_UNIQUE_IDENTIFIERrRrB�_NAMEOID_LENGTH_LIMIT�getr\�encode� ValueError�warnings�warnr-r�_oid�_valuerh) �selfrgr)rhrf� length_limits� min_length� max_length�c_len�msgs r'�__init__zNameAttribute.__init__vs����#�/�0�0� ��D��� � �I�'� '� '��g�4�4�4��L�����e�U�+�+� E�� C�D�D�D� E��e�S�)�)� @�� >�?�?�?�-�1�1�#�6�6� � � $�%2� "�J� ��e�S�)�)� )� )�)��� � �V�,�,�-�-�E��z�!�!�U�Z�%7�%7�;�Z�;�;�$�;�;�38�;�;����$�$�$�S�/�/�)��M�#�!�4�4�4�4� �=�)�-�-�c�9�3G�H�H�E��%��+�+� E��C�D�D� D��� ��� ��� � � r&c��|jS�N)rv�rxs r'rgzNameAttribute.oid�s ���y�r&c��|jSr�)rwr�s r'r)zNameAttribute.value�s ���{�r&rBc�V�t�|j|jj��S)zt The short attribute name (for example "CN") if available, otherwise the OID dotted string. )r8rqrg� dotted_stringr�s r'�rfc4514_attribute_namez$NameAttribute.rfc4514_attribute_name�s!��  �#�#�D�H�d�h�.D�E�E�Er&�attr_name_overrides�_OidNameMap | Nonec��|r|�|j��nd}|�|j}|�dt|j����S)z� Format as RFC4514 Distinguished Name string. Use short attribute name if available, otherwise fall back to OID dotted string. N�=)rqrgr�rWr))rxr�� attr_names r'�rfc4514_stringzNameAttribute.rfc4514_string�sW��2E� N� � #� #�D�H� -� -� -�$� � � ��3�I��<�<�.�t�z�:�:�<�<�<r&�other�objectc�z�t|t��stS|j|jko|j|jkSr�)rQre�NotImplementedrgr)�rxr�s r'�__eq__zNameAttribute.__eq__�s7���%��/�/� "�!� !��x�5�9�$�B���u�{�)B�Br&r^c�8�t|j|jf��Sr�)�hashrgr)r�s r'�__hash__zNameAttribute.__hash__�s���T�X�t�z�*�+�+�+r&c�(�d|j�d|j�d�S)Nz<NameAttribute(oid=z, value=�)>)rgr)r�s r'�__repr__zNameAttribute.__repr__�s��G�T�X�G�G�t�z�G�G�G�Gr&r�) rgrr)r@rhrirfrjrArk)rAr)rAr@�rArB�r�r�rArB�r�r�rArj�rAr^) rrrr~�propertyrgr)r�r�r�r�r�r%r&r'rereus ������ #'� 4� � 4�4�4�4�4�4�l�����X�������X���F�F�F��X�F�9=�=�=�=�=�=�"C�C�C�C� ,�,�,�,�H�H�H�H�H�Hr&rec�R�eZdZdd�Zdd�Z ddd �Zdd�Zdd�Zdd�Zdd�Z dd�Z d S) �RelativeDistinguishedName� attributes�typing.Iterable[NameAttribute]c�4�t|��}|std���td�|D����std���||_t |��|_t|j��t|��krtd���dS)Nz-a relative distinguished name cannot be emptyc3�@K�|]}t|t��V��dSr��rQre�r*�xs r'� <genexpr>z5RelativeDistinguishedName.__init__.<locals>.<genexpr>�s,����D�D�A�:�a��/�/�D�D�D�D�D�Dr&z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)�listrs�allrn� _attributes� frozenset�_attribute_setr\�rxr�s r'r~z"RelativeDistinguishedName.__init__�s����*�%�%� �� N��L�M�M� M��D�D��D�D�D�D�D� O��M�N�N� N�&���'� �3�3��� �t�"� #� #�s�:��� 6� 6��C�D�D� D� 7� 6r&rgrrA�list[NameAttribute]c� ���fd�|D��S)Nc�*��g|]}|j�k� |��Sr%�rg�r*r+rgs �r'� <listcomp>zDRelativeDistinguishedName.get_attributes_for_oid.<locals>.<listcomp>�� ���0�0�0�a�1�5�C�<�<��<�<�<r&r%�rxrgs `r'�get_attributes_for_oidz0RelativeDistinguishedName.get_attributes_for_oid�����1�0�0�0�4�0�0�0�0r&Nr�r�rBc�P��d��fd�|jD����S)z� Format as RFC4514 Distinguished Name string. Within each RDN, attributes are joined by '+', although that is rarely used in certificates. rIc3�B�K�|]}|����V��dSr��r��r*�attrr�s �r'r�z;RelativeDistinguishedName.rfc4514_string.<locals>.<genexpr>��F����� � �� � � � 3� 4� 4� � � � � � r&��joinr��rxr�s `r'r�z(RelativeDistinguishedName.rfc4514_string�sD����x�x� � � � ��(� � � � � � r&r�r�rjc�Z�t|t��stS|j|jkSr�)rQr�r�r�r�s r'r�z RelativeDistinguishedName.__eq__�s,���%�!:�;�;� "�!� !��"�e�&:�:�:r&r^c�*�t|j��Sr�)r�r�r�s r'r�z"RelativeDistinguishedName.__hash__s���D�'�(�(�(r&�typing.Iterator[NameAttribute]c�*�t|j��Sr�)�iterr�r�s r'�__iter__z"RelativeDistinguishedName.__iter__s���D�$�%�%�%r&c�*�t|j��Sr�)r\r�r�s r'�__len__z!RelativeDistinguishedName.__len__s���4�#�$�$�$r&c�2�d|����d�S)Nz<RelativeDistinguishedName(r�r�r�s r'r�z"RelativeDistinguishedName.__repr__ s��F�T�-@�-@�-B�-B�F�F�F�Fr&)r�r��rgrrAr�r�r�r�r��rAr�r�) rrrr~r�r�r�r�r�r�r�r%r&r'r�r��s������� E� E� E� E�1�1�1�1� 9=�  �  �  �  �  �;�;�;�;� )�)�)�)�&�&�&�&�%�%�%�%�G�G�G�G�G�Gr&r�c���eZdZejd&d���Zejd'd���Zd(d �Ze d)d*d���Z d)d+d�Zd,d�Z e d-d���Z d)d.d�Z d/d�Z d0d!�Zd1d#�Zd0d$�Zd2d%�Zd S)3�Namer�r�rArkc��dSr�r%r�s r'r~z Name.__init__s��LO�Cr&�*typing.Iterable[RelativeDistinguishedName]c��dSr�r%r�s r'r~z Name.__init__s ���sr&�:typing.Iterable[NameAttribute | RelativeDistinguishedName]c�*�t|��}td�|D����rd�|D��|_dStd�|D����r1tjtjt |��|_dStd���)Nc3�@K�|]}t|t��V��dSr�r�r�s r'r�z Name.__init__.<locals>.<genexpr>s,����@�@��z�!�]�+�+�@�@�@�@�@�@r&c�^�g|]*}ttjt|��g����+Sr%)r��typing�castrer�s r'r�z!Name.__init__.<locals>.<listcomp>s?�� � � ��*�6�;�}�a�+H�+H�*I�J�J� � � r&c3�@K�|]}t|t��V��dSr�)rQr�r�s r'r�z Name.__init__.<locals>.<genexpr>"s-����N�N�a��A�8�9�9�N�N�N�N�N�Nr&zNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)r�r�r�r�r��Listr�rnr�s r'r~z Name.__init__s����*�%�%� � �@�@�Z�@�@�@� @� @� � � �#� � � �D� � � ��N�N�:�N�N�N� N� N� �%�{�� �5�6� � � �D� � � ��7��� r&N�datarBr��_NameOidMap | Nonec�J�t||pi�����Sr�)ra�parse)�clsr�r�s r'�from_rfc4514_stringzName.from_rfc4514_string,s&�� "�$�(;�(A�r�B�B�H�H�J�J�Jr&r�c�j��d��fd�t|j��D����S)a� Format as RFC4514 Distinguished Name string. For example 'CN=foobar.com,O=Foo Corp,C=US' An X.509 name is a two-level structure: a list of sets of attributes. Each list element is separated by ',' and within each list element, set elements are separated by '+'. The latter is almost never used in real world certificates. According to RFC4514 section 2.1 the RDNSequence must be reversed when converting to string representation. rJc3�B�K�|]}|����V��dSr�r�r�s �r'r�z&Name.rfc4514_string.<locals>.<genexpr>Ar�r&)r��reversedr�r�s `r'r�zName.rfc4514_string4sL����x�x� � � � � ��!1�2�2� � � � � � r&rgrr�c� ���fd�|D��S)Nc�*��g|]}|j�k� |��Sr%r�r�s �r'r�z/Name.get_attributes_for_oid.<locals>.<listcomp>Ir�r&r%r�s `r'r�zName.get_attributes_for_oidFr�r&�list[RelativeDistinguishedName]c��|jSr��r�r�s r'�rdnsz Name.rdnsKs ����r&�backend� typing.AnyrRc�*�tj|��Sr�)� rust_x509�encode_name_bytes)rxr�s r'� public_byteszName.public_bytesOs���*�4�0�0�0r&r�r�rjc�Z�t|t��stS|j|jkSr�)rQr�r�r�r�s r'r�z Name.__eq__Rs+���%��&�&� "�!� !���5�#4�4�4r&r^c�D�tt|j����Sr�)r��tupler�r�s r'r�z Name.__hash__Xs���E�$�*�+�+�,�,�,r&r�c#�.K�|jD] }|Ed{V��� dSr�r�)rx�rdns r'r�z Name.__iter__]s5�����#� � �C��N�N�N�N�N�N�N�N� � r&c�>�td�|jD����S)Nc3�4K�|]}t|��V��dSr�)r\)r*r�s r'r�zName.__len__.<locals>.<genexpr>bs(����8�8��3�s�8�8�8�8�8�8�8�8r&)�sumr�r�s r'r�z Name.__len__as"���8�8�t�'7�8�8�8�8�8�8r&c�V�d�d�|jD����}d|�d�S)NrJc3�>K�|]}|���V��dSr�r�)r*r�s r'r�z Name.__repr__.<locals>.<genexpr>es.����K�K�$��+�+�-�-�K�K�K�K�K�Kr&z<Name(r�r��rxr�s r'r�z Name.__repr__ds6���x�x�K�K�$�:J�K�K�K�K�K�� �� � � � r&)r�r�rArk)r�r�rArk)r�r�rArkr�)r�rBr�r�rAr�r�r�)rAr�)r�r�rArRr�r�r�r�)rrrr��overloadr~� classmethodr�r�r�r�r�r�r�r�r�r�r�r%r&r'r�r�s^������ �_�O�O�O��_�O� �_�����_������(�37�K�K�K�K��[�K�9=� � � � � �$1�1�1�1� � � � ��X� �1�1�1�1�1�5�5�5�5� -�-�-�-� ����9�9�9�9�!�!�!�!�!�!r&r�c��eZdZejd��Zejd��ZdZeje��ZdZ dZ dZ de e j���d�Ze �d e��Ze �d e��Ze �d e��Zejd e�d e�d e�d e�d e�d e�d � ej��Zejd��Zd$d�Zd%d�Zd&d�Zd'd�Zd(d�Zd)d�Zd*d �Zd+d"�Zd#S),raz!(0|([1-9]\d*))(\.(0|([1-9]\d*)))+z[a-zA-Z][a-zA-Z\d-]*z!\\([\\ #=\"\+,;<>]|[\da-zA-Z]{2})z7[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z3[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z7[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z[\x80-�]�|z ( (z!) ( (z)* (z$) )? )? z#([\da-zA-Z]{2})+r�rBr�� _NameOidMaprArkc�0�||_d|_||_dS)Nr)�_data�_idx�_attr_name_overrides)rxr�r�s r'r~z_RFC4514NameParser.__init__�s���� ��� �$7��!�!�!r&rjc�<�|jt|j��kSr�)rr\r�r�s r'� _has_dataz_RFC4514NameParser._has_data�s���y�3�t�z�?�?�*�*r&� str | Nonec�R�|���r|j|jSdSr�)rr�rr�s r'�_peekz_RFC4514NameParser._peek�s(�� �>�>� � � )��:�d�i�(� (��tr&�chc�d�|���|krt�|xjdz c_dS)Nr=)rrsr)rxrs r'� _read_charz_RFC4514NameParser._read_char�s.�� �:�:�<�<�2� � �� � � � �Q�� � � � r&c��|�|j|j���}|�t�|���}|xjt |��z c_|S)N)�pos)�matchr�rrsr[r\)rx�patr r?s r'�_read_rez_RFC4514NameParser._read_re�sN��� � �$�*�$�)� �4�4�� �=�� ��k�k�m�m�� � � �S��X�X�� � �� r&r�c�r�|���stg��S|���g}|���rP|�d��|�|�����|����Ptt |����S)a' Parses the `data` string and converts it to a Name. According to RFC4514 section 2.1 the RDNSequence must be reversed when converting to string representation. So, when we parse it, we need to reverse again to get the RDNs on the correct order. rJ)rr�� _parse_rdnr �appendr�r�s r'r�z_RFC4514NameParser.parse�s����~�~��� ���8�8�O����!�!�"���n�n��� +� �O�O�C� � � � �K�K����)�)� *� *� *��n�n��� +��H�T�N�N�#�#�#r&r�c�"�|���g}|���dkrT|�d��|�|�����|���dk�Tt |��S)NrI)� _parse_narr rr�)rx�nass r'rz_RFC4514NameParser._parse_rdn�sz���~�~��� ���j�j�l�l�c�!�!� �O�O�C� � � � �J�J�t�~�~�'�'� (� (� (��j�j�l�l�c�!�!�)��-�-�-r&rec�� |�|j��}t|��}nf#t$rY|�|j��}|j�|t�|����}|�t�YnwxYw|�d��|� ��dkrI|�|j ��}tj |dd���� ��}n)|�|j��}t|��}t!||��S)Nr�rEr=)r�_OID_RErrs� _DESCR_RErrq�_NAME_TO_NAMEOIDr r� _HEXSTRING_RErS� unhexlifyrU� _STRING_RErcre)rx� oid_valuerg�namer)� raw_values r'rz_RFC4514NameParser._parse_na�s,�� .�� � �d�l�3�3�I�#�9�-�-�C�C��� !� !� !��=�=���0�0�D��+�/�/��&�*�*�4�0�0���C��{� � ��{�  !���� ������� �:�:�<�<�3� � ��M�M�$�"4�5�5�E��&�u�Q�R�R�y�1�1�8�8�:�:�E�E�� � �d�o�6�6�I�&�y�1�1�E��S�%�(�(�(s�,�A B�BN)r�rBr�r�rArk)rArj)rAr)rrBrArkr�)rAr�)rAr�)rAre)rrr�re�compilerr�_PAIRrb�_LUTF1�_SUTF1�_TUTF1r]�sys� maxunicode�_UTFMB� _LEADCHAR� _STRINGCHAR� _TRAILCHAR�VERBOSErrr~rrr rr�rrr%r&r'rarais��������b�j�=�>�>�G��� �2�3�3�I� 0�E��r�z�%� � �H� G�F� C�F� G�F� -�s�s�3�>�*�*� -� -� -�F��%�%�V�%�%�I��'�'�v�'�'�K��&�&�f�&�&�J���� �� � �� � ��  � �!&�  � � �  � � %�  � � � � � � �J��B�J�3�4�4�M�8�8�8�8� +�+�+�+����� ���� ����$�$�$�$�*.�.�.�.�)�)�)�)�)�)r&ra)r?r@rArB)r?rBrArB)1� __future__rrSrr%r�rt� cryptographyr�"cryptography.hazmat.bindings._rustrr��cryptography.x509.oidrr�Enumr �_ASN1_TYPE_TO_ENUM� COUNTRY_NAMEr�JURISDICTION_COUNTRY_NAME� SERIAL_NUMBER� DN_QUALIFIER� EMAIL_ADDRESSr�DOMAIN_COMPONENTr-�__annotations__�MappingrBr7r�� COMMON_NAME� LOCALITY_NAME�STATE_OR_PROVINCE_NAME�ORGANIZATION_NAME�ORGANIZATIONAL_UNIT_NAME�STREET_ADDRESS�USER_IDr8�itemsrrprWrcrer�r�rar%r&r'�<module>rBs��� #�"�"�"�"�"�"����� � � � � � � � � � � � �����������@�@�@�@�@�@�;�;�;�;�;�;�;�;� � � � � �� � � � �5�4�)�4�4�4�� ��)�3� �%�y�'@� ��9�4� ��)�3� ��9�.� ��i�1� <�������n�-�s�2�3� ��n�S�"2�2�3� �  ��� ��3� �"�D� ��s� �$�d� ��#� ��H� ��d� �O�U� !�� � � � �?�>�%5�%;�%;�%=�%=�>�>�>�� ��&� �%�v� ���������:5�5�5�5�&bH�bH�bH�bH�bH�bH�bH�bH�J2G�2G�2G�2G�2G�2G�2G�2G�jW!�W!�W!�W!�W!�W!�W!�W!�th)�h)�h)�h)�h)�h)�h)�h)�h)�h)r&
Memory