From 3bed73da65d252ea83ed27574aee7ef6ba886a38 Mon Sep 17 00:00:00 2001
From: Wei Lu <luwei.here@gmail.com>
Date: Sun, 2 Mar 2014 01:09:52 +0800
Subject: [PATCH] Remove pailier.js #33, @abrkn

---
 src/paillier.js | 118 ------------------------------------------------
 1 file changed, 118 deletions(-)
 delete mode 100644 src/paillier.js

diff --git a/src/paillier.js b/src/paillier.js
deleted file mode 100644
index 54881ba..0000000
--- a/src/paillier.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * Implement the Paillier cryptosystem in JavaScript.
- *
- * Paillier is useful for multiparty calculation. It is not currently part of any
- * BitcoinJS-lib distribution, but it is included here for experimental use.
- */
-Bitcoin.Paillier = (function () {
-  var rng = new SecureRandom();
-  var TWO = BigInteger.valueOf(2);
-
-  var Paillier = {
-    generate: function (bitLength) {
-      var p, q;
-      do {
-        p = new BigInteger(bitLength, 1, rng);
-        q = new BigInteger(bitLength, 1, rng);
-      } while (p.equals(q));
-
-      var n = p.multiply(q);
-
-      // p - 1
-      var p1 = p.subtract(BigInteger.ONE);
-      // q - 1
-      var q1 = q.subtract(BigInteger.ONE);
-
-      var nSq = n.multiply(n);
-
-      // lambda
-      var l = p1.multiply(q1).divide(p1.gcd(q1));
-
-      var coprimeBitLength = n.bitLength() - Math.floor(Math.random()*10);
-
-      var alpha = new BigInteger(coprimeBitLength, 1, rng);
-      var beta = new BigInteger(coprimeBitLength, 1, rng);
-
-      var g = alpha.multiply(n).add(BigInteger.ONE)
-        .multiply(beta.modPow(n,nSq)).mod(nSq);
-
-      // mu
-      var m = g.modPow(l,nSq).mod(nSq)
-        .subtract(BigInteger.ONE).divide(n).modInverse(n);
-
-      return new Paillier.PrivateKey(n,g,l,m,nSq);
-    }
-  };
-
-  Paillier.PublicKey = function (n,g,nSq) {
-    this.n = n;
-    this.g = g;
-    this.nSq = nSq || n.multiply(n);
-  };
-
-  Paillier.PublicKey.prototype.encrypt = function (i, r) {
-    if (!r) {
-      var coprimeBitLength = this.n.bitLength() - Math.floor(Math.random()*10);
-      r = new BigInteger(coprimeBitLength, 1, rng);
-    }
-    return this.g.modPow(i,this.nSq).multiply(r.modPow(this.n,this.nSq))
-      .mod(this.nSq);
-  };
-
-  Paillier.PublicKey.prototype.add = function (c, f) {
-    return c.multiply(this.encrypt(f)).mod(this.nSq);
-  };
-
-  Paillier.PublicKey.prototype.addCrypt = function (c, f) {
-    return c.multiply(f).mod(this.nSq);
-  };
-
-  Paillier.PublicKey.prototype.multiply = function (c, f) {
-    return c.modPow(f, this.nSq);
-  };
-
-  Paillier.PublicKey.prototype.rerandomize = function (c, r) {
-    if (!r) {
-      var coprimeBitLength = this.n.bitLength() - Math.floor(Math.random()*10);
-      r = new BigInteger(coprimeBitLength, 1, rng);
-    }
-    return c.multiply(r.modPow(this.n, this.nSq)).mod(this.nSq);
-  };
-
-  Paillier.PrivateKey = function (n,g,l,m,nSq) {
-    this.l = l;
-    this.m = m;
-    this.n = n;
-    this.nSq = nSq || n.multiply(n);
-    this.pub = new Paillier.PublicKey(n,g,this.nSq);
-  };
-
-  Paillier.PrivateKey.prototype.decrypt = function (c) {
-    return c.modPow(this.l, this.nSq).subtract(BigInteger.ONE)
-      .divide(this.n).multiply(this.m).mod(this.n);
-  };
-
-  Paillier.PrivateKey.prototype.decryptR = function (c, i) {
-    if (!i) {
-      i = this.decrypt(c);
-    }
-    var rn = c.multiply(this.pub.g.modPow(i, this.nSq).modInverse(this.nSq))
-      .mod(this.nSq);
-    var a = this.l.modInverse(this.n).multiply(this.n.subtract(BigInteger.ONE));
-    var e = a.multiply(this.l).add(BigInteger.ONE).divide(this.n);
-    return rn.modPow(e, this.n);
-  };
-
-  function createProxyMethod(name) {
-    return function () {
-      return this.pub[name].apply(this.pub,
-                                  Array.prototype.slice.apply(arguments));
-    };
-  };
-  var a = ["add", "addCrypt", "multiply", "rerandomize", "encrypt"];
-  for (var i = 0, l = a.length; i < l; i++) {
-    Paillier.PrivateKey.prototype[a[i]] = createProxyMethod(a[i]);
-  }
-
-  return Paillier;
-})();