mpyc.thresha
index
github.com/lschoe/mpyc/blob/v0.10/mpyc/thresha.py

Module for information-theoretic and pseudorandom threshold secret sharing.
 
Threshold secret sharing assumes secure channels for communication.
Pseudorandom secret sharing (PRSS) allows one to share pseudorandom
secrets without any communication, as long as the parties
agree on a (unique) common public input for each secret.
 
PRSS relies on parties having agreed upon the keys for a pseudorandom
function (PRF).

 
Modules
       
functools
mpyc.numpy
secrets

 
Classes
       
builtins.object
PRF

 
class PRF(builtins.object)
    PRF(key, bound)
 
A pseudorandom function (PRF).
 
PRF is determined by a secret key and a public maximum.
 
  Methods defined here:
__call__(self, s, n=None)
Return pseudorandom number(s) in range(self.max) for given input bytes s.
 
The numbers are a deterministic function of self.key and input s.
If n is None, a single number is returned.
If n is a (nonnegative) integer, a length-n list is returned.
If n is a shape, a shape-n array is returned.
__init__(self, key, bound)
Create a PRF determined by the given key and (upper) bound.
 
The key is given as a byte string.
Output values will be in range(bound).

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
np_pseudorandom_share(field, m, i, prfs, uci, n)
Return pseudorandom Shamir shares for party i for n random numbers.
 
The shares are based on the pseudorandom functions for party i,
given in prfs, which maps subsets of parties to PRF instances.
Input uci is used to evaluate the PRFs on a unique common input.
np_pseudorandom_share_0(field, m, i, prfs, uci, n)
Return pseudorandom Shamir shares for party i for n sharings of 0.
 
The shares are based on the pseudorandom functions for party i,
given in prfs, which maps subsets of parties to PRF instances.
Input uci is used to evaluate the PRFs on a unique common input.
np_random_split(field, s, t, m)
Split each secret given in s into m random Shamir shares.
 
The (maximum) degree for the Shamir polynomials is t, 0 <= t < m.
Return matrix of shares, one row per party.
np_recombine(field, points, x_rs=0)
Recombine shares given by points into secrets.
 
Recombination is done for x-coordinates x_rs.
pseudorandom_share(field, m, i, prfs, uci, n)
Return pseudorandom Shamir shares for party i for n random numbers.
 
The shares are based on the pseudorandom functions for party i,
given in prfs, which maps subsets of parties to PRF instances.
Input uci is used to evaluate the PRFs on a unique common input.
pseudorandom_share_zero(field, m, i, prfs, uci, n)
Return pseudorandom Shamir shares for party i for n sharings of 0.
 
The shares are based on the pseudorandom functions for party i,
given in prfs, which maps subsets of parties to PRF instances.
Input uci is used to evaluate the PRFs on a unique common input.
random_split(field, s, t, m)
Split each secret given in s into m random Shamir shares.
 
The (maximum) degree for the Shamir polynomials is t, 0 <= t < m.
Return matrix of shares, one row per party.
recombine(field, points, x_rs=0)
Recombine shares given by points into secrets.
 
Recombination is done for x-coordinates x_rs.

 
Data
        __all__ = ['random_split', 'recombine', 'pseudorandom_share', 'pseudorandom_share_zero', 'np_random_split', 'np_recombine', 'np_pseudorandom_share', 'np_pseudorandom_share_0', 'PRF']