Beispiel #1
0
        //Server Side
        public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {
            X509Certificate2 myCert = CryptoHelper.FindCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=klServer");

            byte[] myHash = myCert.GetCertHash();

            byte[] mySignedHash         = CryptoHelper.Sign(myHash, myCert);
            byte[] mySignedDetachedHash = CryptoHelper.SignDetached(myHash, myCert);

            byte[] myEncryptedHash         = CryptoHelper.Encrypt(mySignedHash, myCert);
            byte[] myEncryptedDetachedHash = CryptoHelper.Encrypt(mySignedDetachedHash, myCert);

            byte[] myDecodedHash = CryptoHelper.VerifyAndRemoveSignature(mySignedHash);

            bool myOK = CryptoHelper.VerifyDetached(mySignedHash, mySignedDetachedHash);

            char[] keyChars = new char[mySignedHash.Length];

            for (int i = 0; i < mySignedHash.Length; i++)
            {
                keyChars[i] = (char)mySignedHash[i];
            }

            reply.Headers.Add((new CustomSecurityHeader(new string(keyChars))));

            MessageBuffer buffer = reply.CreateBufferedCopy(Int32.MaxValue);

            reply = buffer.CreateMessage();
            Console.WriteLine("Service Sending:\n{0}", buffer.CreateMessage().ToString());
        }
Beispiel #2
0
            public static byte[] SignMacWithPrivateKey(byte[] mac)
            {
                X509Certificate2 myCert = CryptoHelper.FindCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=klLicenseKeyGen");

                byte[] mySignedMac = CryptoHelper.Sign(mac, myCert);

                return(mySignedMac);
            }
Beispiel #3
0
        //Server Side
        public void BeforeSendReply(ref Message reply, object correlationState)
        {
            X509Certificate2 myCert = CryptoHelper.FindCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=klServer");
            var myHash = myCert.GetCertHash();

            var mySignedHash = CryptoHelper.Sign(myHash, myCert);

            var keyChars = new char[mySignedHash.Length];

            for (int i = 0; i < mySignedHash.Length; i++)
            {
                keyChars[i] = (char)mySignedHash[i];
            }

            reply.Headers.Add((new CustomSecurityHeader(new string(keyChars))));

            MessageBuffer buffer = reply.CreateBufferedCopy(Int32.MaxValue);

            reply = buffer.CreateMessage();
        }