Ejemplo n.º 1
0
        public void CreateSignAndPublicSized(string keyType, string topDir, string nestDir)
        {
            KeyType type = keyType;

            topDir += "-sizes";
            var kspath = Util.TestDataPath(WRITE_DATA, topDir, nestDir);
            var writer = new KeySetWriter(kspath, overwrite: true);


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

            int i = 0;

            foreach (int size in type.KeySizeOptions)
            {
                i++;
                using (var ks = new MutableKeySet(kspath))
                {
                    var ver = ks.AddKey(KeyStatus.Primary, size);
                    Expect(ver, Is.EqualTo(i));

                    var success = ks.Save(writer);
                    Expect(success, Is.True);
                }

                using (var encrypter = new Signer(kspath))
                {
                    var ciphertext = encrypter.Sign(input);
                    File.WriteAllText(Path.Combine(kspath, String.Format("{0}.out", size)), ciphertext);
                }
            }

            if (type.Asymmetric)
            {
                var kspath2 = Util.TestDataPath(WRITE_DATA, topDir + ".public", nestDir);
                var writer2 = new KeySetWriter(kspath2, overwrite: true);
                using (var ks = new MutableKeySet(kspath))
                {
                    var pubKs   = ks.PublicKey();
                    var success = pubKs.Save(writer2);
                    Expect(success, Is.True);
                }
            }
        }
Ejemplo n.º 2
0
        public void CreateEncryptAndPublic(string keyType, string topDir)
        {
            KeyType type   = keyType;
            var     kspath = Util.TestDataPath(WRITE_DATA, topDir);
            var     writer = new KeySetWriter(kspath, overwrite: true);

            using (var ks = CreateNewKeySet(type, KeyPurpose.DecryptAndEncrypt))
            {
                var ver = ks.AddKey(KeyStatus.Primary);
                Expect(ver, Is.EqualTo(1));

                var success = ks.Save(writer);
                Expect(success, Is.True);
            }

            using (var encrypter = new Encrypter(kspath))
            {
                var ciphertext = encrypter.Encrypt(input);
                File.WriteAllText(Path.Combine(kspath, "1.out"), ciphertext);
            }

            using (var ks = new MutableKeySet(kspath))
            {
                var ver = ks.AddKey(KeyStatus.Primary);
                Expect(ver, Is.EqualTo(2));

                var success = ks.Save(writer);
                Expect(success, Is.True);
            }

            using (var encrypter = new Encrypter(kspath))
            {
                var ciphertext = encrypter.Encrypt(input);
                File.WriteAllText(Path.Combine(kspath, "2.out"), ciphertext);
            }

            if (type.Asymmetric)
            {
                var kspath2 = Util.TestDataPath(WRITE_DATA, topDir + ".public");
                var writer2 = new KeySetWriter(kspath2, overwrite: true);
                using (var ks = new MutableKeySet(kspath))
                {
                    var pubKs   = ks.PublicKey();
                    var success = pubKs.Save(writer2);
                    Expect(success, Is.True);
                }
            }
        }
Ejemplo n.º 3
0
        public override int Run(string[] remainingArguments)
        {
            var     ret     = 0;
            Crypter crypter = null;
            IKeySet ks      = new FileSystemKeySet(_location);

            Func <string> prompt = CachedPrompt.Password(Util.PromptForPassword).Prompt;

            IDisposable dks = null;

            if (!String.IsNullOrWhiteSpace(_crypterLocation))
            {
                if (_password)
                {
                    var cks = KeySet.LayerSecurity(FileSystemKeySet.Creator(_crypterLocation),
                                                   PbeKeySet.Creator(prompt)
                                                   );
                    crypter = new Crypter(cks);
                    dks     = cks;
                }
                else
                {
                    crypter = new Crypter(_crypterLocation);
                }
                ks = new EncryptedKeySet(ks, crypter);
            }
            else if (_password)
            {
                ks = new PbeKeySet(ks, prompt);
            }
            var d2ks = ks as IDisposable;


            using (crypter)
                using (dks)
                    using (d2ks)
                        using (var keySet = new MutableKeySet(ks))
                        {
                            var pubKeySet = keySet.PublicKey();
                            if (pubKeySet != null)
                            {
                                using (pubKeySet)
                                {
                                    IKeySetWriter writer = new FileSystemKeySetWriter(_destination, overwrite: false);

                                    if (pubKeySet.Save(writer))
                                    {
                                        Console.WriteLine(Localized.MsgNewPublicKeySet);
                                        ret = 0;
                                    }
                                    else
                                    {
                                        ret = -1;
                                    }
                                }
                            }
                            else
                            {
                                ret = -1;
                            }
                        }

            return(ret);
        }
Ejemplo n.º 4
0
        public void CreateSignAndPublicSized(string keyType, string topDir, string nestDir)
        {
            KeyType type = keyType;

            topDir += "-sizes";
            var kspath = Util.TestDataPath(WRITE_DATA, topDir, nestDir);
            var writer = new FileSystemKeySetWriter(kspath, overwrite: true);


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

            int i = 0;

            foreach (int size in type.KeySizeOptions)
            {
                if (Util.IsSizeTooSlow(size))
                {
                    break;
                }

                i++;
                using (var ks = new MutableKeySet(kspath))
                {
                    var ver = ks.AddKey(KeyStatus.Primary, size, type: type);
                    Expect(ver, Is.EqualTo(i));

                    var success = ks.Save(writer);
                    Expect(success, Is.True);
                }

                using (var ks = new FileSystemKeySet(kspath))
                    using (var signer = new Signer(ks))
                        using (var jwtSigner = new JwtSigner(ks))
                        {
                            var ciphertext = signer.Sign(input);
                            File.WriteAllText(Path.Combine(kspath, $"{size}.out"), ciphertext);


                            var key = ks.GetPrimaryKey();
                            if (Jwt.AlgForKey(key) != null)
                            {
                                var token = jwtSigner.SignCompact(JObject.Parse(jsonInput));
                                File.WriteAllText(Path.Combine(kspath, $"{size}.jwt"), token);
                            }
                        }
            }

            if (type.Asymmetric)
            {
                var kspath2 = Util.TestDataPath(WRITE_DATA, topDir + ".public", nestDir);
                var writer2 = new FileSystemKeySetWriter(kspath2, overwrite: true);
                using (var ks = new MutableKeySet(kspath))
                {
                    var pubKs   = ks.PublicKey();
                    var success = pubKs.Save(writer2);
                    Expect(success, Is.True);
                }
            }
        }