[viff-devel] [viff-commits] viff: Generate_config_files:Added support NaCl implementation of...

Janus Dam Nielsen janus.nielsen at alexandra.dk
Thu Oct 29 03:07:18 PDT 2009


> Some good old-fashioned code review coming up... :-)
Great!

>> /rev/736ad1d97024
>> changeset: 1361:736ad1d97024
>> user:      Janus Dam Nielsen <janus.nielsen at alexandra.dk>
>> date:      Wed Oct 28 14:53:51 2009 +0100
>> summary:   Generate_config_files:Added support NaCl implementation  
>> of Paillier.
>
> There's a space missing after the colon.
Ok.

>> diffstat:
>>
>> apps/generate-config-files.py |  22 +++++++++++++++++++---
>> viff/paillierutil.py          |  20 +++++++++++++++++++-
>> 2 files changed, 38 insertions(+), 4 deletions(-)
>>
>> diffs (90 lines):
>>
>> diff -r 3fe6e03541c1 -r 736ad1d97024 apps/generate-config-files.py
>> --- a/apps/generate-config-files.py	Wed Oct 28 14:53:49 2009 +0100
>> +++ b/apps/generate-config-files.py	Wed Oct 28 14:53:51 2009 +0100
>> @@ -55,7 +55,17 @@
>> from optparse import OptionParser
>>
>> from viff.config import generate_configs
>> -from viff.paillierutil import ViffPaillier
>> +from viff.paillierutil import ViffPaillier, NaClPaillier
>> +
>> +try:
>> +    import pypaillier
>> +except ImportError:
>> +    pypaillier = None
>
> Are we getting a module called 'pypaillier' alongside the old module
> called 'paillier'? I don't like that name very much. Perhaps we should
> make a module called nacl so that you could do
>
>  try:
>      from viff.nacl import paillier
>  except ImportError:
>      from viff import paillier
>
> and then make the interface identical for the two modules.
Agree, this is a goal to be pursued soonish, but I would like Marc to  
make a distribution of his work that can be accessed somewhere on the  
internet.
I believe the interfaces are identical

> Also, can we please have that code put into VIFF? I don't like it that
> we're getting more and more "secret" code floating around :-)  
> Especially
> not when we make changes to VIFF to accomodate this secret code -- it
> would be different if we had simple drop-in Python replacements for  
> it.
>
> (I know you've said that this code can be made public since it's  
> part of
> NaCL, so this is more for the record...)
The code will not be a part of VIFF, but a prerequisite like Zope  
interfaces or Twisted. I will issue warning on the mailling list when  
I submit the changeset that will require it.

>> +
>> +paillier_choices = ['viff']
>> +
>> +if pypaillier:
>> +    paillier_choices += ['nacl']
>
> The append method is better for that.
Ok.

>
>> +paillier = ViffPaillier(options.keysize)
>> +if "nacl" == options.paillier:
>> +    paillier = NaClPaillier(options.keysize)
>
> I think it's clearer if you write
>
>  if options.paillier == "nacl":
>      paillier = NaClPaillier(options.keysize)
>  else:
>      paillier = ViffPaillier(options.keysize)
I slightly disagree.
  if "nacl" == options.paillier:
      paillier = NaClPaillier(options.keysize)
  else:
      paillier = ViffPaillier(options.keysize)
Is more natural in the current case.


>> +try:
>> +    import pypaillier
>> +except ImportError:
>> +    pypaillier = None
>> +
>> +
>> class Paillier:
>>
>>     def __init__(self, keysize):
>> @@ -35,8 +41,20 @@
>>
>>     def generate_keys(self):
>>         return paillier.generate_keys(self.keysize)
>> +
>> +class NaClPaillier:
>> +
>> +    def __init__(self, keysize):
>> +        self.keysize = keysize
>> +        self.type = 'nacl'
>> +
>> +    def generate_keys(self):
>> +        return pypaillier.generate_keys(self.keysize)
>>
>>
>> def deserializer(paillier_type, str):
>> -    return tuple(map(long, str))
>> +    if paillier_type == "viff":
>> +        return tuple(map(long, str))
>> +    if paillier_type == "nacl":
>> +        return str.dict()
>
> I think that function would belong in the otherwise unnecessary  
> classes
> you define above?
> Or even better: make a function in two different
> modules like I suggest above.
This is a good question. I choose the current design because it leaves  
you with only one place you should change if you want to add another  
paillier implementation. I need to think some more before I comment  
further on this.

____________________________________________________

Janus Dam Nielsen

Research and Innovationspecialist, PhD.
CENTRE FOR IT-SECURITY

THE ALEXANDRA INSTITUTE LTD.

T +45 42 22 93 56
E janus.nielsen at alexandra.dk
W alexandra.dk
____________________________________________________

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.viff.dk/pipermail/viff-devel-viff.dk/attachments/20091029/c909ce03/attachment-0001.htm>


More information about the viff-devel mailing list