public static Tuple <NetTcpBinding, EndpointAddress> PrepBindingAndAddressForReader(string ServiceCertCN)
        {
            NetTcpBinding binding = new NetTcpBinding();

            binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
            /// Use CertManager class to obtain the certificate based on the "srvCertCN" representing the expected service identity.
            X509Certificate2 srvCert = CertManager.GetCertificateFromStorage(StoreName.TrustedPeople, StoreLocation.LocalMachine, ServiceCertCN);
            EndpointAddress  address = new EndpointAddress(new Uri(Config.ReaderServiceAddress), new X509CertificateEndpointIdentity(srvCert));

            binding.ReceiveTimeout = TimeSpan.FromMinutes(30);
            binding.SendTimeout    = TimeSpan.FromMinutes(30);

            return(new Tuple <NetTcpBinding, EndpointAddress>(binding, address));
        }
        public static bool ValidateSignature(string s, byte[] signature, string signCert)
        {
            if (signature == null)
            {
                return(false);
            }
            X509Certificate2 clientCertificate = CertManager.GetCertificateFromStorage(StoreName.TrustedPeople, StoreLocation.LocalMachine, signCert);

            /// Verify signature using SHA1 hash algorithm
            if (DigitalSignature.Verify(s, "SHA1", signature, clientCertificate))
            {
                Console.WriteLine("Digital Signature is valid.");
                //Console.WriteLine(message);
                return(true);
            }
            else
            {
                Console.WriteLine("Digital Signature is invalid.");
                return(false);
            }
        }