Beispiel #1
0
        public void Default(string alg)
        {
            CodeActivity <IEncryption> handler = null;

            switch (alg)
            {
            case nameof(AesAlgorithmEncryption):
                handler = new AesAlgorithmEncryption();
                break;

            case nameof(DESAlgorithmEncryption):
                handler = new DESAlgorithmEncryption();
                break;

            case nameof(RC2AlgorithmEncryption):
                handler = new RC2AlgorithmEncryption();
                break;

            case nameof(RijndaelAlgorithmEncryption):
                handler = new RijndaelAlgorithmEncryption();
                break;

            case nameof(TripleDESAlgorithmEncryption):
                handler = new TripleDESAlgorithmEncryption();
                break;

#if NET5_0
            case nameof(AesGcmAlgorithmEncryption):
                handler = new AesGcmAlgorithmEncryption();
                break;
#endif
            }

            var text         = Guid.NewGuid().ToString();
            var secureString = new NetworkCredential("", CryptoKey).SecurePassword;

            var activity = new TextEncryption()
            {
                Algorithm = new ActivityFunc <IEncryption>()
                {
                    Handler = handler
                },
                Key = new InArgument <SecureString>(_ => secureString)
            };

            var encrypted = WorkflowTester.CompileAndInvoke(activity, GetArgs(text));
            Assert.IsNotNull(encrypted);
            Assert.AreNotEqual(text, encrypted);

            activity.Action = Core.Enums.CryptoActions.Decrypt;
            var decrypted = WorkflowTester.CompileAndInvoke(activity, GetArgs(encrypted));
            Assert.IsNotNull(decrypted);
            Assert.AreNotEqual(encrypted, decrypted);
            Assert.AreEqual(text, decrypted);
        }
        public void Default(string alg)
        {
            CodeActivity <IEncryption> handler = null;

            switch (alg)
            {
            case nameof(AesAlgorithmEncryption):
                handler = new AesAlgorithmEncryption();
                break;

            case nameof(DESAlgorithmEncryption):
                handler = new DESAlgorithmEncryption();
                break;

            case nameof(RC2AlgorithmEncryption):
                handler = new RC2AlgorithmEncryption();
                break;

            case nameof(RijndaelAlgorithmEncryption):
                handler = new RijndaelAlgorithmEncryption();
                break;

            case nameof(TripleDESAlgorithmEncryption):
                handler = new TripleDESAlgorithmEncryption();
                break;
            }

            var dt = DataTableHelper.CreateDataTable <object>(6, new[]
            {
                new object[] { "Brazil", null, DBNull.Value, 1, "Latin", "America" },
                new object[] { "Canada", "", DateTime.Today, 0, "North", "America" }
            });

            var activity = new DataTableEncryption()
            {
                Algorithm = new ActivityFunc <IEncryption>()
                {
                    Handler = handler
                },
                ParallelProcessing = false,
                Key = new InArgument <string>(CryptoKey)
            };

            var encrypted = WorkflowTester.Invoke(activity, GetArgs(dt));

            var row = encrypted.Rows[0];

            CollectionAssert.AreNotEqual(new object[] { "Brazil", 1, "Latin", "America" }, new object[] { row["Col0"], row["Col3"], row["Col4"], row["Col5"] });
            CollectionAssert.AreEqual(new object[] { DBNull.Value, DBNull.Value }, new object[] { row["Col1"], row["Col2"] });

            row = encrypted.Rows[1];
            CollectionAssert.AreNotEqual(new object[] { "Canada", DateTime.Today, 0, "North", "America" }, new object[] { row["Col0"], row["Col2"], row["Col3"], row["Col4"], row["Col5"] });
            Assert.AreEqual("", row[1]);

            activity.Action = Core.Enums.CryptoActions.Decrypt;
            var decrypted = WorkflowTester.Invoke(activity, GetArgs(encrypted));

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    var dr = dt.Rows[i];
                    if (dr.IsNull(j))
                    {
                        Assert.AreEqual(dr[j], decrypted.Rows[i][j]);
                    }
                    else
                    {
                        Assert.AreEqual(dr[j].ToString(), decrypted.Rows[i][j]);
                    }
                }
            }
        }