public void TestDecrypt(string signed)
        {
            string subDir = "bson_session";

            if (!string.IsNullOrWhiteSpace(signed))
            {
                subDir = "signed_" + subDir;
            }
            else
            {
                publicKeyVerifier = publicKeyVerifier.SafeDispose();
            }
            var subPath = Util.TestDataPath(TEST_DATA, subDir, "unofficial");
            var sessionMaterialInput = (WebBase64)File.ReadAllLines(Path.Combine(subPath, "session.out")).First();

            var sessionCiphertextInput = (WebBase64)File.ReadAllLines(Path.Combine(subPath, "ciphertext.out")).First();

            using (
                var sessionCrypter = new SessionCrypter(privateKeyDecrypter, sessionMaterialInput, publicKeyVerifier,
                                                        new BsonSessionKeyPacker()))
            {
                var plaintext = sessionCrypter.Decrypt(sessionCiphertextInput);
                Expect(plaintext, Is.EqualTo(input));
            }
        }
 public void PublicVerifyAttached()
 {
     var path = TestData(Location);
     using (var verifier = new AttachedVerifier(path + ".public"))
     {
         var primarySignature = (WebBase64) File.ReadAllLines(Path.Combine(path, "2.attached")).First();
         Expect(verifier.Verify(primarySignature), Is.True);
     }
 }
 public void PublicVerifyAttachedSecret()
 {
     var path = TestData(Location);
     using (var verifier = new AttachedVerifier(path + ".public"))
     {
         var primarySignature = (WebBase64) File.ReadAllLines(Path.Combine(path, "2.secret.attached")).First();
         Expect(verifier.Verify(primarySignature, Keyczar.Keyczar.RawStringEncoding.GetBytes("secret")), Is.True);
     }
 }
Beispiel #4
0
        public void VerifyAttached()
        {
            var path = TestData(Location);

            using (var verifier = new AttachedVerifier(path))
            {
                var primarySignature = (WebBase64)File.ReadAllLines(Path.Combine(path, "2.attached")).First();
                Expect(verifier.Verify(primarySignature), Is.True);
            }
        }
Beispiel #5
0
        public void VerifyAttachedSecret()
        {
            var path = TestData(Location);

            using (var verifier = new AttachedVerifier(path))
            {
                var primarySignature = (WebBase64)File.ReadAllLines(Path.Combine(path, "2.secret.attached")).First();
                Expect(verifier.Verify(primarySignature, Keyczar.Keyczar.RawStringEncoding.GetBytes("secret")), Is.True);
            }
        }
        public void VerifyAttachedStrictFail()
        {
            var path = TestData("java-junk-dsa");

            using (var verifier = new AttachedVerifier(path))
            {
                verifier.Config.StrictDsaVerification = true;
                var primarySignature = (WebBase64)File.ReadAllLines(Path.Combine(path, "2.attached")).First();

                Expect(verifier.Verify(primarySignature), Is.False);
            }
        }
        public void TestSignAndVerify(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var signedoutput = signer.Sign(input);

                    Expect(signer.Verify(signedoutput), Is.True);
                    Expect(verifier.Verify(signedoutput), Is.True);
                }
        }
        public void TestSignAndVerifyMessageBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var signedoutput = signer.Sign(input);
                    var badoutput    = signedoutput.ToBytes();
                    badoutput[10] ^= 9;

                    Expect(() => signer.VerifiedMessage(badoutput), Throws.InstanceOf <InvalidCryptoDataException>());
                    Expect(() => verifier.VerifiedMessage(badoutput), Throws.InstanceOf <InvalidCryptoDataException>());
                }
        }
        public void TestSignAndVerifyBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var signedoutput = signer.Sign(input);
                    var badoutput    = signedoutput.ToBytes();
                    badoutput[10] ^= 9;

                    Expect(signer.Verify(badoutput), Is.False);
                    Expect(verifier.Verify(badoutput), Is.False);
                }
        }
        public void DecryptSignedSession()
        {
            var path     = TestData(Location);
            var signpath = TestData(SignLocation);

            var material   = (WebBase64)File.ReadAllLines(Path.Combine(path, "2.signedsession.material")).First();
            var ciphertext = (WebBase64)File.ReadAllLines(Path.Combine(path, "2.signedsession.ciphertext")).First();

            using (var crypter = new Crypter(path))
                using (var verifier = new AttachedVerifier(signpath))
                    using (var sessionCrypter = new SessionCrypter(crypter, material, verifier))
                    {
                        var decrypted = sessionCrypter.Decrypt(ciphertext);
                        Expect(decrypted, Is.EqualTo(Input));
                    }
        }
        public void DecryptSignedSession()
        {
            var path = TestData(Location);
            var signpath = TestData(SignLocation);

            var material = (WebBase64) File.ReadAllLines(Path.Combine(path, "2.signedsession.material")).First();
            var ciphertext = (WebBase64) File.ReadAllLines(Path.Combine(path, "2.signedsession.ciphertext")).First();

            using (var crypter = new Crypter(path))
            using (var verifier = new AttachedVerifier(signpath))
            using (var sessionCrypter = new SessionCrypter(crypter, material, verifier))
            {
                var decrypted = sessionCrypter.Decrypt(ciphertext);
                Expect(decrypted, Is.EqualTo(Input));
            }
        }
        public void TestSignAndTryVerifyMessageBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);
                byte[] verifiedOutput;
                byte[] verifiedOutput2;
                var badoutput = signedoutput.ToBytes();
                badoutput[10] ^= 9;

                Expect(signer.TryGetVerifiedMessage(badoutput, out verifiedOutput), Is.False);

                Expect(verifier.TryGetVerifiedMessage(badoutput, out verifiedOutput2), Is.False);
            }
        }
        public void TestSignAndVerifyShort(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var signedoutput = signer.Sign(input);
                    var badoutput    = signedoutput.ToBytes();
                    badoutput[10] ^= 9;
                    var badlength = new byte[12];
                    Array.Copy(badoutput, badlength, badlength.Length);

                    Expect(() => signer.Verify(badlength), Throws.InstanceOf <InvalidCryptoDataException>());
                    Expect(() => verifier.Verify(badlength), Throws.InstanceOf <InvalidCryptoDataException>());
                }
        }
        public void TestSignAndTryVerifyMessageBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var    signedoutput = signer.Sign(input);
                    byte[] verifiedOutput;
                    byte[] verifiedOutput2;
                    var    badoutput = signedoutput.ToBytes();
                    badoutput[10] ^= 9;

                    Expect(signer.TryGetVerifiedMessage(badoutput, out verifiedOutput), Is.False);

                    Expect(verifier.TryGetVerifiedMessage(badoutput, out verifiedOutput2), Is.False);
                }
        }
Beispiel #15
0
        public void TwoKeysWithSameHashTimeoutAttachedVerify(string dir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, dir);

            using (var verifier = new AttachedVerifier(subPath))
            {
                var activeSignature  = (WebBase64)File.ReadAllLines(Path.Combine(subPath, "1.attached")).First();
                var primarySignature = (WebBase64)File.ReadAllLines(Path.Combine(subPath, "2.attached")).First();

                string activeVerifiedMessage;
                var    activeVerify = verifier.TryGetVerifiedMessage(activeSignature, out activeVerifiedMessage);
                Expect(activeVerify, Is.True);
                Expect(activeVerifiedMessage, Is.EqualTo(input));
                string primaryVerifiedMessage;
                var    primaryVerify = verifier.TryGetVerifiedMessage(primarySignature, out primaryVerifiedMessage);
                Expect(primaryVerify, Is.True);
                Expect(primaryVerifiedMessage, Is.EqualTo(input));
            }
        }
        public void TestSignAndTryVerifyMessage(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);
                string verifiedOutput;
                string verifiedOutput2;

                Expect(signer.TryGetVerifiedMessage(signedoutput, out verifiedOutput), Is.True);

                Expect(verifier.TryGetVerifiedMessage(signedoutput, out verifiedOutput2), Is.True);

                Expect(verifiedOutput, Is.EqualTo(input));

                Expect(verifiedOutput2, Is.EqualTo(input));
            }
        }
        public void TestSignAndTryVerifyMessage(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);

            using (var signer = new AttachedSigner(subPath))
                using (var verifier = new AttachedVerifier(subPath))
                {
                    var    signedoutput = signer.Sign(input);
                    string verifiedOutput;
                    string verifiedOutput2;

                    Expect(signer.TryGetVerifiedMessage(signedoutput, out verifiedOutput), Is.True);

                    Expect(verifier.TryGetVerifiedMessage(signedoutput, out verifiedOutput2), Is.True);

                    Expect(verifiedOutput, Is.EqualTo(input));

                    Expect(verifiedOutput2, Is.EqualTo(input));
                }
        }
        public void TestDecrypt(string signed)
        {
            string subDir = "bson_session";
            if (!string.IsNullOrWhiteSpace(signed))
            {
                subDir = "signed_" + subDir;
            }
            else
            {
                publicKeyVerifier = publicKeyVerifier.SafeDispose();
            }
            var subPath = Util.TestDataPath(TEST_DATA, subDir, "unofficial");
            var sessionMaterialInput = (WebBase64) File.ReadAllLines(Path.Combine(subPath, "session.out")).First();

            var sessionCiphertextInput = (WebBase64) File.ReadAllLines(Path.Combine(subPath, "ciphertext.out")).First();

            using (
                var sessionCrypter = new SessionCrypter(privateKeyDecrypter, sessionMaterialInput, publicKeyVerifier,
                                                        new BsonSessionKeyPacker()))
            {
                var plaintext = sessionCrypter.Decrypt(sessionCiphertextInput);
                Expect(plaintext, Is.EqualTo(input));
            }
        }
        public void TestSignAndVerifyBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);
                var badoutput = signedoutput.ToBytes();
                badoutput[10] ^= 9;

                Expect(signer.Verify(badoutput), Is.False);
                Expect(verifier.Verify(badoutput), Is.False);
            }
        }
        public void TestSignAndVerifyMessageBad(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);
                var badoutput = signedoutput.ToBytes();
                badoutput[10] ^= 9;

                Expect(() => signer.VerifiedMessage(badoutput), Throws.InstanceOf<InvalidCryptoDataException>());
                Expect(() => verifier.VerifiedMessage(badoutput), Throws.InstanceOf<InvalidCryptoDataException>());
            }
        }
        public void TestSignAndVerifyShort(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);
                var badoutput = signedoutput.ToBytes();
                badoutput[10] ^= 9;
                var badlength = new byte[12];
                Array.Copy(badoutput, badlength, badlength.Length);

                Expect(() => signer.Verify(badlength), Throws.InstanceOf<InvalidCryptoDataException>());
                Expect(() => verifier.Verify(badlength), Throws.InstanceOf<InvalidCryptoDataException>());
            }
        }
 public void Setup()
 {
     privateKeyDecrypter = new Crypter(Util.TestDataPath(TEST_DATA, "rsa"));
     publicKeyVerifier   = new AttachedVerifier(Util.TestDataPath(TEST_DATA, "dsa.public"));
 }
 public void Setup()
 {
     privateKeyDecrypter = new Crypter(Util.TestDataPath(TEST_DATA, "rsa"));
     publicKeyVerifier = new AttachedVerifier(Util.TestDataPath(TEST_DATA, "dsa.public"));
 }
        public void TestSignAndVerify(String subDir, string nestDir)
        {
            var subPath = Util.TestDataPath(TEST_DATA, subDir, nestDir);
            using (var signer = new AttachedSigner(subPath))
            using (var verifier = new AttachedVerifier(subPath))
            {
                var signedoutput = signer.Sign(input);

                Expect(signer.Verify(signedoutput), Is.True);
                Expect(verifier.Verify(signedoutput), Is.True);
            }
        }