/// <summary>
        /// Curve25519 uses a so-called differential-addition chain proposed by Montgomery to multiply a point,
        /// identified only by its x-coordinate, by a scalar
        /// </summary>
        /// <param name="n"></param>
        /// <param name="p"></param>
        /// <param name="qSize"></param>
        /// <returns></returns>
        internal static byte[] ScalarMultiplication(byte[] n, byte[] p, int qSize)
        {
            var q  = new byte[qSize];
            var p0 = FieldElementOperations.FromBytes(p);
            var q0 = CalculateLadderStep(n, ref p0);

            FieldElementOperations.ToBytes(q, ref q0);

            return(q);
        }