=> 5/30/00 11:29:21 AM EDT, sr@evolgo.de => << Could you please - by using the debugger - take a view into this method and look for the argument of this >>new: here? >>
Stephan,
Okay, here are the gory details (and they are very gory indeed).
When I run DigitalSignatureAlgorithm>>generateKeySet, I get an error in Behavior>>new: with the following walk-back:
----------------------------------------------------------- Error: a primitive has failed
LargePositiveInteger class(Object)>>error: LargePositiveInteger class(Object)>>primitiveFailed LargePositiveInteger class(Behavior)>>new: DigitalSignatureAlgorithm>>remainder:mod: DigitalSignatureAlgorithm>>isProbablyPrime: DigitalSignatureAlgorithm>>generateSandQ DigitalSignatureAlgorithm>>generateQandP DigitalSignatureAlgorithm>>generateKeySet DigitalSignatureAlgorithm class>>generateKeySet UndefinedObject>>DoIt -----------------------------------------------------------
in method DigitalSignatureAlgorithm>>remainder:mod: the run-down at the time of failure for local variables is:
instance variables: randKey =>
307385829511981686161951818891981644321181675878454608535020998987106630640700 7414946902775125280836683961032522680178611962356369479518502436492287616251 (class LargePositiveInteger) randSeed => 1369035390015187928040555654137399981674798064385 (class LargePositiveInteger)
arguments: x => 1 (class SmallInteger) y => 1456264555551690166006364982944671635636330287773 (class LargePositiveInteger)
temporaries: remainder => 01 (class LargePositiveInteger, size = 2) divisor => 1456264555551690166006364982944671635636330287773 (class LargePositiveInteger) shift => 0 (class SmallInteger) quotient => nil (class UndefinedObject)
and the argument to LargePositiveInteger>>new: is -18 (in statement mentioned in next paragraph). LargePositiveInteger>>new: works only if the parameter to #new: is >= 0. Since we are getting a negative value there, something in the new implementation of LargeInteger is causing this routine to go whacko.
These are some very big numbers. Not as big as those I got in other tests mentioned in previous E-mails, but big enough. In any case, the body of DigitalSignatureAlgorithm>>remainder:mod: is attempting to do an Integer>>new: with a negative parameter in statement quotient _ LargePositiveInteger new: remainder digitLength - divisor digitLength. There are a number of numeric operations in that routine prior to this statement, and my suspicion is that one of them is behaving badly.
BTW (world), who did the DSA stuff?
Still sincerely lost, Jerry. ____________________________
Jerry L. Archibald systemObjectivesIncorporated ____________________________
"Knowledge is something that you can use, Belief is something that uses you." Idries Shah
squeak-dev@lists.squeakfoundation.org