コード例 #1
0
        public static BigInteger computeZ(byte[] bytes, EllipticCurve theCurve)
        {
            BitArray hashBitArray = new BitArray(bytes);

            hashBitArray.RightShift(hashBitArray.Length - BitOperations.getBits(theCurve.p).Length);
            hashBitArray.CopyTo(bytes, 0);
            return(new BigInteger(bytes));
        }
コード例 #2
0
        public static EllipticCurvePoint multiplyPoint(BigInteger prk, EllipticCurvePoint point, EllipticCurve curve)
        {
            if (prk == 0)
            {
                return new EllipticCurvePoint {
                           x = 0, y = 0
                }
            }
            ;
            int[] bits = BitOperations.getBits(prk);

            int index = 0;
            EllipticCurvePoint initial = point;

            while (bits[index] == 0)
            {
                initial = PointDoubling.doublePoint(curve, initial);

                index++;
            }

            return(getResult(bits, index + 1, curve, initial));
        }