�
�S�g� � �F � d Z ddlZddlmZ dedefd�Zdeeef defd�Zy)a `JOSE Base64`_ is defined as:
- URL-safe Base64
- padding stripped
.. _`JOSE Base64`:
https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-37#appendix-C
.. Do NOT try to call this module "base64", as it will "shadow" the
standard library.
� N)�Union�data�returnc � � t | t � st d� �t j | � j d� S )z�JOSE Base64 encode.
:param data: Data to be encoded.
:type data: bytes
:returns: JOSE Base64 string.
:rtype: bytes
:raises TypeError: if ``data`` is of incorrect type
zargument should be bytes� =)�
isinstance�bytes� TypeError�base64�urlsafe_b64encode�rstrip�r s �z/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/josepy/b64.py� b64encoder s6 � � �d�E�"��2�3�3��#�#�D�)�0�0��6�6� c � � t | t � r | j d� } nt | t
� st
d� �t j | ddt | � dz z
z z � S # t $ r t d� �w xY w)a^ JOSE Base64 decode.
:param data: Base64 string to be decoded. If it's unicode, then
only ASCII characters are allowed.
:type data: bytes or unicode
:returns: Decoded data.
:rtype: bytes
:raises TypeError: if input is of incorrect type
:raises ValueError: if input is unicode with non-ASCII characters
�asciiz5unicode argument should contain only ASCII charactersz#argument should be a str or unicoder � )
r �str�encode�UnicodeEncodeError�
ValueErrorr r
r �urlsafe_b64decode�lenr s r � b64decoder # s� � � �$��� V��;�;�w�'�D� ��e�
$��=�>�>��#�#�D�4�1��D� �A�
�3F�+G�$G�H�H�� "� V��T�U�U� V�s �A) �)A>)�__doc__r �typingr r r r r � r r �<module>r sD ��� � �7�E� 7�e� 7�"I�E�%��*�%� I�%� Ir |