File: //usr/lib/python3/dist-packages/rsa/__pycache__/common.cpython-310.pyc
o
��aG � @ s� d Z ddlZG dd� de�Zdedefdd�Zd edefd
d�Zdededefd
d�Zdededejeeef fdd�Z dededefdd�Z
deje deje defdd�Ze
dkrfddlZe�� dS dS )z/Common functionality shared by several modules.� Nc s4 e Zd Zd
dededededdf
� fdd �
Z� ZS )�NotRelativePrimeError� �a�b�d�msg�returnNc s0 t � �|pd|||f � || _|| _|| _d S )Nz.%d and %d are not relatively prime, divider=%i)�super�__init__r r r )�selfr r r r �� __class__� �,/usr/lib/python3/dist-packages/rsa/common.pyr
s
zNotRelativePrimeError.__init__)r )�__name__�
__module__�__qualname__�int�strr
�
__classcell__r r r r r s ,r �numr c
C s6 z| � � W S ty } z tdt| � �|�d}~ww )a�
Number of bits needed to represent a integer excluding any prefix
0 bits.
Usage::
>>> bit_size(1023)
10
>>> bit_size(1024)
11
>>> bit_size(1025)
11
:param num:
Integer value. If num is 0, returns 0. Only the absolute value of the
number is considered. Therefore, signed integers will be abs(num)
before the number's bit length is determined.
:returns:
Returns the number of bits in the integer.
z,bit_size(num) only supports integers, not %rN)�
bit_length�AttributeError� TypeError�type)r �exr r r �bit_size s
��r �numberc C s | dkrdS t t| �d�S )a�
Returns the number of bytes required to hold a specific long number.
The number of bytes is rounded up.
Usage::
>>> byte_size(1 << 1023)
128
>>> byte_size((1 << 1024) - 1)
128
>>> byte_size(1 << 1024)
129
:param number:
An unsigned integer
:returns:
The number of bytes required to hold a specific long number.
r � � )�ceil_divr )r r r r � byte_size8 s r! �divc C s t | |�\}}|r
|d7 }|S )av
Returns the ceiling function of a division between `num` and `div`.
Usage::
>>> ceil_div(100, 7)
15
>>> ceil_div(100, 10)
10
>>> ceil_div(1, 4)
1
:param num: Division's numerator, a number
:param div: Division's divisor, a number
:return: Rounded up result of the division between the parameters.
r )�divmod)r r"