Ejemplo n.º 1
0
        public RemoteGroup(string primeString, string generatorString)
        {
            SHA1Managed sha1 = new SHA1Managed();

            generator = new BigInteger(2);
            byte[] primeBytes = RemotePassword.getBytes(primeString);
            prime = new BigInteger(1, primeBytes);

            byte[] generatorBytes = generator.ToByteArray();
            int pad = primeBytes.Length - generatorBytes.Length;
            byte[] buffer = new byte[primeBytes.Length + Math.Max(0, pad) + generatorBytes.Length];
            Array.Copy(primeBytes, 0, buffer, 0, primeBytes.Length);
            Array.Copy(generatorBytes, 0, buffer, primeBytes.Length + Math.Max(0, pad), generatorBytes.Length);
            byte[] kBytes = sha1.ComputeHash(buffer);
            k = new BigInteger(1, kBytes);
        }
Ejemplo n.º 2
0
        public virtual void encodeBigDecimal(Decimal bd)
        {
            int scale;
            Decimal temp;
            ConvertToScaledDecimal(bd, out scale, out temp);
            if (temp.CompareTo(long.MinValue) > 0 && temp.CompareTo(long.MaxValue) < 0)
                encodeLong((long)temp, scale);
            else
            {
                BigInteger bi = new BigInteger(Decimal.Truncate(Math.Abs(temp)).ToString(), 10);
                byte[] byteArray = bi.ToByteArray();

                write(edsScaledCount2);
                write(scale);
                write(bd.CompareTo(Decimal.Zero));
                write(byteArray.Length);
                write(byteArray);
            }
        }
Ejemplo n.º 3
0
        public virtual void encodeOldBigDecimal(decimal bd)
        {
            int scale;
            Decimal temp;
            ConvertToScaledDecimal(bd, out scale, out temp);
            int neg = bd.CompareTo(decimal.Zero) == -1 ? 1 : 0;

            // The server expects a byte array with a signed first byte.
            // BigInteger.toByteArray() creates an array of the value in two's compliment.
            // So get the unsigned value and set the sign bit manually.

            BigInteger bi = new BigInteger(Decimal.Truncate(Math.Abs(temp)).ToString(), 10);
            byte[] byteArray = bi.ToByteArray();

            if (neg == 1)
            {
                byteArray[0] |= 0x80;
            }

            write(edsScaledCount1);
            write(byteArray.Length + 1);
            write(scale);
            write(byteArray);
        }
Ejemplo n.º 4
0
 public static string getHex(BigInteger number)
 {
     return getHex(number.ToByteArray());
 }