cascade.key module

class cascade.key.Key

Bases: object

A key that the Cascade protocol reconciles.

ERROR_METHODS = ['bernoulli', 'exact']
ERROR_METHOD_BERNOULLI = 'bernoulli'
ERROR_METHOD_EXACT = 'exact'
__init__()

Create an empty key.

__repr__()

Get the unambiguous string representation of the key.

Returns:

The unambiguous string representation of the key.

__str__()

Get the human-readable string representation of the key.

Returns:

The human-readable string representation of the key.

copy(error_rate, error_method)

Copy a key and optionally apply noise.

Parameters:
  • error_rate (float) – The requested error rate.

  • error_method (str) – The method for choosing errors. Must be one of the error methods in ERROR_METHODS.

Returns:

A new Key instance, which is a copy of this key, with noise applied.

static create_random_key(size)

Create an random key.

Parameters:

size (int) – The size of the key in bits. Must be >= 0.

Returns:

A random key of the specified size.

difference(other_key)

Return the number of bits that are different between this key and the other_key (also known as the Hamming distance).

Parameters:

other_key (Key) – The other key that this key has to be compared with. Must be the same size as this key.

Returns:

The number of bits that are different between this key and the other key.

flip_bit(index)

Flip the value of the key bit at a given index (0 to 1, and vice versa).

Parameters:

index (int) – The index of the bit. Index must be in range [0, key.size).

get_bit(index)

Get the value of the key bit at a given index.

Parameters:

index (int) – The index of the bit. Index must be in range [0, key.size).

Returns:

The value (0 or 1) of the key bit at the given index.

get_size()

Get the size of the key in bits.

Returns:

The size of the key in bits.

set_bit(index, value)

Set the value of the key bit at a given index.

Parameters:
  • index (int) – The index of the bit. Index must be in range [0, key.size).

  • value (int) – The new value of the bit. Must be 0 or 1.

static set_random_seed(seed)

Set the seed for the isolated random number generated that is used only in the key module and nowhere else. If two applications set the seed to the same value, the key module produces the exact same sequence of random keys. This is used to make experiments reproducible.

Parameters:

seed (int) – The seed value for the random number generator which is isolated to the key module.