public void Net2JavaAddressed() { String text = "This is a secret message from Alice for Bob written at " + DateTime.Now.ToString(); Stream msg = aliceSealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(text)), new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/old_bobs_public_key.etk")))); FileStream msgFile = new FileStream(GetAbsoluteTestFilePath("message_from_alice_for_bob.msg"), FileMode.OpenOrCreate); msg.CopyTo(msgFile); String output = RunJava("be.smals.ehealth.etee.crypto.examples.Unseal"); Assert.IsTrue(output.Contains("NIHII=00000000101")); Assert.IsTrue(output.Contains(text)); }
private void NonAddressed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice"; SecretKey key = new SecretKey("btSefztkXjZmlZyHQIumLA==", "aaUnRynIwd3GFQmhXfW+VQ=="); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), key); UnsealResult result = unsealer.Unseal(output, key); Console.WriteLine(result.SecurityInformation.ToString()); output.Close(); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.IsTrue(result.IsNonRepudiatable); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.IsNull(result.SecurityInformation.Encryption.Subject); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
private void Addressed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice for Bob"; //Get ETK EncryptionToken receiver = new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk"))); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), receiver); UnsealResult result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); output.Close(); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.IsTrue(result.IsNonRepudiatable); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(bob["825373489"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
public void Net2JavaAddressedLTLevelInSteps() { String text = "This is a secret message from Alice for Bob written at " + DateTime.Now.ToString(); var tsa = new TimeStampAuthorityClient(new StsBinding(), new EndpointAddress("https://services-acpt.ehealth.fgov.be/TimestampAuthority/v2")); tsa.Endpoint.Behaviors.Remove <ClientCredentials>(); tsa.Endpoint.Behaviors.Add(new OptClientCredentials()); tsa.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindByThumbprint, "566fd3fe13e3ab185a7224bcec8ad9cffbf9e9c2"); IDataSealer sealer = EidDataSealerFactory.Create(Level.B_Level); Stream msg = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(text)), new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk")))); IDataCompleter completer = DataCompleterFactory.Create(Level.LT_Level, new EHealthTimestampProvider(tsa)); Stream msg2 = completer.Complete(msg); FileStream msgFile = new FileStream(GetAbsoluteTestFilePath("message_to_bob.msg"), FileMode.OpenOrCreate); using (msgFile) { msg2.CopyTo(msgFile); } String output = RunJava("etee.crypto.test.Unseal MANDATORY"); Assert.IsTrue(output.Contains(text)); }
public void Net2JavaAddressedBLevel() { String text = "This is a secret message from Alice for Bob written at " + DateTime.Now.ToString(); IDataSealer sealer = EidDataSealerFactory.Create(Level.B_Level); Stream msg = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(text)), new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk")))); FileStream msgFile = new FileStream(GetAbsoluteTestFilePath("message_to_bob.msg"), FileMode.OpenOrCreate); using (msgFile) { msg.CopyTo(msgFile); } String output = RunJava("etee.crypto.test.Unseal NONE"); //should be OK Assert.IsTrue(output.Contains(text)); try { output = RunJava("etee.crypto.test.Unseal MANDATORY"); //should fail, with exception Assert.Fail(); } catch (InvalidOperationException) { } }
public void Size31KFile() { Random rand = new Random(); byte[] buffer = new byte[1024]; //1k blocks String file = Path.GetTempFileName(); FileStream hudgeFile = new FileStream(file, FileMode.Open); try { //Write random stuff into it, exactly 32K for (int i = 0; i < 31; i++) { rand.NextBytes(buffer); hudgeFile.Write(buffer, 0, buffer.Length); } rand.NextBytes(buffer); hudgeFile.Write(buffer, 0, 512); //Rest hudgeFile.Position = 0; //Get ETK EncryptionToken receiver = new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk"))); //Seal IDataSealer sealer = EhDataSealerFactory.Create(Level.B_Level, alice); Stream output = sealer.Seal(hudgeFile, receiver); hudgeFile.Position = 0; UnsealResult result; using (output) { //Unseal again IDataUnsealer unsealer = DataUnsealerFactory.Create(null, alice, bob); result = unsealer.Unseal(output); } Console.WriteLine(result.SecurityInformation.ToString()); //check the lenth and the first bytes Assert.AreEqual(hudgeFile.Length, result.UnsealedData.Length); Assert.AreEqual(hudgeFile.ReadByte(), result.UnsealedData.ReadByte()); Assert.AreEqual(hudgeFile.ReadByte(), result.UnsealedData.ReadByte()); Assert.AreEqual(hudgeFile.ReadByte(), result.UnsealedData.ReadByte()); Assert.AreEqual(hudgeFile.ReadByte(), result.UnsealedData.ReadByte()); Assert.AreEqual(hudgeFile.ReadByte(), result.UnsealedData.ReadByte()); result.UnsealedData.Dispose(); } finally { hudgeFile.Close(); File.Delete(file); } }
public void Net2JavaEid() { String text = "This is a secret message from Alice for Bob written at " + DateTime.Now.ToString(); IDataSealer sealer = EidDataSealerFactory.Create(Level.B_Level, false); Stream msg = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(text)), new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk")))); FileStream msgFile = new FileStream(GetAbsoluteTestFilePath("message_to_bob.msg"), FileMode.OpenOrCreate); using (msgFile) { msg.CopyTo(msgFile); } String output = RunJava("etee.crypto.test.Verify EID"); Assert.IsTrue(output.Contains(text)); }
private void Mixed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice to everybody"; SecretKey key = new SecretKey("btSefztkXjZmlZyHQIumLA==", "aaUnRynIwd3GFQmhXfW+VQ=="); EncryptionToken receiver1 = new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk"))); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), key, receiver1); UnsealResult result = unsealer.Unseal(output, key); Console.WriteLine(result.SecurityInformation.ToString()); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.IsNull(result.SecurityInformation.Encryption.Subject); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); output.Position = 0; result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(bob["825373489"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
public void MultiAddressed() { String str = "This is a secret message from Alice for Bob and Herself"; //Get ETK EncryptionToken receiver1 = new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("bob/bobs_public_key.etk"))); EncryptionToken receiver2 = new EncryptionToken(Utils.ReadFully(GetAbsoluteTestFilePath("alice/alices_public_key.etk"))); IDataSealer sealer = EhDataSealerFactory.Create(Level.B_Level, alice); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), receiver1, receiver2); IDataUnsealer unsealer = DataUnsealerFactory.Create(null, alice, bob); UnsealResult result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); output.Position = 0; MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.IsTrue(result.IsNonRepudiatable); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); unsealer = DataUnsealerFactory.Create(null, alice); result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); output.Position = 0; stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.IsTrue(result.IsNonRepudiatable); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(alice["1204544406096826217265"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); unsealer = DataUnsealerFactory.Create(null, bob); result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); output.Position = 0; output.Close(); stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.IsTrue(result.IsNonRepudiatable); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(bob["825373489"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
private void NonAddressed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice"; SecretKey key = new SecretKey("btSefztkXjZmlZyHQIumLA==", "aaUnRynIwd3GFQmhXfW+VQ=="); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), key); UnsealResult result = unsealer.Unseal(output, key); Console.WriteLine(result.SecurityInformation.ToString()); output.Close(); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.IsNull(result.SecurityInformation.Encryption.Subject); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
private void Mixed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice to everybody"; SecretKey key = new SecretKey("btSefztkXjZmlZyHQIumLA==", "aaUnRynIwd3GFQmhXfW+VQ=="); EncryptionToken receiver1 = new EncryptionToken(Utils.ReadFully("../../bob/bobs_public_key.etk")); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), key, receiver1); UnsealResult result = unsealer.Unseal(output, key); Console.WriteLine(result.SecurityInformation.ToString()); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.IsNull(result.SecurityInformation.Encryption.Subject); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); output.Position = 0; result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(bob["825373489"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }
private void Addressed(IDataSealer sealer, IDataUnsealer unsealer) { String str = "This is a secret message from Alice for Bob"; //Get ETK EncryptionToken receiver = new EncryptionToken(Utils.ReadFully("../../bob/bobs_public_key.etk")); //receiver.Verify(); Stream output = sealer.Seal(new MemoryStream(Encoding.UTF8.GetBytes(str)), receiver); UnsealResult result = unsealer.Unseal(output); Console.WriteLine(result.SecurityInformation.ToString()); output.Close(); MemoryStream stream = new MemoryStream(); Utils.Copy(result.UnsealedData, stream); //Assert.IsInstanceOfType(result.UnsealedData, typeof(WindowsTempFileStream)); Assert.AreEqual(ValidationStatus.Valid, result.SecurityInformation.ValidationStatus); Assert.AreEqual(ETEE::Status.TrustStatus.Unsure, result.SecurityInformation.TrustStatus); Assert.AreEqual(alice["Authentication"].Thumbprint, result.AuthenticationCertificate.Thumbprint); Assert.AreEqual(alice["Authentication"].Thumbprint, result.SigningCertificate.Thumbprint); Assert.AreEqual(bob["825373489"].Thumbprint, result.SecurityInformation.Encryption.Subject.Certificate.Thumbprint); Assert.AreEqual(str, Encoding.UTF8.GetString(stream.ToArray())); Assert.IsNotNull(result.SecurityInformation.ToString()); }