Source code for secure_comparison.utils
""" Functions that don't belong to one of the players"""
from __future__ import annotations
[docs]
def to_bits(integer: int, bit_length: int) -> list[int]:
"""
Convert a given non-negative integer to a list of bits, with the least significant bit
first, and the most significant bit last.
:param integer: Integer to be converted to bits.
:param bit_length: Amount of bits to which the integer should be converted.
:return: Bit representation of the integer in bit_length bits. Least significant bit first,
most significant last.
"""
assert integer < (1 << bit_length)
bits = [0 for _ in range(bit_length)]
for bit_index in range(bit_length):
bits[bit_index] = integer & 1
integer >>= 1
return bits
[docs]
def from_bits(bits: list[int]) -> int:
"""
Convert a set of bits, least significant bit first to a
non-negative integer.
:param bits: List of bits, least significant bit first.
:return: Integer representation of the bits.
"""
base = 1
integer = 0
for bit in bits:
if bit == 1:
integer += base
base *= 2
return integer