Commit Graph
10 Commits
Author SHA1 Message Date
Piotr Dyraga f5a107a36f Draft implementation of a safe prime generator
I've adapted a Go code for generating random numbers by inserting some
optimisations that will allow us to generate safe primes faster than
with the previous, naive approach.

First of all, having q which can be prime, we first check whether q%3=1.
If that's true, there is no chance p=2q+1 is prime. It lets us to reject
candidate numbers quicker without running an expensive primality tests.

Also, before we run a primality test for q, we may check p=2q+1 against
the primes between 3-53 (We are limited by Go's uint64 range).

If all those conditions are met and we know p is prime, it's enough to
check Pocklington criterion for q instead of running an expensive
primality test for it.
2018-07-25 10:55:49 +02:00
Piotr Dyraga c685186ca3 Use Cmp to compare Ints, reflections is just to heavy 2018-07-17 15:20:17 +02:00
Piotr Dyraga f5a4d18889 Added support for a Cypher multiplication
It's now possible to multiply Cypher by an integer.

Paillier is a homomorphic encryption scheme, where an encrypted
plaintext `m` raised to an integer `k` will decrypt to the product of
the plaintext `m` and `k`.
2018-07-17 15:05:59 +02:00
Piotr Dyraga cfa2d72bef Added EncryptWithR allowing to specify the randomness
Function `EncryptWithR` lets to specify randomness `r` explicitely. For
some ZKPs based on the Paillier scheme, it's required to use the same
`r` for encryption and constructing ZKP. It wasn't possible previously,
because `r` was generated internally and never returned.

I did not want to modify `Encrypt` to return `r` because it would break
existing code using this API, as well as, I want to make sure person
using the specific `r` and using it somewhere else really knows what
he's doing.
2018-07-09 09:34:09 +02:00
Piotr Dyraga d439831ffd pub self-reference renamed to pk
We want to use a noun-ish name, not an adjective.
2018-06-28 15:52:26 +02:00
Piotr Dyraga b7abc00044 Test of an additively homomorphic property for a small modulus 2018-06-28 15:47:41 +02:00
Piotr Dyraga 5631d7cca5 Better explanation of an additively homomorphic property 2018-06-28 15:46:45 +02:00
Piotr Dyraga 053ae45b59 Let to pass an arbitrary number of cyphers to PublicKey.Add
`PublicKey.Add` accepts now an arbitrary number of `*Cypher`s.
Previously, it was possible to add only two `*Cypher*` instances and it
was quite unwieldy for a lot of use cases.

The current implementation is backward compatible. It's still possible
to pass just two `*Cypher` arguments, so every project referencing the
library will observe no compilation issues.
2018-06-28 14:28:05 +02:00
pdyraga a18a8243cb Merge pull request #4 from keep-network/extract-bson-wip
Extract BSON/JSON code to separate package
2018-06-21 08:13:38 +02:00
Piotr Dyraga 3acf9e6948 Explained how do we handle negative lambda parameter value 2018-06-05 13:11:50 +02:00