/// <summary>
        /// This method is used to sign the data using the private key
        /// </summary>
        /// <param name="method"></param>
        /// <param name="data"></param>
        /// <param name="privateKeyFilePath"></param>
        /// <returns></returns>
        public static string Sign(string method, string data, string privateKeyFilePath)
        {
            RSACryptoServiceProvider rsaCsp = PemKeyUtils.GetRSAProviderFromPemFile(privateKeyFilePath);

            string plainText = method + SerializeData(data);

            byte[] dataBytes      = Encoding.UTF8.GetBytes(plainText);
            byte[] signatureBytes = rsaCsp.SignData(dataBytes, "SHA1");

            return(Convert.ToBase64String(signatureBytes));
        }
        /// <summary>
        /// This method is used to verified the signed data with the public key
        /// </summary>
        /// <param name="method"></param>
        /// <param name="data"></param>
        /// <param name="publicKeyPath"></param>
        /// <param name="signature"></param>
        /// <returns></returns>
        public static bool Verify(string method, string data, string publicKeyPath, string signature)
        {
            string plainText = method + SerializeData(data);

            byte[] dataBytes = Encoding.UTF8.GetBytes(plainText);

            byte[] signBytes = Convert.FromBase64String(signature);

            RSACryptoServiceProvider rsa = PemKeyUtils.GetRSAProviderFromPemFile(publicKeyPath);

            bool valid = rsa.VerifyData(dataBytes, "SHA1", signBytes);

            return(valid);
        }