You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by km...@apache.org on 2020/02/18 10:49:23 UTC
[incubator-milagro-MPC] 01/01: reduce keys storage
This is an automated email from the ASF dual-hosted git repository.
kmccusker pushed a commit to branch issue10
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-MPC.git
commit 2491d34460375362406d83d9508b77d5420c2854
Author: Kealan McCusker <ke...@gmail.com>
AuthorDate: Tue Feb 18 10:49:01 2020 +0000
reduce keys storage
---
.dockerignore | 8 +-
.gitignore | 20 +---
examples/example_dump_keys.c | 40 ++------
include/amcl/mpc.h | 45 +--------
python/amcl_mpc.py | 198 +++++++++++---------------------------
python/example_dump_keys.py | 19 +---
scripts/buildAMCL.sh | 3 +-
src/mpc.c | 50 +---------
test/smoke/test_dump_keys_smoke.c | 61 ++++++------
vagrant/README.md | 2 +-
vagrant/bootstrap.sh | 29 ++++--
11 files changed, 137 insertions(+), 338 deletions(-)
diff --git a/.dockerignore b/.dockerignore
index 7a408d6..c63cc95 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,10 +3,12 @@
**/*~
**/*bak
-model/sec256k1/__pycache__/
+log.txt
build
-vagrant
target
+incubator-milagro-crypto-c
+vagrant
coverage
-incubator-milagro-crypto-c
\ No newline at end of file
+examples/scratch.c
+
diff --git a/.gitignore b/.gitignore
index e570758..35fd25b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,21 +1,11 @@
-build
-incubator-milagro-crypto-c
-
**/*~
**/*bak
+log.txt
-model/sec256k1/__pycache__/
-model/sec256k1/*.pyc
-model/examples/game.json
-model/vectors/*/__pycache__
-model/vectors/*/*.txt
-model/vectors/*/*.json
-
-vagrant/.vagrant
+build
target
-vagrant/repo
-
-log.txt
+incubator-milagro-crypto-c
+vagrant/.vagrant
coverage
examples/scratch.c
-model/examples/scratch.py
+
diff --git a/examples/example_dump_keys.c b/examples/example_dump_keys.c
index b5ff625..ccf0f84 100644
--- a/examples/example_dump_keys.c
+++ b/examples/example_dump_keys.c
@@ -50,14 +50,11 @@ int main()
PAILLIER_public_key PUB1;
PAILLIER_private_key PRIV2;
PAILLIER_public_key PUB2;
+ PAILLIER_public_key PUB3;
// Paillier public key
char n[FS_4096] = {0};
octet N = {0,sizeof(n),n};
- char g[FS_4096] = {0};
- octet G = {0,sizeof(g),g};
- char n2[FS_4096] = {0};
- octet N2 = {0,sizeof(n2),n2};
// Paillier private key
char p[HFS_2048] = {0};
@@ -65,40 +62,23 @@ int main()
char q[HFS_2048] = {0};
octet Q = {0,sizeof(q),q};
- char lp[HFS_2048] = {0};
- octet LP = {0,sizeof(lp),lp};
- char lq[HFS_2048] = {0};
- octet LQ = {0,sizeof(lq),lq};
-
- char invp[FS_2048] = {0};
- octet INVP = {0,sizeof(invp),invp};
- char invq[FS_2048] = {0};
- octet INVQ = {0,sizeof(invq),invq};
-
- char p2[FS_2048] = {0};
- octet P2 = {0,sizeof(p2),p2};
- char q2[FS_2048] = {0};
- octet Q2 = {0,sizeof(q2),q2};
-
- char mp[HFS_2048] = {0};
- octet MP = {0,sizeof(mp),mp};
- char mq[HFS_2048] = {0};
- octet MQ = {0,sizeof(mq),mq};
-
// Generating Paillier key pair
PAILLIER_KEY_PAIR(&RNG, NULL, NULL, &PUB1, &PRIV1);
- // Write public key to octets
- MPC_DUMP_PAILLIER_PK(&PUB1, &N, &G, &N2);
+ // Write public key to octet
+ PAILLIER_PK_toOctet(&N, &PUB1);
- // Read public key from octets
- MPC_LOAD_PAILLIER_PK(&PUB2, &N, &G, &N2);
+ // Read public key from octet
+ PAILLIER_PK_fromOctet(&PUB2, &N);
+ FF_2048_toOctet(&P, PRIV1.p, HFLEN_2048);
+ FF_2048_toOctet(&Q, PRIV1.q, HFLEN_2048);
+
// Write secret key to octets
- MPC_DUMP_PAILLIER_SK(&PRIV1, &P, &Q, &LP, &LQ, &INVP, &INVQ, &P2, &Q2, &MP, &MQ);
+ MPC_DUMP_PAILLIER_SK(&PRIV1, &P, &Q);
// Read secret key from octets
- MPC_LOAD_PAILLIER_SK(&PRIV2, &P, &Q, &LP, &LQ, &INVP, &INVQ, &P2, &Q2, &MP, &MQ);
+ PAILLIER_KEY_PAIR(NULL, &P, &Q, &PUB3, &PRIV2);
char a1[FS_2048];
octet A1 = {0,sizeof(a1),a1};
diff --git a/include/amcl/mpc.h b/include/amcl/mpc.h
index 8818ac7..1c3dd97 100644
--- a/include/amcl/mpc.h
+++ b/include/amcl/mpc.h
@@ -227,55 +227,14 @@ extern int MPC_PHASE5_prove(octet *PHI, octet *RHO, octet *V[2], octet *A[2], oc
*/
extern int MPC_PHASE5_verify(octet *U[2], octet *T[2]);
-/*! \brief Write Paillier public key to octets
- *
- * @param PUB Paillier public key
- * @param N Paillier Modulus - \f$ n = pq \f$
- * @param G Public Base - \f$ g = n+1 \f$
- * @param N2 Precomputed \f$ n^2 \f$
- */
-void MPC_DUMP_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2);
-
-/*! \brief Load Paillier public key from octets
- *
- * @param PUB Paillier public key
- * @param N Paillier Modulus - \f$ n = pq \f$
- * @param G Public Base - \f$ g = n+1 \f$
- * @param N2 Precomputed \f$ n^2 \f$
- */
-void MPC_LOAD_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2);
-
-/*! \brief Write Paillier secret key to octets
+/*! \brief Write Paillier keys to octets
*
* @param PRIV Paillier secret key
* @param P Secret prime number
* @param Q Secret prime number
- * @param LP Private Key modulo \f$ p \f$ (Euler totient of \f$ p \f$)
- * @param LQ Private Key modulo \f$ q \f$ (Euler totient of \f$ q \f$)
- * @param INVP Precomputed \f$ p^{-1} \pmod{2^m} \f$
- * @param INVQ Precomputed \f$ q^{-1} \pmod{2^m} \f$
- * @param P2 Precomputed \f$ p^2 \f$
- * @param Q2 Precomputed \f$ q^2 \f$
- * @param MP Precomputed \f$ L(g^{lp} \pmod{p^2})^{-1} \f$
- * @param MQ Precomputed \f$ L(g^{lq} \pmod{q^2})^{-1} \f$
*/
-void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ);
+void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q);
-/*! \brief Load Paillier secret key from octets
- *
- * @param PRIV Paillier secret key
- * @param P Secret prime number
- * @param Q Secret prime number
- * @param LP Private Key modulo \f$ p \f$ (Euler totient of \f$ p \f$)
- * @param LQ Private Key modulo \f$ q \f$ (Euler totient of \f$ q \f$)
- * @param INVP Precomputed \f$ p^{-1} \pmod{2^m} \f$
- * @param INVQ Precomputed \f$ q^{-1} \pmod{2^m} \f$
- * @param P2 Precomputed \f$ p^2 \f$
- * @param Q2 Precomputed \f$ q^2 \f$
- * @param MP Precomputed \f$ L(g^{lp} \pmod{p^2})^{-1} \f$
- * @param MQ Precomputed \f$ L(g^{lq} \pmod{q^2})^{-1} \f$
- */
-void MPC_LOAD_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ);
#ifdef __cplusplus
}
diff --git a/python/amcl_mpc.py b/python/amcl_mpc.py
index 18c9156..e138cbc 100755
--- a/python/amcl_mpc.py
+++ b/python/amcl_mpc.py
@@ -87,6 +87,9 @@ extern void OCT_clear(octet *O);
extern void PAILLIER_KEY_PAIR(csprng *RNG, octet *P, octet* Q, PAILLIER_public_key *PUB, PAILLIER_private_key *PRIV);
extern void PAILLIER_PRIVATE_KEY_KILL(PAILLIER_private_key *PRIV);
+extern void PAILLIER_PK_toOctet(octet *PK, PAILLIER_public_key *PUB);
+extern void PAILLIER_PK_fromOctet(PAILLIER_public_key *PUB, octet *PK);
+
extern int ECP_SECP256K1_KEY_PAIR_GENERATE(csprng *R,octet *s,octet *W);
extern int ECP_SECP256K1_PUBLIC_KEY_VALIDATE(octet *W);
@@ -102,10 +105,7 @@ extern void MPC_HASH(int sha, octet *M, octet *HM);
extern int MPC_S(octet *HM, octet *R, octet *K, octet *SIGMA, octet *S);
extern void MPC_SUM_S(octet *S1, octet *S2, octet *S);
extern int MPC_SUM_PK(octet *PK1, octet *PK2, octet *PK);
-extern void MPC_DUMP_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2);
-extern void MPC_LOAD_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2);
-extern void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ);
-extern void MPC_LOAD_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ);
+extern void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q);
""")
@@ -292,6 +292,55 @@ def paillier_private_key_kill(paillier_sk):
return 0
+
+def paillier_pk_to_octet(paillier_pk):
+ """Write Paillier public key to byte array
+
+ Write Paillier public key to byte array
+
+ Args::
+
+ paillier_pk: Pointer to Paillier public key
+
+ Returns::
+
+ n: Paillier Modulus - n = pq
+
+ Raises:
+
+ """
+ n1, n1_val = make_octet(FS_4096)
+
+ libamcl_paillier.PAILLIER_PK_toOctet(n1, paillier_pk)
+
+ n2 = to_str(n1)
+
+ return n2
+
+def paillier_pk_from_octet(n):
+ """Read Paillier public key from byte array
+
+ Read Paillier public key from byte array
+
+ Args::
+
+ n: Paillier Modulus - n = pq
+
+ Returns::
+
+ paillier_pk: Pointer to Paillier public key
+
+ Raises:
+
+ """
+ paillier_pk = ffi.new('PAILLIER_public_key*')
+
+ n1, n1_val = make_octet(None, n)
+
+ libamcl_paillier.PAILLIER_PK_fromOctet(paillier_pk, n1)
+
+ return paillier_pk
+
def ecp_secp256k1_key_pair_generate(rng, ecdsa_sk=None):
"""Generate ECDSA key pair
@@ -685,65 +734,6 @@ def mpc_sum_pk(pk1, pk2):
return rc, pk2
-def mpc_dump_paillier_pk(paillier_pk):
- """Write Paillier public key to byte array
-
- Write Paillier public key to byte array
-
- Args::
-
- paillier_pk: Pointer to Paillier public key
-
- Returns::
-
- n: Paillier Modulus - n = pq
- g: Public Base - g = n+1
- n2: Precomputed - n^2
-
- Raises:
-
- """
- n1, n1_val = make_octet(FS_4096)
- g1, g1_val = make_octet(FS_4096)
- n21, n21_val = make_octet(FS_4096)
-
- libamcl_mpc.MPC_DUMP_PAILLIER_PK(paillier_pk, n1, g1, n21)
-
- n2 = to_str(n1)
- g2 = to_str(g1)
- n22 = to_str(n21)
-
- return n2, g2, n22
-
-def mpc_load_paillier_pk(n,g,n2):
- """Read Paillier public key from byte arrays
-
- Read Paillier public key from byte arrays
-
- Args::
-
- n: Paillier Modulus - n = pq
- g: Public Base - g = n+1
- n2: Precomputed - n^2
-
- Returns::
-
- paillier_pk: Pointer to Paillier public key
-
- Raises:
-
- """
- paillier_pk = ffi.new('PAILLIER_public_key*')
-
- n1, n1_val = make_octet(None, n)
- g1, g1_val = make_octet(None, g)
- n21, n21_val = make_octet(None, n2)
-
-
- libamcl_mpc.MPC_LOAD_PAILLIER_PK(paillier_pk, n1, g1, n21)
-
- return paillier_pk
-
def mpc_dump_paillier_sk(paillier_sk):
"""Write Paillier public key to byte array
@@ -757,14 +747,6 @@ def mpc_dump_paillier_sk(paillier_sk):
p: Secret prime number
q: Secret prime number
- lp: Private Key modulo \f$ p \f$ (Euler totient of \f$ p \f$)
- lq: Private Key modulo \f$ q \f$ (Euler totient of \f$ q \f$)
- invp: Precomputed \f$ p^{-1} \pmod{2^m} \f$
- invq: Precomputed \f$ q^{-1} \pmod{2^m} \f$
- p2: Precomputed \f$ p^2 \f$
- q2: Precomputed \f$ q^2 \f$
- mp: Precomputed \f$ L(g^{lp} \pmod{p^2})^{-1} \f$
- mq: Precomputed \f$ L(g^{lq} \pmod{q^2})^{-1} \f$
Raises:
@@ -772,79 +754,9 @@ def mpc_dump_paillier_sk(paillier_sk):
p, p_val = make_octet(HFS_2048)
q, q_val = make_octet(HFS_2048)
- lp, lp_val = make_octet(HFS_2048)
- lq, lq_val = make_octet(HFS_2048)
-
- invp, invp_val = make_octet(FS_2048)
- invq, invq_val = make_octet(FS_2048)
-
- pp2, pp2_val = make_octet(FS_2048)
- qq2, qq2_val = make_octet(FS_2048)
-
- mp, mp_val = make_octet(HFS_2048)
- mq, mq_val = make_octet(HFS_2048)
-
- libamcl_mpc.MPC_DUMP_PAILLIER_SK(paillier_sk, p, q, lp, lq, invp, invq, pp2, qq2, mp, mq)
+ libamcl_mpc.MPC_DUMP_PAILLIER_SK(paillier_sk, p, q)
p2 = to_str(p)
q2 = to_str(q)
- lp2 = to_str(lp)
- lq2 = to_str(lq)
-
- invp2 = to_str(invp)
- invq2 = to_str(invq)
-
- p22 = to_str(pp2)
- q22 = to_str(qq2)
-
- mp2 = to_str(mp)
- mq2 = to_str(mq)
-
- return p2, q2, lp2, lq2, invp2, invq2, p22, q22, mp2, mq2
-
-def mpc_load_paillier_sk(p, q, lp, lq, invp, invq, p2, q2, mp, mq):
- """Read Paillier secret key from byte arrays
-
- Read Paillier secret key from byte arrays
-
- Args::
-
- p: Secret prime number
- q: Secret prime number
- lp: Private Key modulo \f$ p \f$ (Euler totient of \f$ p \f$)
- lq: Private Key modulo \f$ q \f$ (Euler totient of \f$ q \f$)
- invp: Precomputed \f$ p^{-1} \pmod{2^m} \f$
- invq: Precomputed \f$ q^{-1} \pmod{2^m} \f$
- p2: Precomputed \f$ p^2 \f$
- q2: Precomputed \f$ q^2 \f$
- mp: Precomputed \f$ L(g^{lp} \pmod{p^2})^{-1} \f$
- mq: Precomputed \f$ L(g^{lq} \pmod{q^2})^{-1} \f$
-
- Returns::
-
- paillier_sk: Pointer to Paillier secret key
-
- Raises:
-
- """
- paillier_sk = ffi.new('PAILLIER_private_key*')
-
- p1, p1_val = make_octet(None, p)
- q1, q1_val = make_octet(None, q)
-
- lp1, lp1_val = make_octet(None, lp)
- lq1, lq1_val = make_octet(None, lq)
-
- invp1, invp1_val = make_octet(None, invp)
- invq1, invq1_val = make_octet(None, invq)
-
- p21, p21_val = make_octet(None, p2)
- q21, q21_val = make_octet(None, q2)
-
- mp1, mp1_val = make_octet(None, mp)
- mq1, mq1_val = make_octet(None, mq)
-
- libamcl_mpc.MPC_LOAD_PAILLIER_SK(paillier_sk, p1, q1, lp1, lq1, invp1, invq1, p21, q21, mp1, mq1)
-
- return paillier_sk
+ return p2, q2
diff --git a/python/example_dump_keys.py b/python/example_dump_keys.py
index adbd008..71bff57 100755
--- a/python/example_dump_keys.py
+++ b/python/example_dump_keys.py
@@ -67,28 +67,17 @@ if __name__ == "__main__":
# Dump and load Paillier public key
- n, g, n2 = amcl_mpc.mpc_dump_paillier_pk(paillier_pk1)
+ n = amcl_mpc.paillier_pk_to_octet(paillier_pk1)
print(f"paillier_pk1.n {n.hex()}")
- print(f"paillier_pk1.g {g.hex()}")
- print(f"paillier_pk1.n2 {n2.hex()}")
- paillier_pk2 = amcl_mpc.mpc_load_paillier_pk(n,g,n2)
+ paillier_pk2 = amcl_mpc.paillier_pk_from_octet(n)
# Dump and load Paillier secret key
- p, q, lp, lq, invp, invq, p2, q2, mp, mq = amcl_mpc.mpc_dump_paillier_sk(paillier_sk1)
+ p, q = amcl_mpc.mpc_dump_paillier_sk(paillier_sk1)
print(f"paillier_sk1.p {p.hex()}")
print(f"paillier_sk1.q {q.hex()}")
- print(f"paillier_sk1.lp {lp.hex()}")
- print(f"paillier_sk1.lq {lq.hex()}")
- print(f"paillier_sk1.invp {invp.hex()}")
- print(f"paillier_sk1.invq {invq.hex()}")
- print(f"paillier_sk1.p2 {p2.hex()}")
- print(f"paillier_sk1.q2 {q2.hex()}")
- print(f"paillier_sk1.mp {mp.hex()}")
- print(f"paillier_sk1.mq {mq.hex()}")
-
- paillier_sk2 = amcl_mpc.mpc_load_paillier_sk(p, q, lp, lq, invp, invq, p2, q2, mp, mq)
+ paillier_pk3, paillier_sk2 = amcl_mpc.paillier_key_pair(rng, p, q)
ca = amcl_mpc.mpc_mta_client1(rng, paillier_pk2, a, r)
diff --git a/scripts/buildAMCL.sh b/scripts/buildAMCL.sh
index c6c7022..daff656 100755
--- a/scripts/buildAMCL.sh
+++ b/scripts/buildAMCL.sh
@@ -13,9 +13,10 @@ CURRENTDIR=${PWD}
git clone https://github.com/apache/incubator-milagro-crypto-c.git
cd incubator-milagro-crypto-c
+git checkout 86c33c63d34fd3b9024a5e5c32934d4103805b9c
mkdir build
cd build
-cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=ON -D AMCL_CHUNK=64 -D AMCL_CURVE="BLS381,SECP256K1" -D AMCL_RSA="" -D BUILD_PAILLIER=ON -D BUILD_PYTHON=ON -D BUILD_BLS=ON -D BUILD_WCC=OFF -D BUILD_MPIN=ON -D BUILD_X509=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
+cmake -D CMAKE_BUILD_TYPE=Debug -D BUILD_SHARED_LIBS=ON -D AMCL_CHUNK=64 -D AMCL_CURVE="BLS381,SECP256K1" -D AMCL_RSA="" -D BUILD_PAILLIER=ON -D BUILD_PYTHON=ON -D BUILD_BLS=ON -D BUILD_WCC=OFF -D BUILD_MPIN=ON -D BUILD_X509=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
make test
sudo make install
diff --git a/src/mpc.c b/src/mpc.c
index d8729a9..b41039d 100644
--- a/src/mpc.c
+++ b/src/mpc.c
@@ -489,56 +489,10 @@ int MPC_PHASE5_verify(octet *U[2], octet *T[2])
return MPC_OK;
}
-// Write Paillier public key to octets
-void MPC_DUMP_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2)
-{
- FF_4096_toOctet(N, PUB->n, FFLEN_4096);
- FF_4096_toOctet(G, PUB->g, FFLEN_4096);
- FF_4096_toOctet(N2, PUB->n2, FFLEN_4096);
-}
-
-// Load Paillier public key from octets
-void MPC_LOAD_PAILLIER_PK(PAILLIER_public_key *PUB, octet *N, octet *G, octet *N2)
-{
- FF_4096_fromOctet(PUB->n, N, FFLEN_4096);
- FF_4096_fromOctet(PUB->g, G, FFLEN_4096);
- FF_4096_fromOctet(PUB->n2, N2, FFLEN_4096);
-}
-
-// Write Paillier secret key to octets
-void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ)
+// Write Paillier keys to octets
+void MPC_DUMP_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q)
{
FF_2048_toOctet(P, PRIV->p, HFLEN_2048);
FF_2048_toOctet(Q, PRIV->q, HFLEN_2048);
-
- FF_2048_toOctet(LP, PRIV->lp, HFLEN_2048);
- FF_2048_toOctet(LQ, PRIV->lq, HFLEN_2048);
-
- FF_2048_toOctet(INVP, PRIV->invp, FFLEN_2048);
- FF_2048_toOctet(INVQ, PRIV->invq, FFLEN_2048);
-
- FF_2048_toOctet(P2, PRIV->p2, FFLEN_2048);
- FF_2048_toOctet(Q2, PRIV->q2, FFLEN_2048);
-
- FF_2048_toOctet(MP, PRIV->mp, HFLEN_2048);
- FF_2048_toOctet(MQ, PRIV->mq, HFLEN_2048);
}
-// Load Paillier secret key from octets
-void MPC_LOAD_PAILLIER_SK(PAILLIER_private_key *PRIV, octet *P, octet *Q, octet *LP, octet *LQ, octet *INVP, octet *INVQ, octet *P2, octet *Q2, octet *MP, octet *MQ)
-{
- FF_2048_fromOctet(PRIV->p, P, HFLEN_2048);
- FF_2048_fromOctet(PRIV->q, Q, HFLEN_2048);
-
- FF_2048_fromOctet(PRIV->lp, LP, HFLEN_2048);
- FF_2048_fromOctet(PRIV->lq, LQ, HFLEN_2048);
-
- FF_2048_fromOctet(PRIV->invp, INVP, FFLEN_2048);
- FF_2048_fromOctet(PRIV->invq, INVQ, FFLEN_2048);
-
- FF_2048_fromOctet(PRIV->p2, P2, FFLEN_2048);
- FF_2048_fromOctet(PRIV->q2, Q2, FFLEN_2048);
-
- FF_2048_fromOctet(PRIV->mp, MP, HFLEN_2048);
- FF_2048_fromOctet(PRIV->mq, MQ, HFLEN_2048);
-}
diff --git a/test/smoke/test_dump_keys_smoke.c b/test/smoke/test_dump_keys_smoke.c
index 73642d4..751941d 100644
--- a/test/smoke/test_dump_keys_smoke.c
+++ b/test/smoke/test_dump_keys_smoke.c
@@ -52,7 +52,8 @@ int main()
PAILLIER_public_key PUB1;
PAILLIER_private_key PRIV2;
PAILLIER_public_key PUB2;
-
+ PAILLIER_public_key PUB3;
+
char p[FS_2048] = {0};
octet P = {0,sizeof(p),p};
@@ -98,10 +99,6 @@ int main()
// Paillier public key
char n[FS_4096] = {0};
octet N = {0,sizeof(n),n};
- char g[FS_4096] = {0};
- octet G = {0,sizeof(g),g};
- char n2[FS_4096] = {0};
- octet N2 = {0,sizeof(n2),n2};
// Paillier private key
char pp[HFS_2048] = {0};
@@ -109,26 +106,6 @@ int main()
char qq[HFS_2048] = {0};
octet QQ = {0,sizeof(qq),qq};
- char lp[HFS_2048] = {0};
- octet LP = {0,sizeof(lp),lp};
- char lq[HFS_2048] = {0};
- octet LQ = {0,sizeof(lq),lq};
-
- char invp[FS_2048] = {0};
- octet INVP = {0,sizeof(invp),invp};
- char invq[FS_2048] = {0};
- octet INVQ = {0,sizeof(invq),invq};
-
- char p2[FS_2048] = {0};
- octet P2 = {0,sizeof(p2),p2};
- char q2[FS_2048] = {0};
- octet Q2 = {0,sizeof(q2),q2};
-
- char mp[HFS_2048] = {0};
- octet MP = {0,sizeof(mp),mp};
- char mq[HFS_2048] = {0};
- octet MQ = {0,sizeof(mq),mq};
-
// Load values
OCT_fromHex(&P,P_hex);
printf("P: ");
@@ -173,17 +150,39 @@ int main()
// Paillier key pair
PAILLIER_KEY_PAIR(NULL, &P, &Q, &PUB1, &PRIV1);
- // Write public key to octets
- MPC_DUMP_PAILLIER_PK(&PUB1, &N, &G, &N2);
+ // Write public key to octet
+ PAILLIER_PK_toOctet(&N, &PUB1);
- // Read public key from octets
- MPC_LOAD_PAILLIER_PK(&PUB2, &N, &G, &N2);
+ // Read public key from octet
+ PAILLIER_PK_fromOctet(&PUB2, &N);
// Write secret key to octets
- MPC_DUMP_PAILLIER_SK(&PRIV1, &PP, &QQ, &LP, &LQ, &INVP, &INVQ, &P2, &Q2, &MP, &MQ);
+ MPC_DUMP_PAILLIER_SK(&PRIV1, &PP, &QQ);
+
+ printf("PP: ");
+ OCT_output(&PP);
+ printf("\n");
+
+ rc = OCT_comp(&P,&PP);
+ if(!rc)
+ {
+ fprintf(stderr, "FAILURE PP != P rc: %d\n", rc);
+ exit(EXIT_FAILURE);
+ }
+
+ printf("QQ: ");
+ OCT_output(&QQ);
+ printf("\n");
+ rc = OCT_comp(&Q,&QQ);
+ if(!rc)
+ {
+ fprintf(stderr, "FAILURE QQ != Q rc: %d\n", rc);
+ exit(EXIT_FAILURE);
+ }
+
// Read secret key from octets
- MPC_LOAD_PAILLIER_SK(&PRIV2, &PP, &QQ, &LP, &LQ, &INVP, &INVQ, &P2, &Q2, &MP, &MQ);
+ PAILLIER_KEY_PAIR(NULL, &PP, &QQ, &PUB3, &PRIV2);
MPC_MTA_CLIENT1(NULL, &PUB2, &A, &CA, &R);
diff --git a/vagrant/README.md b/vagrant/README.md
index aa27d3b..4a38937 100755
--- a/vagrant/README.md
+++ b/vagrant/README.md
@@ -35,7 +35,7 @@ git clone git@github.com:apache/incubator-milagro-MPC.git
in this directory and then on the VM
```
-mv /vagarnt/libmpc $HOME
+mv /vagarnt/incubator-milagro-MPC $HOME
```
## Commands
diff --git a/vagrant/bootstrap.sh b/vagrant/bootstrap.sh
index 41bd3a2..2002f4a 100755
--- a/vagrant/bootstrap.sh
+++ b/vagrant/bootstrap.sh
@@ -5,14 +5,18 @@ sudo apt-get update
sudo apt-get install -y build-essential cmake doxygen lcov python3-dev python3-pip wget git emacs
sudo apt-get clean
-echo "install docker"
-curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common docker-ce -y
-sudo apt-get update && sudo apt-get install docker-ce -y
-sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-sudo chmod +x /usr/local/bin/docker-compose
-sudo usermod -aG docker vagrant
+## docker
+sudo groupadd docker
+sudo usermod -aG docker $USER
+groups $USER
+sudo snap install docker
+# You will also need to re-enter the session for the group update to take place
+# su - $USER
+# Above command will not work as do not know password. Instead do these commands.
+# vagrant halt
+# vagrant up
+
+#docker info
# install AMCL
git clone https://github.com/apache/incubator-milagro-crypto-c.git
@@ -24,3 +28,12 @@ make
make test
sudo make install
+# intall libmpc
+git clone https://github.com/apache/incubator-milagro-MPC.git
+cd incubator-milagro-MPC
+mkdir build
+cd build
+cmake -D CMAKE_INSTALL_PREFIX=/usr/local ..
+make
+make test
+sudo make install