/// <summary>
        /// Verifies the integrity of the subscription request.  Code adapted from SprightlySoft SNSAutoConfirm sample.  License is:
        /// SprightlySoft SNS Auto Confirm.  License is reproduced above in SNSUtility
        /// </summary>
        /// <returns>True if the subscription matches</returns>
        public Boolean VerifySignature()
        {
            StringBuilder sbGenerated = new StringBuilder();

            sbGenerated.Append("Message\n").Append(Message).Append("\n");
            sbGenerated.Append("MessageId\n").Append(MessageId).Append("\n");

            if (!String.IsNullOrEmpty(Subject))
            {
                sbGenerated.Append("Subject\n").Append(Subject).Append("\n");
            }

            sbGenerated.Append("Timestamp\n").Append(Timestamp).Append("\n");
            sbGenerated.Append("TopicArn\n").Append(TopicArn).Append("\n");
            sbGenerated.Append("Type\n").Append(Type).Append("\n");

            return(SNSUtility.ValidateSignature(sbGenerated.ToString(), SigningCertLink, Signature));
        }
        /// <summary>
        /// Verifies the integrity of the subscription request.  Code adapted from SprightlySoft SNSAutoConfirm sample.  License is:
        /// SprightlySoft SNS Auto Confirm.  License is reproduced above in SNSUtility
        /// </summary>
        /// <returns>True if the subscription matches</returns>
        public Boolean VerifySignature()
        {
            // we can bypass the signature if the subscribe URL we are being asked to hit doesn't belong to AmazonAWS.
            Uri uri = new Uri(SubscribeLink);

            if (!uri.Host.EndsWith("amazonaws.com", StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            StringBuilder sbGenerated = new StringBuilder();

            sbGenerated.Append("Message\n").Append(Message).Append("\n");
            sbGenerated.Append("MessageId\n").Append(MessageId).Append("\n");
            sbGenerated.Append("SubscribeURL\n").Append(SubscribeLink).Append("\n");
            sbGenerated.Append("Timestamp\n").Append(Timestamp).Append("\n");
            sbGenerated.Append("Token\n").Append(Token).Append("\n");
            sbGenerated.Append("TopicArn\n").Append(TopicArn).Append("\n");
            sbGenerated.Append("Type\n").Append(Type).Append("\n");

            return(SNSUtility.ValidateSignature(sbGenerated.ToString(), SigningCertLink, Signature));
        }