From d0f2866be282bcf8005ad30decae007f912440fd Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 19:47:27 +0200 Subject: [PATCH 01/22] Update build instructions; Make nicer code look --- README.md | 128 ++++++++---------------------------------------------- 1 file changed, 19 insertions(+), 109 deletions(-) diff --git a/README.md b/README.md index 161f2ca..96e164d 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,3 @@ -Quick Action -============ - -To get started quickly, do the following: - -1: Install Ubuntu 12.04 32 bit on a clean box, just to have a common ground (it should come with the default installation but make sure that gcc is installed) - -2: Download libScarab-1.0.0.zip, gmp-5.1.1.tar.lz, flint-1.6.tgz, mpir-2.6.0.tar.bz2, mpfr-3.1.1.tar.bz2 from hcrypt.com and the linked web pages - -3: Install m4 and lzip - -3.1. sudo apt-get install m4 - -3.2. sudo apt-get install lzip - -4: Install gmp - -4.1. lzip -d gmp-5.1.1.tar.lz - -4.2. tar xf gmp-5.1.1.tar - -4.3. cd gmp-5.1.1 - -4.4. ./configure - -4.5. make - -4.6. make check #(never ever skip the checks!) - -4.7. sudo make install - -5: Install mpfr - -5.1. tar xjf mpfr-3.1.1.tar.bz2 - -5.2. cd mpfr-3.1.1 - -5.3. make - -5.4. make check - -5.5. sudo make install - -6: Install mpir - -6.1. tar xjf mpir-2.6.0.tar.bz2 - -6.2. cd mpir-2.6.0 - -6.3. ./configure - -6.4. make - -6.5. make check - -6.6. sudo make install - -7: Install flint (ok, this is perhaps quite a bit strange) - -7.1. tar xf flint-1.6.tgz - -7.2. cd flint-1.6 - -7.3. source flint_env - -7.4. make library - -7.5. sudo cp libflint.so /usr/local/lib - -7.6. sudo cp *.h /usr/local/include - -7.7. sudo mkdir -p /usr/local/include/zn_poly/src - -7.8. sudo cp zn_poly/include/*.h /usr/local/include/zn_poly/src/ - -8: Run libscarab test - -8.1. mkdir libscarab - -8.2. cd libscarab - -8.3. unzip ../libScarab-1.0.0.zip - -8.4. make - -8.5. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib - -8.6. ./integer-fhe - -ta-daaa! - Introduction ============ @@ -99,24 +8,23 @@ The library presented here is beta software and should not be used for any missi Installation and usage ====================== -Requirements ------------- - -The following libraries are required for building hcrypt: +Prerequisites +------------- - GMP: GNU Multiple Precision Arithmetic Library — http://gmplib.org/ - FLINT: Fast Library for Number Theory version 1.6 — http://flintlib.org/flint-1.6.tgz - MPIR: Multiple Precision Integers and Rationals — http://mpir.org/ (required by FLINT) - MPFR — http://www.mpfr.org/ (required by FLINT) +For Debian-based systems: -The library expects the flint headers under in your include directory. Also, copy zn_poly/include/*.h to ./zn_poly/src/ relative to your include path. +``` +sudo apt-get install build-essential m4 lzip unzip +``` Building -------- The compilation is done using make. +``` $ make +``` This builds an integer-fhe executeable in the current directory that runs a test of the library. Usage @@ -124,14 +32,16 @@ Usage You can use the library as demonstrated in test.c. The following methods are exposed: function prototype meaning -fhe_keygen(fhe_pk_t pk, fhe_sk_t sk); Generate a keypair -fhe_encrypt(mpz_t c, fhe_pk_t pk, int m); Encrypt a message (0 or 1) -fhe_decrypt(mpz_t c, fhe_sk_t sk); Decrypt a cyphertext -fhe_recrypt(mpz_t c, fhe_pk_t pk, fhe_sk_t sk); Recrypt a cyphertext (“refreshing” it) -fhe_add(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); Add cyphertexts (= XOR) -fhe_mul(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); Multiply cyphertexts (= AND) -fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); Add with carry in and carry out -fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); Add with carry out +``` +fhe_keygen(fhe_pk_t pk, fhe_sk_t sk); // Generate a keypair +fhe_encrypt(mpz_t c, fhe_pk_t pk, int m); // Encrypt a message (0 or 1) +fhe_decrypt(mpz_t c, fhe_sk_t sk); // Decrypt a cyphertext +fhe_recrypt(mpz_t c, fhe_pk_t pk, fhe_sk_t sk); // Recrypt a cyphertext (“refreshing” it) +fhe_add(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Add cyphertexts (= XOR) +fhe_mul(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Multiply cyphertexts (= AND) +fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); // Add with carry in and carry out +fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with carry out +``` References ========== @@ -147,7 +57,7 @@ License The source code is published under a MIT license: -Copyright © 2011 +Copyright © 2011, 2014 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From 5fa80b11ba837890887330be3ee79bf2e930ea52 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 19:47:37 +0200 Subject: [PATCH 02/22] Add gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da63913 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/* + From 87f123d8e0a131758f673322627756d63076e9d3 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 19:49:02 +0200 Subject: [PATCH 03/22] Rename source folder to src --- libScarab1.0.0/Makefile | 15 --------------- {libScarab1.0.0 => src}/VERSION | 0 {libScarab1.0.0 => src}/integer-fhe.c | 0 {libScarab1.0.0 => src}/integer-fhe.h | 0 {libScarab1.0.0 => src}/integer-fhe.nb | 0 {libScarab1.0.0 => src}/integer-fhe.o | Bin {libScarab1.0.0 => src}/main.c | 0 {libScarab1.0.0 => src}/main.o | Bin {libScarab1.0.0 => src}/parameters.h | 0 {libScarab1.0.0 => src}/test.c | 0 {libScarab1.0.0 => src}/test.h | 0 {libScarab1.0.0 => src}/test.o | Bin {libScarab1.0.0 => src}/types.c | 0 {libScarab1.0.0 => src}/types.h | 0 {libScarab1.0.0 => src}/types.o | Bin {libScarab1.0.0 => src}/util.c | 0 {libScarab1.0.0 => src}/util.h | 0 {libScarab1.0.0 => src}/util.o | Bin 18 files changed, 15 deletions(-) delete mode 100644 libScarab1.0.0/Makefile rename {libScarab1.0.0 => src}/VERSION (100%) rename {libScarab1.0.0 => src}/integer-fhe.c (100%) rename {libScarab1.0.0 => src}/integer-fhe.h (100%) rename {libScarab1.0.0 => src}/integer-fhe.nb (100%) rename {libScarab1.0.0 => src}/integer-fhe.o (100%) rename {libScarab1.0.0 => src}/main.c (100%) rename {libScarab1.0.0 => src}/main.o (100%) rename {libScarab1.0.0 => src}/parameters.h (100%) rename {libScarab1.0.0 => src}/test.c (100%) rename {libScarab1.0.0 => src}/test.h (100%) rename {libScarab1.0.0 => src}/test.o (100%) rename {libScarab1.0.0 => src}/types.c (100%) rename {libScarab1.0.0 => src}/types.h (100%) rename {libScarab1.0.0 => src}/types.o (100%) rename {libScarab1.0.0 => src}/util.c (100%) rename {libScarab1.0.0 => src}/util.h (100%) rename {libScarab1.0.0 => src}/util.o (100%) diff --git a/libScarab1.0.0/Makefile b/libScarab1.0.0/Makefile deleted file mode 100644 index 1832ff7..0000000 --- a/libScarab1.0.0/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -CC = gcc -CFLAGS = -Wall -g3 -ggdb -std=c99 -I/usr/local/include -I/usr/local/include/libflint -L/usr/local/lib -LDFLAGS += -lgmp -lflint -SOURCE = $(shell find * -name '*.c') -OBJECTS = $(SOURCE:.c=.o) -.PHONY: clean - -all: integer-fhe - -integer-fhe: $(OBJECTS) - $(CC) -o integer-fhe $^ $(LDFLAGS) - -clean: - rm -f $(OBJECTS) integer-fhe - diff --git a/libScarab1.0.0/VERSION b/src/VERSION similarity index 100% rename from libScarab1.0.0/VERSION rename to src/VERSION diff --git a/libScarab1.0.0/integer-fhe.c b/src/integer-fhe.c similarity index 100% rename from libScarab1.0.0/integer-fhe.c rename to src/integer-fhe.c diff --git a/libScarab1.0.0/integer-fhe.h b/src/integer-fhe.h similarity index 100% rename from libScarab1.0.0/integer-fhe.h rename to src/integer-fhe.h diff --git a/libScarab1.0.0/integer-fhe.nb b/src/integer-fhe.nb similarity index 100% rename from libScarab1.0.0/integer-fhe.nb rename to src/integer-fhe.nb diff --git a/libScarab1.0.0/integer-fhe.o b/src/integer-fhe.o similarity index 100% rename from libScarab1.0.0/integer-fhe.o rename to src/integer-fhe.o diff --git a/libScarab1.0.0/main.c b/src/main.c similarity index 100% rename from libScarab1.0.0/main.c rename to src/main.c diff --git a/libScarab1.0.0/main.o b/src/main.o similarity index 100% rename from libScarab1.0.0/main.o rename to src/main.o diff --git a/libScarab1.0.0/parameters.h b/src/parameters.h similarity index 100% rename from libScarab1.0.0/parameters.h rename to src/parameters.h diff --git a/libScarab1.0.0/test.c b/src/test.c similarity index 100% rename from libScarab1.0.0/test.c rename to src/test.c diff --git a/libScarab1.0.0/test.h b/src/test.h similarity index 100% rename from libScarab1.0.0/test.h rename to src/test.h diff --git a/libScarab1.0.0/test.o b/src/test.o similarity index 100% rename from libScarab1.0.0/test.o rename to src/test.o diff --git a/libScarab1.0.0/types.c b/src/types.c similarity index 100% rename from libScarab1.0.0/types.c rename to src/types.c diff --git a/libScarab1.0.0/types.h b/src/types.h similarity index 100% rename from libScarab1.0.0/types.h rename to src/types.h diff --git a/libScarab1.0.0/types.o b/src/types.o similarity index 100% rename from libScarab1.0.0/types.o rename to src/types.o diff --git a/libScarab1.0.0/util.c b/src/util.c similarity index 100% rename from libScarab1.0.0/util.c rename to src/util.c diff --git a/libScarab1.0.0/util.h b/src/util.h similarity index 100% rename from libScarab1.0.0/util.h rename to src/util.h diff --git a/libScarab1.0.0/util.o b/src/util.o similarity index 100% rename from libScarab1.0.0/util.o rename to src/util.o From 767f606063443fd991f78334da308b431f2f0757 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 20:08:27 +0200 Subject: [PATCH 04/22] Add setup script --- etc/setup.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 etc/setup.sh diff --git a/etc/setup.sh b/etc/setup.sh new file mode 100755 index 0000000..6fd914d --- /dev/null +++ b/etc/setup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# +# Download and build dependencies +# + +mkdir -p lib +cd lib + +# Download libs + +wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz +wget http://www.flintlib.org/flint-1.6.tgz +wget http://www.mpir.org/mpir-2.6.0.tar.bz2 +wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 + +# Install GMP + +lzip -d gmp-6.0.0a.tar.lz +tar xf gmp-6.0.0a.tar + +cd gmp-6.0.0 +./configure +make +make check +sudo make install +cd .. + +# Install mpfr + +tar xjf mpfr-3.1.1.tar.bz2 +cd mpfr-3.1.1 +make +make check +sudo make install +cd .. + +# Install mpir + +tar xjf mpir-2.6.0.tar.bz2 +cd mpir-2.6.0 +./configure +make +make check +sudo make install +cd .. + +# Install flint (ok, this is perhaps quite a bit strange) + +tar xzf flint-1.6.tgz +cd flint-1.6 +. flint_env +make library +sudo cp libflint.so /usr/local/lib +sudo cp *.h /usr/local/include +sudo mkdir -p /usr/local/include/zn_poly/src +sudo cp zn_poly/include/*.h /usr/local/include/zn_poly/src/ +cd .. + From c0115e437d42ff0a7ded71a0a08bc314b86ee0ae Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 20:08:48 +0200 Subject: [PATCH 05/22] Update gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index da63913..597acff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ build/* - +lib/* From 314190c599ad7bedf133b78361daa67433347240 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 21:37:06 +0200 Subject: [PATCH 06/22] Attempt at Makefile --- Makefile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2740628 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +CC = gcc + +SETUP = etc/setup.sh + +SRCDIR = src +BINDIR = bin +TARGET = $(BINDIR)/integer-fhe + +CFLAGS = -Wall -g3 -ggdb -std=c99 -I/usr/local/include -I/usr/local/include/libflint -L/usr/local/lib +LDFLAGS += -lgmp -lflint +SOURCES = $(shell find $(SRCDIR) -name '*.c') +OBJECTS = $(SOURCES:.c=.o) +.PHONY: clean + +all: $(TARGET) + +$(TARGET): $(OBJECTS) + chmod +x $(SETUP) + ./$(SETUP) + mkdir -p $(BINDIR) + $(CC) -o $(TARGET) $(SOURCES) $(CFLAGS) $(LDFLAGS) + +clean: + rm -f $(OBJECTS) integer-fhe + rm -r lib/* From 36afdf9c5c87493035c8b7f116f07271608c49e2 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 29 Jul 2014 21:37:28 +0200 Subject: [PATCH 07/22] Update gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 597acff..ccd805c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ build/* lib/* +bin/* + +*.o +*.a +*.so From 4a11795d60d4215a5aee919870a059fd00222740 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 30 Jul 2014 17:32:31 +0200 Subject: [PATCH 08/22] Update setup.sh not to download packages if they are present --- etc/setup.sh | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/etc/setup.sh b/etc/setup.sh index 6fd914d..dd30a24 100755 --- a/etc/setup.sh +++ b/etc/setup.sh @@ -9,15 +9,28 @@ cd lib # Download libs -wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz -wget http://www.flintlib.org/flint-1.6.tgz -wget http://www.mpir.org/mpir-2.6.0.tar.bz2 -wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 +if [ ! -f "gmp-6.0.0a.tar.lz" ]; then + wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz +fi + +if [ ! -f "flint-1.6.tgz" ]; then + wget http://www.flintlib.org/flint-1.6.tgz +fi + +if [ ! -f "mpir-2.6.0.tar.bz2" ]; then + wget http://www.mpir.org/mpir-2.6.0.tar.bz2 +fi + +if [ ! -f "mpfr-3.1.1.tar.bz2"]; then + wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 +fi # Install GMP -lzip -d gmp-6.0.0a.tar.lz -tar xf gmp-6.0.0a.tar +if [! -d "gmp-6.0.0"]; then + lzip -d gmp-6.0.0a.tar.lz + tar xf gmp-6.0.0a.tar +fi cd gmp-6.0.0 ./configure @@ -28,7 +41,10 @@ cd .. # Install mpfr -tar xjf mpfr-3.1.1.tar.bz2 +if [! -d "mpfr-3.1.1"]; then + tar xjf mpfr-3.1.1.tar.bz2 +fi + cd mpfr-3.1.1 make make check @@ -37,7 +53,10 @@ cd .. # Install mpir -tar xjf mpir-2.6.0.tar.bz2 +if [! -d "mpir-2.6.0"]; then + tar xjf mpir-2.6.0.tar.bz2 +fi + cd mpir-2.6.0 ./configure make @@ -47,7 +66,10 @@ cd .. # Install flint (ok, this is perhaps quite a bit strange) -tar xzf flint-1.6.tgz +if [! -d "flint-1.6"]; then + tar xzf flint-1.6.tgz +fi + cd flint-1.6 . flint_env make library From c71afe9d95622257b9ce1a9dc5ecf0e1609af2a0 Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 20:30:19 +0200 Subject: [PATCH 09/22] Work on Makefile and README * rename shell script * elaborate on installation in README, added Arch Linux --- Makefile | 12 +++-- README.md | 51 +++++++++++-------- .../install-dependencies.sh | 0 3 files changed, 36 insertions(+), 27 deletions(-) rename etc/setup.sh => scripts/install-dependencies.sh (100%) diff --git a/Makefile b/Makefile index 2740628..562dac7 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ CC = gcc -SETUP = etc/setup.sh - SRCDIR = src BINDIR = bin +BUILDDIR = build TARGET = $(BINDIR)/integer-fhe +LIBRARY = $(BUILDDIR)/libscarab.so CFLAGS = -Wall -g3 -ggdb -std=c99 -I/usr/local/include -I/usr/local/include/libflint -L/usr/local/lib LDFLAGS += -lgmp -lflint @@ -12,14 +12,16 @@ SOURCES = $(shell find $(SRCDIR) -name '*.c') OBJECTS = $(SOURCES:.c=.o) .PHONY: clean -all: $(TARGET) +all: $(TARGET) $(LIBRARY) $(TARGET): $(OBJECTS) - chmod +x $(SETUP) - ./$(SETUP) mkdir -p $(BINDIR) $(CC) -o $(TARGET) $(SOURCES) $(CFLAGS) $(LDFLAGS) clean: rm -f $(OBJECTS) integer-fhe rm -r lib/* + rm -r $(LIBRARY) + +$(LIBRARY): + $(CC) -fPIC -shared -o $(LIBRARY) $(SOURCES) $(CFLAGS) $(LDFLAGS) diff --git a/README.md b/README.md index 96e164d..bd3dc4a 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,44 @@ -Introduction -============ +# Introduction This is an implementation of a fully homomorphic encryption scheme using large integers. The mathematical foundation is based on work by C. Gentry [1] for the initial concept as well as N. Smart and F. Vercauteren [2] for the integer-based approach used in this implementation. The library presented here is beta software and should not be used for any mission critical applications. No warranty expressed or implied is given. -Installation and usage -====================== +# Installation and usage -Prerequisites -------------- +## Prerequisites -For Debian-based systems: +* GMP https://gmplib.org Version 6.0.0 https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz +* MPFR http://www.mpfr.org Version 3.1.1 https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 +* MPIR http://www.mpir.org Version 2.6.0 http://www.mpir.org/mpir-2.6.0.tar.bz2 +* Flint http://www.flintlib.org Version 1.6 http://www.flintlib.org/flint-1.6.tgz -``` -sudo apt-get install build-essential m4 lzip unzip -``` +### For Debian-based systems + + sudo apt-get install build-essential m4 lzip unzip + +And then use scripts/install-dependencies.sh to install the dependencies. + +### For Arch Linux + +Install base-devel m4 unzip gmp mpfr from official repositories. -Building --------- +Install mpir from AUR. Install version 2.6.0 and pay attention to the comment made by Fincer on 2014-06-20 18:32. + +Install flint manually. See the bottom part of scripts/install-dependencies.sh and create /etc/ld.so.conf.d/flint.conf with content /usr/local/lib/flint + + +## Building The compilation is done using make. -``` -$ make -``` + $ make + +This builds an integer-fhe executeable in the current directory that runs a test of the library. -This builds an integer-fhe executeable in the current directory that runs a test of the library. -Usage +## Usage -You can use the library as demonstrated in test.c. The following methods are exposed: +You can use the library as demonstrated in test.c. The following methods are exposed: function prototype meaning ``` @@ -43,8 +52,7 @@ fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with carry out ``` -References -========== +# References [1] C. Gentry, A fully homomorphic encryption scheme @@ -52,8 +60,7 @@ References [3] H. Perl, M. Brenner and M. Smith, POSTER: An Implementation of the Fully Homomorphic Smart-Vercauteren Crypto-System -License -======= +# License The source code is published under a MIT license: diff --git a/etc/setup.sh b/scripts/install-dependencies.sh similarity index 100% rename from etc/setup.sh rename to scripts/install-dependencies.sh From 0a826d55ee2ffbbb274680f7e7f9b81d07fd028f Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 20:41:29 +0200 Subject: [PATCH 10/22] remove *.o files --- src/integer-fhe.o | Bin 34948 -> 0 bytes src/main.o | Bin 3376 -> 0 bytes src/test.o | Bin 21884 -> 0 bytes src/types.o | Bin 8728 -> 0 bytes src/util.o | Bin 18936 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/integer-fhe.o delete mode 100644 src/main.o delete mode 100644 src/test.o delete mode 100644 src/types.o delete mode 100644 src/util.o diff --git a/src/integer-fhe.o b/src/integer-fhe.o deleted file mode 100644 index b838829d0960a373619bd43f8a958f01ae2bc41d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34948 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 HD&y>59W=>m diff --git a/src/test.o b/src/test.o deleted file mode 100644 index a267de5217d9348950267fa0cdd5491564697d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21884 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 bskYG6TWBgSJlP4_FQ}CU^nX)W;5h#c&|Ft7 diff --git a/src/types.o b/src/types.o deleted file mode 100644 index 2ef5104ef1ae2279bce97ca797ba54e527dce82e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8728 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 diff --git a/src/util.o b/src/util.o deleted file mode 100644 index d9807e80995c554003565eeb8f77c2dab838f4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18936 zcmb_k3w)HtwV&BXvXHRZK)`^g;UPjH51xYcL6E?vKd9786s@{!l7*~plD*ko#22Cn zvW@8_z1mAvEY;ge)fQ}TTk554KrGZJdRt0w)mpEuSg_Jxtxdh$djDtU%(t^&9#Grw zNAf>s=FB-~&YYQVzWKiJ(ueQ?0Wna?s0 zoq~Qs+%6JH$JVBq0YoCp>sBn!@rL?Ev8G6$59G92LM)^rpIA>|u1KUg)|goxS=AA3 zjiE3SS$Jjb<%>+Uc$M`OQ-^RpFU9q~5uVzG!1(M{G@Beb=9@MW3Uf`qiT7vXX z%ICrLtFJZMq`K_x@5j}bXm3)6|55sqnZ`DZaB3iZ_1vq|?JxADZ%X#nw{ED&3(Z-2QE0eWv-!)6~bq+h=?~hQ4SzYOJgLt6g53<4;3hP8d`q(wItF zCFpOSzLh-hD=Zm%+2AyHY9oRu0we>-^oQv8Vg_jy84Y8MI7;wV$?^?Hzq zx6yLYCw_BzK8y|MR)J|6e|mus|E9@)$2ZMa{F}?16CBDMiTvEwN#L4H;TbN?i7mS?Id07v6-k4M)S- zrEkD+u4PwUkK@EHWA149`zDLRQx3xRuJBVP#@exPcApYHP`8I9-`Rp+@E*FgpPd<) z`Z>C}Bb@y)`U6M4j7}dheaf{Ymviny=?V1WNSGQ@XX-=Yc?Z|r;F!+V zy>aY(%^}1}qCEVRGd}X=aA)R?aLLXW!v}l^;g22%i6O>t(2#U4Jpqj!dz7Wzz_Pt; zZAdGJR3{|}GVDd|w92Ygu6znP`Kui#kISKd-3Uibo{G@5PeTPZ798ISr+qHI>}|#KB>Y!KI!bH{5bX*6-z`3Vd%%k=5+jbBA3sjg>k86bgs|C&=q^q>iRLJ5#7MA-?f zo7xWah7ZiADJ^(bb}dB;I0Bt&a%1sL7wg{h&5crx6JO^Jm*26UbkWK+->g?yi?N@f zwe9uikIe&xA*A6r+V?JI@_^Riyt^iv z>V~{_%{zGGcXa`+>0xY|=qA_y{(%kd?Y)>*gv=P@LC%;NBa=ZU-)fxx(Efq8vq~55 zUT7;s>76-(T@3oe+pj_P$2ol_3u&)cs zo_eA77iO+vuxTZ}w`Za(`EF1C0}EuS+gQ>*l0vQx6&D7!VAi{jO(v64Ts~S|f}u?w zAMTK1Sb>qNp-Nm)4Fk$;=lV+0gKHpthq(TXQ^=j*hXy=us%s#9HRLX?;iu5I%%|nj z8V2@{<)$$XWLFH)il&}IUk%G$cnZ1XY0B+lIX+GsxF0OH

%*hH8OZP9e9Q8r$rdV|%-uO>V(T->%lvUMK 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 From 1a51ffb3e0ac62de9e4a6762cf2c24ffbfbbda8f Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 20:50:31 +0200 Subject: [PATCH 11/22] update gitignore --- .gitignore | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ccd805c..ee05713 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,61 @@ -build/* -lib/* -bin/* +# Created by http://www.gitignore.io +### C++ ### +# Compiled Object files +*.slo +*.lo *.o -*.a +*.obj + +# Compiled Dynamic libraries *.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + + +### Windows ### +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + + +### Linux ### +*~ + +# KDE directory preferences +.directory + + +### vim ### +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ From c02875abae029f7c971c470e678e299850282299 Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 20:54:08 +0200 Subject: [PATCH 12/22] update gitignore again --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index ee05713..fa655eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +bin/* +build/* +lib/* + # Created by http://www.gitignore.io ### C++ ### From ab5135ba8d13fae57e1d78bed4cb44dd0db4a7fe Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 21:19:55 +0200 Subject: [PATCH 13/22] Makefile: create directories and clean up correctly --- Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 562dac7..8516c5e 100644 --- a/Makefile +++ b/Makefile @@ -19,9 +19,8 @@ $(TARGET): $(OBJECTS) $(CC) -o $(TARGET) $(SOURCES) $(CFLAGS) $(LDFLAGS) clean: - rm -f $(OBJECTS) integer-fhe - rm -r lib/* - rm -r $(LIBRARY) + rm -r $(BINDIR) $(BUILDDIR) $(LIBRARY): + mkdir -p $(BUILDDIR) $(CC) -fPIC -shared -o $(LIBRARY) $(SOURCES) $(CFLAGS) $(LDFLAGS) From e5e7e8495179637cbf722b4336938418cae092b7 Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 22:04:07 +0200 Subject: [PATCH 14/22] improve install script and readme --- README.md | 32 +++++++++++++++----------------- scripts/install-dependencies.sh | 4 ++++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index bd3dc4a..5cc1f5d 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ The library presented here is beta software and should not be used for any missi ## Prerequisites +The library depends on the following libraries: + * GMP https://gmplib.org Version 6.0.0 https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz * MPFR http://www.mpfr.org Version 3.1.1 https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 * MPIR http://www.mpir.org Version 2.6.0 http://www.mpir.org/mpir-2.6.0.tar.bz2 @@ -15,17 +17,14 @@ The library presented here is beta software and should not be used for any missi ### For Debian-based systems - sudo apt-get install build-essential m4 lzip unzip - -And then use scripts/install-dependencies.sh to install the dependencies. +* sudo apt-get install build-essential m4 lzip unzip +* Use ./scripts/install-dependencies.sh from this repository to install the dependencies. ### For Arch Linux -Install base-devel m4 unzip gmp mpfr from official repositories. - -Install mpir from AUR. Install version 2.6.0 and pay attention to the comment made by Fincer on 2014-06-20 18:32. - -Install flint manually. See the bottom part of scripts/install-dependencies.sh and create /etc/ld.so.conf.d/flint.conf with content /usr/local/lib/flint +* Install base-devel m4 unzip gmp mpfr from official repositories. +* Install mpir from AUR. Install version 2.6.0 and pay attention to the comment made by Fincer on 2014-06-20 18:32. +* Install Flint manually. See the bottom part of ./scripts/install-dependencies.sh and create /etc/ld.so.conf.d/locallib.conf with content /usr/local/lib and run ldconfig as root. ## Building @@ -34,22 +33,21 @@ The compilation is done using make. $ make -This builds an integer-fhe executeable in the current directory that runs a test of the library. +This builds an executable bin/integer-fhe that runs a test of the library and a shared library file in build/libscarab.so. ## Usage You can use the library as demonstrated in test.c. The following methods are exposed: -function prototype meaning ``` -fhe_keygen(fhe_pk_t pk, fhe_sk_t sk); // Generate a keypair -fhe_encrypt(mpz_t c, fhe_pk_t pk, int m); // Encrypt a message (0 or 1) -fhe_decrypt(mpz_t c, fhe_sk_t sk); // Decrypt a cyphertext +fhe_keygen(fhe_pk_t pk, fhe_sk_t sk); // Generate a keypair +fhe_encrypt(mpz_t c, fhe_pk_t pk, int m); // Encrypt a message (0 or 1) +fhe_decrypt(mpz_t c, fhe_sk_t sk); // Decrypt a cyphertext fhe_recrypt(mpz_t c, fhe_pk_t pk, fhe_sk_t sk); // Recrypt a cyphertext (“refreshing” it) -fhe_add(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Add cyphertexts (= XOR) -fhe_mul(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Multiply cyphertexts (= AND) -fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); // Add with carry in and carry out -fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with carry out +fhe_add(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Add cyphertexts (= XOR) +fhe_mul(mpz_t res, mpz_t a, mpz_t b, fhe_pk_t pk); // Multiply cyphertexts (= AND) +fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); // Add with carry in and carry out +fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with carry out ``` # References diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index dd30a24..d87009d 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -37,6 +37,7 @@ cd gmp-6.0.0 make make check sudo make install +sudo ldconfig cd .. # Install mpfr @@ -49,6 +50,7 @@ cd mpfr-3.1.1 make make check sudo make install +sudo ldconfig cd .. # Install mpir @@ -62,6 +64,7 @@ cd mpir-2.6.0 make make check sudo make install +sudo ldconfig cd .. # Install flint (ok, this is perhaps quite a bit strange) @@ -77,5 +80,6 @@ sudo cp libflint.so /usr/local/lib sudo cp *.h /usr/local/include sudo mkdir -p /usr/local/include/zn_poly/src sudo cp zn_poly/include/*.h /usr/local/include/zn_poly/src/ +sudo ldconfig cd .. From efbfef4c076b8b4ad48090752567408aebf3a742 Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 23:27:31 +0200 Subject: [PATCH 15/22] Improve Makefile and installation scripts * fixed bugs in Bash code in install-dependencies.sh * created uninstall-dependencies.sh * added install and uninstall target in Makefile * adapted README to cover the changes --- Makefile | 16 ++++++++++++- README.md | 29 +++++++++++++++++++++-- scripts/install-dependencies.sh | 10 ++++---- scripts/uninstall-dependencies.sh | 38 +++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 8 deletions(-) create mode 100755 scripts/uninstall-dependencies.sh diff --git a/Makefile b/Makefile index 8516c5e..35bea69 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,14 @@ CC = gcc SRCDIR = src BINDIR = bin BUILDDIR = build + +PREFIX_LIB = /usr/local/lib + TARGET = $(BINDIR)/integer-fhe -LIBRARY = $(BUILDDIR)/libscarab.so + +LIBRARY_FILENAME = libscarab.so +LIBRARY = $(BUILDDIR)/$(LIBRARY_FILENAME) + CFLAGS = -Wall -g3 -ggdb -std=c99 -I/usr/local/include -I/usr/local/include/libflint -L/usr/local/lib LDFLAGS += -lgmp -lflint @@ -24,3 +30,11 @@ clean: $(LIBRARY): mkdir -p $(BUILDDIR) $(CC) -fPIC -shared -o $(LIBRARY) $(SOURCES) $(CFLAGS) $(LDFLAGS) + +install: + cp $(LIBRARY) $(PREFIX_LIB)/ + ldconfig + +uninstall: + rm $(PREFIX_LIB)/$(LIBRARY_FILENAME) + ldconfig diff --git a/README.md b/README.md index 5cc1f5d..14cc10a 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ This is an implementation of a fully homomorphic encryption scheme using large i The library presented here is beta software and should not be used for any mission critical applications. No warranty expressed or implied is given. + # Installation and usage ## Prerequisites @@ -24,10 +25,10 @@ The library depends on the following libraries: * Install base-devel m4 unzip gmp mpfr from official repositories. * Install mpir from AUR. Install version 2.6.0 and pay attention to the comment made by Fincer on 2014-06-20 18:32. -* Install Flint manually. See the bottom part of ./scripts/install-dependencies.sh and create /etc/ld.so.conf.d/locallib.conf with content /usr/local/lib and run ldconfig as root. +* Install Flint manually: Execute the according part at the bottom of ./scripts/install-dependencies.sh, but before create /etc/ld.so.conf.d/locallib.conf with just one line of content: /usr/local/lib. -## Building +## Build The compilation is done using make. @@ -35,6 +36,14 @@ The compilation is done using make. This builds an executable bin/integer-fhe that runs a test of the library and a shared library file in build/libscarab.so. + +## Install + + $ sudo make install + +will place ./build/libscarab.so in /usr/local/lib and run ldconfig. + + ## Usage You can use the library as demonstrated in test.c. The following methods are exposed: @@ -50,6 +59,21 @@ fhe_fulladd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, mpz_t c_in, fhe_pk_t pk); fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with carry out ``` +## Uninstall + + $ sudo make uninstall + +will remove the library from /usr/local/lib. + +### Uninstall dependencies + +If you used ./scripts/install-dependencies, you can uninstall them using + + $ ./scripts/uninstall-dependencies + +This will basically call sudo make uninstall for each of GMP, MPFR and MPIR and undo the commands executed for the installation of Flint. + + # References [1] C. Gentry, A fully homomorphic encryption scheme @@ -58,6 +82,7 @@ fhe_halfadd(mpz_t sum, mpz_t c_out, mpz_t a, mpz_t b, fhe_pk_t pk); // Add with [3] H. Perl, M. Brenner and M. Smith, POSTER: An Implementation of the Fully Homomorphic Smart-Vercauteren Crypto-System + # License The source code is published under a MIT license: diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index d87009d..fb60028 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -21,13 +21,13 @@ if [ ! -f "mpir-2.6.0.tar.bz2" ]; then wget http://www.mpir.org/mpir-2.6.0.tar.bz2 fi -if [ ! -f "mpfr-3.1.1.tar.bz2"]; then +if [ ! -f "mpfr-3.1.1.tar.bz2" ]; then wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.bz2 fi # Install GMP -if [! -d "gmp-6.0.0"]; then +if [ ! -d "gmp-6.0.0" ]; then lzip -d gmp-6.0.0a.tar.lz tar xf gmp-6.0.0a.tar fi @@ -42,7 +42,7 @@ cd .. # Install mpfr -if [! -d "mpfr-3.1.1"]; then +if [ ! -d "mpfr-3.1.1" ]; then tar xjf mpfr-3.1.1.tar.bz2 fi @@ -55,7 +55,7 @@ cd .. # Install mpir -if [! -d "mpir-2.6.0"]; then +if [ ! -d "mpir-2.6.0" ]; then tar xjf mpir-2.6.0.tar.bz2 fi @@ -69,7 +69,7 @@ cd .. # Install flint (ok, this is perhaps quite a bit strange) -if [! -d "flint-1.6"]; then +if [ ! -d "flint-1.6" ]; then tar xzf flint-1.6.tgz fi diff --git a/scripts/uninstall-dependencies.sh b/scripts/uninstall-dependencies.sh new file mode 100755 index 0000000..1ad499c --- /dev/null +++ b/scripts/uninstall-dependencies.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# +# Download and build dependencies +# + +cd lib + +# Uninstall GMP + +cd gmp-6.0.0 +sudo make uninstall +cd .. + +# Uninstall mpfr + +cd mpfr-3.1.1 +sudo make uninstall +cd .. + +# Uninstall mpir + +cd mpir-2.6.0 +sudo make uninstall +cd .. + +# Uninstall flint + +cd flint-1.6 +sudo rm /usr/local/lib/libflint.so +dir=$(pwd) +cd /usr/local/include +sudo rm d_mat.h flint.h F_mpn_mul-tuning.h fmpz.h F_mpz.h F_mpz_LLL.h F_mpz_mat.h F_mpzmod_mat.h F_mpz_mod_poly.h fmpz_montgomery.h F_mpz_mpoly.h fmpz_poly.h F_mpz_poly.h F_zmod_mat.h long_extras.h longlong.h longlong_wrapper.h memory-manager.h mpfr_mat.h mpn_extras.h mpq_mat.h mpz_extras.h mpz_mat.h mpz_poly.h mpz_poly-tuning.h NTL-interface.h packed_vec.h profiler.h profiler-main.h test-support.h theta.h ZmodF.h ZmodF_mul.h ZmodF_mul-tuning.h ZmodF_poly.h zmod_mat.h zmod_poly.h +cd $dir +sudo rm -rf /usr/local/include/zn_poly/src +cd .. + +sudo ldconfig From deb018321ae468f15b7736be1a2e64b0154c637e Mon Sep 17 00:00:00 2001 From: blipp Date: Fri, 1 Aug 2014 23:42:28 +0200 Subject: [PATCH 16/22] readme: fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14cc10a..39e62a7 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ will remove the library from /usr/local/lib. If you used ./scripts/install-dependencies, you can uninstall them using - $ ./scripts/uninstall-dependencies + $ ./scripts/uninstall-dependencies This will basically call sudo make uninstall for each of GMP, MPFR and MPIR and undo the commands executed for the installation of Flint. From 7a10c6f2c006967a1f30cd249bce698e01c2d5dc Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 2 Aug 2014 03:46:30 +0200 Subject: [PATCH 17/22] Move and update version --- VERSION | 1 + src/VERSION | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 VERSION delete mode 100644 src/VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..7dea76e --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0.1 diff --git a/src/VERSION b/src/VERSION deleted file mode 100644 index 3eefcb9..0000000 --- a/src/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.0.0 From 388eb5a7fb0927c8d9a1b7f57062d10a4ee2b0d8 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 2 Aug 2014 03:47:11 +0200 Subject: [PATCH 18/22] Add license file --- LICENSE | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..646f651 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +The source code is published under a MIT license: + +Copyright (c) 2011, 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 20228f5a9ad98868869e6489f09bede55888287d Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sat, 2 Aug 2014 14:27:13 +0200 Subject: [PATCH 19/22] Terminate dependency scripts on error (`set -e`) --- scripts/install-dependencies.sh | 2 ++ scripts/uninstall-dependencies.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index fb60028..70d4235 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # # Download and build dependencies # diff --git a/scripts/uninstall-dependencies.sh b/scripts/uninstall-dependencies.sh index 1ad499c..c65e2a9 100755 --- a/scripts/uninstall-dependencies.sh +++ b/scripts/uninstall-dependencies.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # # Download and build dependencies # From a6cb3ba940cba3ef4bfaba8c891616b4b0f3d0c8 Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sat, 2 Aug 2014 15:05:57 +0200 Subject: [PATCH 20/22] Run ./configure before building mprf --- scripts/install-dependencies.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 70d4235..f73b7a3 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -49,6 +49,7 @@ if [ ! -d "mpfr-3.1.1" ]; then fi cd mpfr-3.1.1 +./configure make make check sudo make install From b301bac503110064ef38eb4ea870b5e29ca4e71c Mon Sep 17 00:00:00 2001 From: blipp Date: Tue, 30 Sep 2014 22:04:31 +0200 Subject: [PATCH 21/22] gitignore: add KDevelop --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index fa655eb..bd1c0e2 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,7 @@ $RECYCLE.BIN/ Session.vim .netrwhist *~ + +### KDevelop4 ### +*.kdev4 +.kdev4/ From 26af65d3213eb7206d3a76b5480e2cfe67551b6c Mon Sep 17 00:00:00 2001 From: blipp Date: Mon, 20 Oct 2014 00:33:50 +0200 Subject: [PATCH 22/22] extend installation instructions --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 39e62a7..bf3f393 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ The library presented here is beta software and should not be used for any missi # Installation and usage +First, clone this repository on your machine: git clone https://github.com/blindstore/libScarab.git. + ## Prerequisites The library depends on the following libraries: @@ -27,6 +29,10 @@ The library depends on the following libraries: * Install mpir from AUR. Install version 2.6.0 and pay attention to the comment made by Fincer on 2014-06-20 18:32. * Install Flint manually: Execute the according part at the bottom of ./scripts/install-dependencies.sh, but before create /etc/ld.so.conf.d/locallib.conf with just one line of content: /usr/local/lib. +### For Mac OS + +* You can install lzip gmp with brew +* Install the other dependencies using ./scripts/install-dependencies.sh ## Build