internal RSACryptoSystem( BackgroundWorker UseWorker, RSACryptoWorkerInfo UseWInfo ) { Worker = UseWorker; WorkerInfo = UseWInfo; StartTime = new ECTime(); StartTime.SetToNow(); RngCsp = new RNGCryptoServiceProvider(); IntMath = new IntegerMath(); IntMathNewForP = new IntegerMathNew( IntMath ); IntMathNewForQ = new IntegerMathNew( IntMath ); Worker.ReportProgress( 0, IntMath.GetStatusString() ); Quotient = new Integer(); Remainder = new Integer(); PrimeP = new Integer(); PrimeQ = new Integer(); PrimePMinus1 = new Integer(); PrimeQMinus1 = new Integer(); PubKeyN = new Integer(); PubKeyExponent = new Integer(); PrivKInverseExponent = new Integer(); PrivKInverseExponentDP = new Integer(); PrivKInverseExponentDQ = new Integer(); QInv = new Integer(); PhiN = new Integer(); TestForDecrypt = new Integer(); M1ForInverse = new Integer(); M2ForInverse = new Integer(); HForQInv = new Integer(); M1MinusM2 = new Integer(); M1M2SizeDiff = new Integer(); PubKeyExponent.SetFromULong( PubKeyExponentUint ); }
internal IntegerMath() { IntMathNew = new IntegerMathNew( this ); SignedD = new long[Integer.DigitArraySize]; M = new ulong[Integer.DigitArraySize, Integer.DigitArraySize]; Scratch = new ulong[Integer.DigitArraySize]; // These numbers are created ahead of time so that they don't have // to be created over and over again within a loop where the // calculations are being done. ToDivide = new Integer(); Quotient = new Integer(); Remainder = new Integer(); ToDivideKeep = new Integer(); DivideByKeep = new Integer(); DivideBy = new Integer(); TestForDivide1 = new Integer(); TempAdd1 = new Integer(); TempAdd2 = new Integer(); TempSub1 = new Integer(); TempSub2 = new Integer(); TempX = new Integer(); TempY = new Integer(); GcdX = new Integer(); GcdY = new Integer(); TestForModInverse1 = new Integer(); TestForModInverse2 = new Integer(); U0 = new Integer(); U1 = new Integer(); U2 = new Integer(); V0 = new Integer(); V1 = new Integer(); V2 = new Integer(); T0 = new Integer(); T1 = new Integer(); T2 = new Integer(); SubtractTemp1 = new Integer(); SubtractTemp2 = new Integer(); Fermat1 = new Integer(); Fermat2 = new Integer(); TestFermat = new Integer(); TempEuclid1 = new Integer(); TempEuclid2 = new Integer(); TempEuclid3 = new Integer(); TestForBits = new Integer(); OriginalValue = new Integer(); TestForSquareRoot = new Integer(); SqrtXPartTest1 = new Integer(); SqrtXPartTest2 = new Integer(); SqrtXPartDiff = new Integer(); SqrtXPartR2 = new Integer(); SqrtXPartTwoB = new Integer(); MakePrimeArray(); }