Пример #1
0
        static void Main(string[] args)
        {
            // Create 3 new keys with randomly generated key material
            Keyring.GlobalKeyring.Add("Sensitive Information", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
            Keyring.GlobalKeyring.Add("Semi-Sensitive Information", TripleDesEncryptionKey.Create());
            Keyring.GlobalKeyring.Add("Non-Sensitive Information", TripleDesEncryptionKey.Create());


            // Create new instances of types to encrypt and fill them with something
            var encryptedObjBinaryFormatter = new SampleObjectBinaryFormatter().AsEncrypted();
            var encryptedObjDataContract    = new SampleObjectDataContract().AsEncrypted();
            var encryptedObjJson            = new SampleObjectJson().AsEncrypted();

            encryptedObjBinaryFormatter.Integer = encryptedObjDataContract.Integer = encryptedObjJson.Integer = 12;
            encryptedObjBinaryFormatter.String  = encryptedObjDataContract.String = encryptedObjJson.String = "abc";

            Console.WriteLine("Before serialize: " + encryptedObjBinaryFormatter.Integer + ", '" + encryptedObjBinaryFormatter.String + "'");


            // Serialize using each of the 3 mainstream serializers
            var bfProxy   = TestBinaryFormatter(encryptedObjBinaryFormatter);
            var dcProxy   = TestDataContractSerializer(encryptedObjDataContract);
            var jsonProxy = TestJsonSerializer(encryptedObjJson);

            Console.WriteLine("After deserialize (BinaryFormatter): " + bfProxy.Integer + ", '" + bfProxy.String + "'");
            Console.WriteLine("After deserialize (DataContract): " + dcProxy.Integer + ", '" + dcProxy.String + "'");
            Console.WriteLine("After deserialize (JSON): " + jsonProxy.Integer + ", '" + jsonProxy.String + "'");

            Console.ReadLine();
        }
Пример #2
0
        /* Scenario:
         * Health Information System application with 3 roles and 2 users.
         *
         * Roles (Business Cases):
         * - "Doctor Only" -> Only Dr. Linda McDonald can see this information
         * - "Restricted" -> Only the doctor and nurse(s) can see this information
         * - "Office" -> Office staff can see this information
         *
         * It is assumed that patient names are not sensitive information.
         */

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            if (e.Args.Any() && e.Args[0] == "/generate")
            {
                var sensitiveKey         = new AntiPrintScreenKey(EncryptionKey.KeyAppliesTo.Both, AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
                var somewhatSensitiveKey = TripleDesEncryptionKey.Create();
                var nonSensitiveKey      = TripleDesEncryptionKey.Create();

                var keyring = new Keyring();
                keyring.Add("Doctor Only", sensitiveKey);
                keyring.Add("Restricted", somewhatSensitiveKey);
                keyring.Add("Office", nonSensitiveKey);

                // John's Keyring
                using (var johnFs = new FileStream("jthomas.keyring", FileMode.Create))
                {
                    keyring.ExportToStream(johnFs, "Restricted", "Office");
                }

                // Linda's Keyring
                using (var lindaFs = new FileStream("lmcdonald.keyring", FileMode.Create))
                {
                    keyring.ExportToStream(lindaFs);
                }
            }
            else
            {
                new RecordList().ShowDialog();
            }
            this.Shutdown();
        }
Пример #3
0
        private static void RunClient()
        {
            Keyring.GlobalKeyring.Add("Sensitive Information", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
            Keyring.GlobalKeyring.Add("Semi-Sensitive Information", AesEncryptionKey.Create());
            Keyring.GlobalKeyring.Add("Non-Sensitive Information", TripleDesEncryptionKey.Create());

            // Start Client
            var channelFactory = new ChannelFactory <IService>(new BasicHttpBinding());
            var endpoint       = new EndpointAddress(Url);
            var serviceObject  = channelFactory.CreateChannel(endpoint);

            var patients = GetPatients();

            for (int i = 0; i < patients.Count; i++)
            {
                Console.WriteLine("[{0}] Sending {1} {2} to server.", i, patients[i].FirstName, patients[i].LastName);
                serviceObject.SetValue(i, patients[i]);
            }

            var rng        = new Random((int)DateTime.Now.Ticks);
            var patientIdx = rng.Next(0, patients.Count - 1);

            Console.WriteLine();
            Console.WriteLine("Requesting name from index {0}: {1}", patientIdx, serviceObject.ServerGetName(patientIdx));
            Console.WriteLine();

            var patient = serviceObject.GetValue(patientIdx);

            Console.WriteLine("Got back {0} {1} from server.", patient.FirstName, patient.LastName);

            Console.WriteLine("Press [ENTER] to quit client.");
            Console.ReadLine();
        }
        public static void ClassInitialize(TestContext context)
        {
            GeneratedKeyring.Add("AES", AesEncryptionKey.Create());
            GeneratedKeyring.Add("DES", TripleDesEncryptionKey.Create());
            GeneratedKeyring.Add("AES-DES", AesEncryptionKey.Create());

            // Warmup
            var types = DataWrapperExtensions.GetAllEncryptableTypes(true);
        }
Пример #5
0
        public void TestInitialize()
        {
            var generatedKeyring = new Keyring();

            generatedKeyring.Add("AES", AesEncryptionKey.Create());
            generatedKeyring.Add("DES", TripleDesEncryptionKey.Create());
            generatedKeyring.Add("AES-DES", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));

            BaseTestObject = new TestableDataContract();
            BaseTestObject.Populate();

            GeneratedTestObject = new TestableDataContract().AsEncrypted(generatedKeyring);
            GeneratedTestObject.Populate();
        }
Пример #6
0
        static void Main(string[] args)
        {
            Keyring.GlobalKeyring.Add("Sensitive Information", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
            Keyring.GlobalKeyring.Add("Semi-Sensitive Information", AesEncryptionKey.Create());
            Keyring.GlobalKeyring.Add("Non-Sensitive Information", TripleDesEncryptionKey.Create());

            var examplePatients = GetExamplePatients();

            using (var session = GetSession())
            {
                List <Patient> patients = new List <Patient>();

                ITransaction transaction;
                transaction = session.BeginTransaction();
                foreach (var patient in session.Query <Patient>())
                {
                    session.Delete(patient);
                }
                transaction.Commit();

                Keyring.GlobalKeyring.Lock();

                transaction = session.BeginTransaction();
                foreach (var patient in examplePatients)
                {
                    session.Save(patient);
                }
                transaction.Commit();

                patients = session.Query <Patient>().ToList();

                Console.WriteLine("WHILE KEYRING IS LOCKED:");
                foreach (var patient in patients)
                {
                    Console.WriteLine("{0} {1} - SSN#{2}", patient.FirstName, patient.LastName, patient.SSN);
                }

                Console.WriteLine("WHILE KEYRING IS UNLOCKED:");
                Keyring.GlobalKeyring.Unlock();
                foreach (var patient in patients)
                {
                    Console.WriteLine("{0} {1} - SSN#{2}", patient.FirstName, patient.LastName, patient.SSN);
                }

                Console.ReadKey();
            }
        }
Пример #7
0
        private static void DataGeneration()
        {
            Keyring.GlobalKeyring.Add("Sensitive Information", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
            Keyring.GlobalKeyring.Add("Semi-Sensitive Information", AesEncryptionKey.Create());
            Keyring.GlobalKeyring.Add("Non-Sensitive Information", TripleDesEncryptionKey.Create());

            using (var db = new DatabaseContext())
            {
                db.Patients.RemoveRange(db.Patients);
                foreach (var dataRow in SampleDataCsv.Split('\n'))
                {
                    var record = dataRow.Split(',');

                    var newPatient = new Patient().AsEncrypted();
                    newPatient.FirstName = record[0];
                    newPatient.LastName  = record[1];
                    newPatient.ALT       = double.Parse(record[2]);
                    newPatient.AST       = double.Parse(record[3]);
                    newPatient.BMI       = double.Parse(record[4]);
                    newPatient.CPeptide  = double.Parse(record[5]);
                    newPatient.Glucose   = double.Parse(record[6]);
                    newPatient.HDL       = double.Parse(record[7]);
                    newPatient.SSN       = record[8];
                    newPatient.DOB       = DateTime.Parse(record[9]);
                    newPatient.Collected = DateTime.Parse(record[10]);
                    db.Patients.Attach(newPatient);

                    db.Patients.Add(newPatient);
                }
                db.SaveChanges();

                using (var keyringStream = new FileStream("keyring.dat", FileMode.OpenOrCreate))
                {
                    Keyring.GlobalKeyring.ExportToStream(keyringStream);
                }
            }
        }
Пример #8
0
 public void Initialize()
 {
     Keyring.GlobalKeyring.Add("AES-DES", AesEncryptionKey.Create(TripleDesEncryptionKey.Create()));
     Keyring.GlobalKeyring.Add("DES", TripleDesEncryptionKey.Create());
     Keyring.GlobalKeyring.Add("AES", AesEncryptionKey.Create());
 }