From: Evan Webb Date: 2004-04-07T02:43:45+09:00 Subject: Re: Proposal: New Bignum 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 > >