Re: Proposal: New Bignum

From: "Evan Webb" <evan@...>
Date: 2004-04-06 17:43:45 UTC
List: ruby-core #2755

See below.

> -----Original Message-----
> From: Robert Feldt [mailto:feldt@ce.chalmers.se]
> Sent: Tuesday, April 06, 2004 6:40 AM
> To: ruby-core@ruby-lang.org
> Subject: Re: Proposal: New Bignum
> 
> Evan Webb wrote:
> 
> >During some experiments with ruby cryptography, I found some problems
> with
> >the existing Bignum classes. These problems were primarily focused around
> >certain lacking features required to do more complex operations as well
> as
> >some number theory ones. After examining the existing Bignum code, I
> found
> >it would be simpler and yield larger results to work on an alternative. I
> >had at the time been working with libtommath, a public domain math
> library
> >with all the functions I required and more. In addition, it's API made it
> >extremely easy to create a simple, thin, easy layer between ruby and the
> >library. And thus MBignum was born.
> >
> >Early uses found it extremely easy to integrate as an alternative to
> Bignum.
> >My Crypt::RSA, Crypt::DSS, and Crypt::ElGamal implementations become
> simple,
> >elegant, and importantly, fast.
> >
> >And thus I propose that we integrate MBignum into the ruby core as
> Bignum,
> >replacing the current implementation. This will give ruby more builtin
> >mathematical power and allow other core developers the ability to
> >concentrate on other issues. Licensing wise, there is no problem. Tom St.
> >Denis, the author of libtommath, has released libtommath as public
> domain. I
> >believe that we should of course give him credit if and when we integrate
> >his work.
> >
> >
> >
> I agree with this proposal. Python has fast bignum exponentiation in the
> core and Ruby should also have that. I also wrapped libtommath to do
> crypto and find it very good to work with. Clean, simple and fast.
> 
> Evan: Am I correct in that exponentiation is the main problem? That's
> what I found even though libtommath is generally faster than what we
> have now.

Yes, one of my initial problems was exponentiation. I was looking to
implement Crypt::RSA and found that Bignum just didn't cut it.
> 
> Evan: One way to convince matz might be to actually do it, ie produce
> patches to the Ruby interpreter. If it's integrated, the right license
> and works that would make his decision easier. If I remember correctly
> the conversions Fixnum <=> Bignum are fairly concentrated in the source
> so it should be doable.

I agree. I've got a pretty good idea how to integrate it without much
problem, so perhaps I'll write the patch to do it. I should do the patch
against CVS, correct?

> 
> Matz: If this is not possible in the 1.9 series please consider using
> libtommath for Rite.
> 
> My 2 cents,
> 
> Robert
> 
> 



In This Thread