Fifth major update
Pre-release
Pre-release
New modules:
mpyc.fingroups
for finite groups (symmetric groups, quadratic residues, Schnorr groups, elliptic curves, class groups).mpyc.secgroups
for secure versions of finite groups by usingmpc.SecGrp()
.mpyc.__main__
for async REPL with top-levelawait
and MPyC preloaded by usingpython -m mpyc
.
New types/functions/methods:
mpyc.sectypes.SecureFloat
for secure floating-point numbers by usingmpc.SecFlt()
.mpc.gcd()
,mpc.gcdext()
,mpc.inverse()
for secure (extended) gcd and modular inverse.mpyc.statistics
module extended with securequantiles()
,covariance()
,correlation()
,linear_regression()
.mpc.find()
as secure generic search for first occurrence in a list.mpyc.gmpy
module extended withratrec()
and stubs forgmpy2
functionsgcdext()
,jacobi()
,kronecker()
.mpc.if_swap()
as convenience function for secure (oblivious) conditional swap, slightly more efficient than usingmpc.if_else()
.
New demos:
multilateration.py
for privacy-preserving multilateration (MLAT), building onridgeregression.py
demo.elgamal.py
for threshold ElGamal built from MPyC (secure) finite groups.dsa.py
for threshold DSA and Schnorr signatures, reusing distributed key generation fromelgamal.py
.
Technical changes:
- Command line option
--no-prss
for disabling PRSS (e.g., demos{helloworld,oneliners,ot,unanimous,parallelsort}.py
do not use PRSS). - Command line option
--mix32-64bit
(and environment variableMPYC_MIX32_64BIT
) for 32-bit/64-bit compatibility mode (e.g., to mix with MPyC parties running on a 32-bit Raspberry Pi OS). - Drop limitation to m=256 parties (see, e.g., demo
helloworld.py
). - Use
pyOpenSSL
only viacryptography
package for generating X.509 certificates, also upgrading incl. dummy.crt
files from version 1 to 3. - Toward favoring hashable over mutable for finite fields.
- Add Read the Docs badge,
.readthedocs.yaml
and check if environment variableREADTHEDOCS=True
for generating Sphinx-based documentation on Read the Docs (including an overview of the MPyC demos). - Add
.gitattributes
for platform-dependent line endings in.bat
and.sh
files. - And other things.
Many thanks to Niek Bouman, Stan Korzilius, Daniel Moser, Toon Segers, Meilof Veeningen, and Thijs Veugen for (continuous) collaboration.
Corresponds to package mpyc 0.8 on PyPI.
This will be the last release of MPyC supporting Python 3.6 and Python 3.7.
As of December 23, 2021 Python 3.6 has reached end-of-life (see Python Developer’s Guide), and Numpy dropped support for Python 3.7 on December 26, 2021 (see [NumPy version support]*https://numpy.org/neps/nep-0029-deprecation_policy.html)). Also PyPy is expected to fully support Python 3.8 in the course of 2022 (see PyPy - Features).