コード例 #1
0
        public void EncryptMultipleKeys()
        {
            #region Arrange

            var alice    = EllipticCurveCryptographer.CreateKeyPair(true);
            var bob      = EllipticCurveCryptographer.CreateKeyPair(true);
            var guenther = EllipticCurveCryptographer.CreateKeyPair(true);

            var paramter = new HybridEncryption.EncryptionParameter()
            {
                PublicKeys = new[] { alice, bob, guenther }
            };

            #endregion

            #region Act

            using (var input = File.OpenRead(this.InputFile))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, paramter);
                }

            #endregion

            #region Assert

            Assert.That(FileOperation.HasFileSignature(this.OutputFile), "HasFileSignature");
            Assert.Pass("No Exception occur");

            #endregion
        }
コード例 #2
0
        public void EncryptIsCanceled()
        {
            #region Arrange

            var alice = EllipticCurveCryptographer.CreateKeyPair(true);

            var progressValues = new List <double>();
            var multiplier     = 10;

            var paramter = new HybridEncryption.EncryptionParameter()
            {
                PublicKeys = new[] { alice },
                Progress   = d => progressValues.Add(d),
                IsCanceled = () => true,
            };

            #endregion

            #region Act

            using (var input = new MemoryStream(new byte[SymmetricEncryption.BufferSize * multiplier]))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, paramter);
                }

            #endregion

            #region Assert

            Assert.That(progressValues.Count, Is.EqualTo(0));

            #endregion
        }
コード例 #3
0
        public void HybridEncryption_FilePath()
        {
            var myPrivateKeyJson = @"
{
   ""PrivateKey"":""NquxhQX9cmWkyDulDIm6OEzty5roXQHApdJInL4gPQbmkXqrVBHhkA=="",
   ""PublicKey"":{
      ""Qx"":""tS37fNpfdy5diNusCoalxUn0HOdjqJk2OybUA9jy8HnzCSg0rFi3bA=="",
      ""Qy"":""sYIRXtP1j3tspMyJOeuCDdG4Ifm3DKC+yIHOFyLUTt8R4z0OxWpLqg==""
   },
   ""InculdePrivateKey"":true
}
";
            var myPrivateKey     = EcKeyPair.FromJson(myPrivateKeyJson);
            var bobPublicAns1Key = EcKeyPair.CreateFromAnsi(Convert.FromBase64String("BFEECnHOtY1L3He8vwsH0ahiDZZzavjxZzciXYXrzaNP1Zn/x1sL+4lvOpktdaZSjgWH/X2JI1rAqBVl7NO3R0UWJ4WtKnrGa5IhSiW0oC7s2lU="));

            File.WriteAllText(this.InputFile, "My Stuff");

            var encryptionParameter = new HybridEncryption.EncryptionParameter
            {
                PublicKeys = new[] { myPrivateKey.ExportPublicKey(), bobPublicAns1Key.ExportPublicKey() },
            };

            HybridEncryption.Encrypt(this.InputFile, this.EncryptedFile, encryptionParameter);

            var decryptionParameter = new HybridEncryption.DecryptionParameter
            {
                PrivateKey = myPrivateKey,
            };
            var info = HybridEncryption.Decrypt(this.EncryptedFile, this.PlainFile, decryptionParameter);

            Console.Out.WriteLine(info.FileName);
            Console.Out.WriteLine(File.ReadAllText(this.PlainFile));
        }
コード例 #4
0
        public void EncryptMultipleKeys()
        {
            #region Arrange

            var ecKeyPairInfos      = Encryption.NitroKey.EllipticCurveCryptographer.GetEcKeyPairInfos();
            var encryptionParameter = new HybridEncryption.EncryptionParameter
            {
                PublicKeys = ecKeyPairInfos.Select(info => info.PublicKey.ExportPublicKey()),
            };

            #endregion

            #region Act

            using (var input = File.OpenRead(this.InputFile))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, encryptionParameter);
                }

            #endregion

            #region Assert

            Assert.That(FileOperation.HasFileSignature(this.OutputFile), "HasFileSignature");
            Assert.Pass("No Exception occur");

            #endregion
        }
コード例 #5
0
        public void EncryptAndDecrypt()
        {
            #region Arrange

            var alice = EllipticCurveCryptographer.CreateKeyPair(true);

            var encryptionParameter = new HybridEncryption.EncryptionParameter()
            {
                PublicKeys = new[] { alice.ExportPublicKey() },
            };

            var decryptionParameter = new HybridEncryption.DecryptionParameter()
            {
                PrivateKey = alice,
            };

            #endregion

            #region Act

            using (var input = File.OpenRead(this.InputFile))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, encryptionParameter);
                }

            using (var input = File.OpenRead(this.OutputFile))
                using (var output = File.Create(this.ResultFile))
                {
                    HybridEncryption.Decrypt(input, output, decryptionParameter);
                }

            #endregion

            #region Assert

            var inputData  = File.ReadAllBytes(this.InputFile);
            var outputData = File.ReadAllBytes(this.OutputFile);
            var resultData = File.ReadAllBytes(this.ResultFile);

            Assert.That(FileOperation.HasFileSignature(this.OutputFile), "HasFileSignature");
            Assert.That(inputData.Length, Is.LessThan(outputData.Length), "Input file is smaller than output file");
            Assert.That(outputData, Is.Not.EquivalentTo(resultData), "Encrypted file is not equal to plain file");
            Assert.That(inputData.Length, Is.EqualTo(resultData.Length), "size of plain file is equal to encrypted file");
            Assert.That(inputData, Is.EquivalentTo(resultData), "plain file is equal to encrypted file");

            #endregion
        }
コード例 #6
0
        public void EncryptAndDecryptMultipleKeys()
        {
            #region Arrange

            var ecKeyPairInfos      = Encryption.NitroKey.EllipticCurveCryptographer.GetEcKeyPairInfos().First();
            var encryptionParameter = new HybridEncryption.EncryptionParameter()
            {
                PublicKeys = new[] { ecKeyPairInfos.PublicKey.ExportPublicKey() }
            };
            var decrptionParameter = new HybridEncryption.DecryptionParameter
            {
                Password = Constants.TestPin
            };

            #endregion

            #region Act

            using (var input = File.OpenRead(this.InputFile))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, encryptionParameter);
                }

            using (var input = File.OpenRead(this.OutputFile))
                using (var output = File.Create(this.ResultFile))
                {
                    HybridEncryption.Decrypt(input, output, decrptionParameter);
                }

            #endregion

            #region Assert

            var inputData  = File.ReadAllBytes(this.InputFile);
            var outputData = File.ReadAllBytes(this.OutputFile);
            var resultData = File.ReadAllBytes(this.ResultFile);

            Assert.That(inputData.Length, Is.LessThan(outputData.Length), "Input file is smaller than output file");
            Assert.That(outputData, Is.Not.EquivalentTo(resultData), "Encrypted file is not equal to plain file");
            Assert.That(FileOperation.HasFileSignature(this.OutputFile), "HasFileSignature");
            Assert.That(inputData.Length, Is.EqualTo(resultData.Length), "size of plain file is equal to encrypted file");
            Assert.That(inputData, Is.EquivalentTo(resultData), "plain file is equal to encrypted file");

            #endregion
        }
コード例 #7
0
        public void EncryptAndDecryptWithFilename()
        {
            #region Arrange

            var alice = EllipticCurveCryptographer.CreateKeyPair(true);

            var encryptionParameter = new HybridEncryption.EncryptionParameter()
            {
                PublicKeys = new[] { alice.ExportPublicKey() },
                Filename   = Guid.NewGuid().ToString(),
            };

            var decryptionParameter = new HybridEncryption.DecryptionParameter()
            {
                PrivateKey = alice,
            };

            #endregion

            #region Act

            using (var input = File.OpenRead(this.InputFile))
                using (var output = File.Create(this.OutputFile))
                {
                    HybridEncryption.Encrypt(input, output, encryptionParameter);
                }

            DecryptInfo info;
            using (var input = File.OpenRead(this.OutputFile))
                using (var output = File.Create(this.ResultFile))
                {
                    info = HybridEncryption.Decrypt(input, output, decryptionParameter);
                }

            #endregion

            #region Assert

            Assert.That(encryptionParameter.Filename, Is.EqualTo(info.FileName), "is decrypted filename equal to input filename");

            #endregion
        }