[BUG] DSA failure in LargePositiveInteger in #new: <primitive : 71>

Jarvis, Robert P. (Contingent) Jarvisb at timken.com
Tue May 30 19:11:44 UTC 2000


FWIW DigitalSignalAlgorithm>>remainder:mod: fails in the same way on a 2.7
image and VM.  Test code following reproduces the error:

dsa _ DigitalSignatureAlgorithm new
	initRandom:
3073858295119816861619518188919816443211816758784546085350209989871066306407
0074149469027751252808366839610325226801786119623563694795185024364922876162
51.
x _ 1.
y _ 1456264555551690166006364982944671635636330287773.
val _ dsa remainder: x mod: y.

Bob Jarvis
Compuware @ Timken

> -----Original Message-----
> From: JArchibald at aol.com [mailto:JArchibald at aol.com]
> Sent: Tuesday, May 30, 2000 2:25 PM
> To: sr at evolgo.de; squeak at cs.uiuc.edu
> Subject: Re: [BUG] DSA failure in LargePositiveInteger in #new:
> <primitive: 71>
> 
> 
> => 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 =>
>         
> 30738582951198168616195181889198164432118167587845460853502099
> 8987106630640700
> 74149469027751252808366839610325226801786119623563694795185024
> 36492287616251 
> (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