File: //lib/python3/dist-packages/pyasn1/codec/cer/__pycache__/encoder.cpython-310.pyc
o
    c��]�$  �                   @   s�  d dl mZ d dlmZ d dlmZmZ d dlmZ d dlm	Z	 dgZ
G dd� dej�ZG d	d
� d
ej
�Z
G dd� de�ZG d
d� deej�ZG dd� deej�ZG dd� dej�ZG dd� dej�ZG dd� dej�ZG dd� dej�Zej�� Ze�ejje� ejje
� e	jje� e	jje� ejje� ej j!e� i� ej"�� Z"e"�ejj!e� ejj!e
� e	jj!e� e	jj!e� ej#j!e� ejj!e� ej j!e� ej$j!e� i� G dd� dej%�Z%e%ee"�Z&dS )�    )�error)�encoder)�str2octs�null)�univ)�useful�encodec                   @   �   e Zd Zdd� ZdS )�BooleanEncoderc                 K   s   |dkrd}nd}|ddfS )Nr   )r   )�   F� )�self�value�asn1Spec�	encodeFun�options�	substrater   r   �:/usr/lib/python3/dist-packages/pyasn1/codec/cer/encoder.py�encodeValue   s   
zBooleanEncoder.encodeValueN��__name__�
__module__�__qualname__r   r   r   r   r   r
      �    r
   c                   @   r	   )�RealEncoderc                 C   s   |\}}}| � |||�S )N)�_dropFloatingPoint)r
   r   �m�b�er   r   r   �_chooseEncBase   s   
zRealEncoder._chooseEncBaseN)r   r   r   r   r   r   r   r   r      r   r   c                   @   sL   e Zd Zed�Zed�Zed�Zed�Zed�Zed�Z	dZ
dZd	d
� ZdS )�TimeEncoderMixIn�Z�+�-�,�.�0�   �   c                 K   sp  |d ur	|� |�}|�� }| j|v s| j|v rt�d| ��|d | jkr,t�d| ��| j|v r8t�d| ��| j|v r�d}t	|�}t
|�| j�d t|�d �}|| | jkrp|| | j
kre||= d}|d8 }|| | jksY|d7 }|t|�k r�|| | jkr�||d = d}|r�|� |�}| jt|�  k r�| jk s�n t�d	| ��|jd
d� tjj| |||fi |��S )NzMust be UTC time: %r���z#Missing "Z" time zone specifier: %rz!Comma in fractions disallowed: %rF�   �   TzLength constraint violated: %r��  )�maxChunkSize)�clone�	asNumbers�	PLUS_CHAR�
MINUS_CHARr   �PyAsn1Error�Z_CHAR�
COMMA_CHAR�DOT_CHAR�list�min�index�len�	ZERO_CHAR�
MIN_LENGTH�
MAX_LENGTH�updater   �OctetStringEncoderr   )r
   r   r   r   r   �numbers�
isModified�searchIndexr   r   r   r   ,   sD   
�
��zTimeEncoderMixIn.encodeValueN)
r   r   r   �ordr3   r0   r1   r4   r5   r:   r;   r<