[BUG] DSA failure in LargePositiveInteger in #new: <primitive: 71>
JArchibald at aol.com
JArchibald at aol.com
Tue May 30 18:24:49 UTC 2000
=> 5/30/00 11:29:21 AM EDT, sr at 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
More information about the Squeak-dev
mailing list
|