示例#1
0
        public void TestEncryptedKeysetForNonEncryptedData()
        {
            var nonEncryptedPath = Util.TestDataPath(TEST_DATA, "rsa");

            using (var pbereader = KeySet.LayerSecurity(
                       FileSystemKeySet.Creator(nonEncryptedPath),
                       PbeKeySet.Creator(() => "dummy")

                       ))
            {
                var key = pbereader.GetKey(1);
                Expect(key, Is.Not.Null);
            }


            using (var crypter = new Crypter(nonEncryptedPath))
                using (var encreader = KeySet.LayerSecurity(
                           FileSystemKeySet.Creator(nonEncryptedPath),
                           EncryptedKeySet.Creator(crypter)
                           ))
                {
                    var key = encreader.GetKey(1);
                    Expect(key, Is.Not.Null);
                }
        }
示例#2
0
 public void TestSign()
 {
     using (var stream = File.OpenRead(Util.TestDataPath(TEST_DATA, "cryptkey.zip")))
         using (var keySet = new BlobKeySet(stream))
             using (var crypter = new Crypter(keySet))
                 using (var signstream = File.OpenRead(Util.TestDataPath(TEST_DATA, "signkey.zip")))
                     using (var signkeySet = KeySet.LayerSecurity(
                                BlobKeySet.Creator(signstream),
                                EncryptedKeySet.Creator(crypter)
                                ))
                         using (var verifier = new Verifier(signkeySet))
                         {
                             var sig = (WebBase64)File.ReadAllText(Util.TestDataPath(TEST_DATA, "sign.out"));
                             Expect(verifier.Verify(input, sig), Is.True);
                         }
 }
示例#3
0
        public void TestAesEncryptedKeyDecrypt(string subDir, string nestedDir)
        {
            // Test reading and using encrypted keys


            var basePath = Util.TestDataPath(TEST_DATA, nestedDir);
            var keyPath  = Path.Combine(basePath, subDir);
            var dataPath = Path.Combine(basePath, subDir + "-crypted");

            using (var keyDecrypter = new Crypter(keyPath))
                using (var ks = KeySet.LayerSecurity(FileSystemKeySet.Creator(dataPath),
                                                     EncryptedKeySet.Creator(keyDecrypter)))
                    using (var dataDecrypter = new Crypter(ks))
                    {
                        HelperDecrypt(dataDecrypter, dataPath);
                    }
        }
示例#4
0
        public void Decrypt()
        {
            var keyPath  = TestData("aes");
            var dataPath = TestData("aes-crypted");

            var activeCiphertext  = (WebBase64)File.ReadAllLines(Path.Combine(dataPath, "1.out")).First();
            var primaryCiphertext = (WebBase64)File.ReadAllLines(Path.Combine(dataPath, "2.out")).First();

            using (var keyDecrypter = new Crypter(keyPath))
                using (var ks = KeySet.LayerSecurity(FileSystemKeySet.Creator(dataPath),
                                                     EncryptedKeySet.Creator(keyDecrypter)))
                    using (var crypter = new Crypter(ks))
                    {
                        var activeDecrypted = crypter.Decrypt(activeCiphertext);
                        Expect(activeDecrypted, Is.EqualTo(Input));
                        var primaryDecrypted = crypter.Decrypt(primaryCiphertext);
                        Expect(primaryDecrypted, Is.EqualTo(Input));
                    }
        }
示例#5
0
        public void CreateAndCrypted(string keyType, string topDir, string subDir)
        {
            KeyType type   = keyType;
            var     kspath = Util.TestDataPath(WRITE_DATA, topDir, subDir);
            var     writer = new FileSystemKeySetWriter(kspath, overwrite: true);

            using (var ks = CreateNewKeySet(type.Kind, KeyPurpose.DecryptAndEncrypt))
            {
                var success = ks.Save(writer);
                Expect(success, Is.True);
            }


            HelperCryptCreate(writer, new FileSystemKeySet(kspath), kspath, type);


            var kscryptpath = Util.TestDataPath(WRITE_DATA, topDir + "-crypted", subDir);


            var baseWriter = new FileSystemKeySetWriter(kscryptpath, overwrite: true);

            using (var ks = CreateNewKeySet(type.Kind, KeyPurpose.DecryptAndEncrypt))
            {
                var success = ks.Save(baseWriter);
                Expect(success, Is.True);
            }

            using (var encrypter = new Crypter(kspath))
            {
                var cryptedwriter = new EncryptedKeySetWriter(baseWriter, encrypter);
                using (var eks = KeySet.LayerSecurity(FileSystemKeySet.Creator(kscryptpath),
                                                      EncryptedKeySet.Creator(encrypter)))
                {
                    HelperCryptCreate(cryptedwriter, eks, kscryptpath, type,
                                      new FileSystemKeySet(kscryptpath), baseWriter);
                }
            }
        }
示例#6
0
        public void TestOperateOnPbeCryptKeys()
        {
            string result;


            var path  = Util.TestDataPath(TEST_DATA, "rsa-pbe2");
            var pathc = Util.TestDataPath(TEST_DATA, "rsa-crypted2");

            if (Directory.Exists(path))
            {
                Directory.Delete(path, true);
            }
            if (Directory.Exists(pathc))
            {
                Directory.Delete(pathc, true);
            }


            result = Util.KeyczarTool(create: null, location: path, purpose: "crypt", unofficial: null);
            Expect(result, Does.Contain(KeyczarTool.Localized.MsgCreatedKeySet));

            result = Util.KeyczarTool("cartman", "cartman", addkey: null, location: path, password: null,
                                      status: "primary");

            Expect(result, Does.Contain(KeyczarTool.Localized.MsgCreatedKey));

            result = Util.KeyczarTool(create: null, location: pathc, purpose: "crypt", asymmetric: null);
            Expect(result, Does.Contain(KeyczarTool.Localized.MsgCreatedKeySet));

            result = Util.KeyczarTool("cartman", addkey: null, location: pathc, crypter: path, password: null,
                                      status: "primary");
            Expect(result, Does.Contain(KeyczarTool.Localized.MsgCreatedKey));

            var pathi = Path.Combine(pathc, "out.pem");

            result = Util.KeyczarTool(
                "cartman",
                "pass",
                "pass",
                export: null,
                location: pathc,
                password: null,
                crypter: path,
                destination: pathi);

            Expect(result, Does.Contain(KeyczarTool.Localized.MsgExportedPem));

            result = Util.KeyczarTool("cartman", "pass",
                                      importkey: null,
                                      location: pathc,
                                      status: "primary",
                                      crypter: path,
                                      password: null,
                                      importlocation: pathi);

            Expect(result, Does.Contain(KeyczarTool.Localized.MsgImportedNewKey));


            var pathp = Path.Combine(pathc, "export");

            result = Util.KeyczarTool(
                "cartman",
                pubkey: null,
                location: pathc,
                crypter: path,
                password: null,
                destination: pathp
                );
            Expect(result, Does.Contain(KeyczarTool.Localized.MsgNewPublicKeySet));

            var patho = Path.Combine(pathc, "1.out");

            result = Util.KeyczarTool(
                "cartman",
                usekey: null,
                location: pathc,
                crypter: path,
                password: null,
                destination: patho,
                additionalArgs: new[] { input }
                );

            using (var pks = KeySet.LayerSecurity(
                       FileSystemKeySet.Creator(path),
                       PbeKeySet.Creator(() => "cartman" /*hardcoding because this is a test*/)))
                using (var kcrypter = new Crypter(pks))
                {
                    using (var eks = KeySet.LayerSecurity(FileSystemKeySet.Creator(pathc),
                                                          EncryptedKeySet.Creator(kcrypter)))
                        using (var crypter = new Crypter(eks))
                        {
                            Expect(pks.Metadata.Encrypted, Is.True);
                            Expect(eks.Metadata.Encrypted, Is.True);
                            result = crypter.Decrypt((WebBase64)File.ReadAllText(patho));
                            Expect(result, Is.EqualTo(input));
                        }
                }
            Directory.Delete(pathc, true);
        }