Skip to content
Snippets Groups Projects
Commit cec7e836 authored by Klaus Fischer's avatar Klaus Fischer
Browse files

fix: added content type to encryption

parent 19c67d43
No related branches found
No related tags found
1 merge request!108Bug/1244 cty
......@@ -67,26 +67,26 @@ public class FitEncryption {
}
public string Encrypt(string plainText, string key) {
return _encryptor.Encrypt(key, plainText);
public string Encrypt(string plainText, string key, string contentType) {
return _encryptor.Encrypt(key, plainText, contentType);
}
public string Encrypt(string plain) {
public string Encrypt(string plain, string contentType) {
if (PublicEncryptionKey == null)
throw new InvalidOperationException("PublicKey is not provided");
return Encrypt(plain, PublicEncryptionKey);
return Encrypt(plain, PublicEncryptionKey, contentType);
}
public string Encrypt(byte[] plain, string key) {
return _encryptor.Encrypt(key, plain);
public string Encrypt(byte[] plain, string key, string contentType) {
return _encryptor.Encrypt(key, plain, contentType);
}
public string Encrypt(byte[] plain) {
public string Encrypt(byte[] plain, string contentType) {
if (PublicEncryptionKey == null)
throw new InvalidOperationException("PublicKey is not provided");
return Encrypt(plain, PublicEncryptionKey);
return Encrypt(plain, PublicEncryptionKey, contentType);
}
public async Task<string> CreateRejectSecurityEventToken(Guid submissionId,
......
......@@ -2,6 +2,6 @@ namespace FitConnect.Encryption;
public interface IEncryptor {
public (string plainText, byte[] plainBytes, byte[] tag) Decrypt(List<string> key, string cipher);
public string Encrypt(string key, string plain);
public string Encrypt(string key, byte[] plain);
public string Encrypt(string key, string plain, string contentType);
public string Encrypt(string key, byte[] plain, string contentType);
}
......@@ -29,7 +29,7 @@ public class JoseEncryptor : IEncryptor {
throw new EncryptionException("No matching key found");
}
public string Encrypt(string key, string plain) {
public string Encrypt(string key, string plain, string contentType) {
try {
var jwk = Jwk.FromJson(key, new JsonMapper());
if (!jwk.KeyOps.Contains(EncryptionSettings.KeyOpsWrapKey))
......@@ -41,7 +41,7 @@ public class JoseEncryptor : IEncryptor {
mode: EncryptionSettings.SerializationMode,
extraProtectedHeaders: new Dictionary<string, object> {
{ "kid", jwk.KeyId },
{ "cty", MediaTypeNames.Application.Json }
{ "cty", contentType }
}
);
}
......@@ -50,7 +50,7 @@ public class JoseEncryptor : IEncryptor {
}
}
public string Encrypt(string key, byte[] plain) {
public string Encrypt(string key, byte[] plain, string contentType) {
try {
var jwk = Jwk.FromJson(key, new JsonMapper());
return JWE.EncryptBytes(plain,
......@@ -60,7 +60,7 @@ public class JoseEncryptor : IEncryptor {
mode: EncryptionSettings.SerializationMode,
extraProtectedHeaders: new Dictionary<string, object> {
{ "kid", jwk.KeyId },
{ "cty", MediaTypeNames.Application.Json }
{ "cty", contentType }
}
);
}
......
......@@ -154,7 +154,7 @@ public class Sender : FitConnectClient, ISender {
Logger?.LogInformation("Metadata validation check, done");
Logger?.LogInformation("Sending submission");
var encryptedMeta = Encryption.Encrypt(metadata);
var encryptedMeta = Encryption.Encrypt(metadata, System.Net.Mime.MediaTypeNames.Application.Json);
Logger?.LogTrace("Encrypted metadata: {EncryptedMeta}", encryptedMeta);
submission.EncryptedMetadata = encryptedMeta;
}
......@@ -171,7 +171,7 @@ public class Sender : FitConnectClient, ISender {
if (submission.EncryptedData == null)
if (submission.Data != null)
submission.EncryptedData = Encryption.Encrypt(submission.Data);
submission.EncryptedData = Encryption.Encrypt(submission.Data, submission.DataMimeType!);
await SubmissionService
.SubmitSubmission(submission.Id!, (SubmitSubmissionDto)submission);
......@@ -264,14 +264,14 @@ public class Sender : FitConnectClient, ISender {
Logger?.LogInformation("Metadata validation check, done");
Logger?.LogInformation("Sending submission");
var encryptedMeta = Encryption.Encrypt(metadata);
var encryptedMeta = Encryption.Encrypt(metadata, System.Net.Mime.MediaTypeNames.Application.Json);
Logger?.LogTrace("Encrypted metadata: {EncryptedMeta}", encryptedMeta);
submission.EncryptedMetadata = encryptedMeta;
}
if (submission.EncryptedData == null)
if (submission.Data != null)
submission.EncryptedData = Encryption.Encrypt(submission.Data);
submission.EncryptedData = Encryption.Encrypt(submission.Data, submission.DataMimeType!);
var result = await SubmissionService
.SubmitSubmission(submission.Id!, (SubmitSubmissionDto)submission);
......
......@@ -23,12 +23,13 @@ public class StraightPreEncryptedForwardTest : EndToEndTestBase {
var joseEncryptor = new JoseEncryptor();
var encryptedAttachment =
joseEncryptor.Encrypt(publicKey, File.ReadAllBytes("Test.pdf"));
joseEncryptor.Encrypt(publicKey, File.ReadAllBytes("Test.pdf"),
System.Net.Mime.MediaTypeNames.Application.Pdf);
var data = JsonConvert.SerializeObject(JSON_DATA);
var dataHash = FitEncryption.CalculateHash(data);
var encryptedData = joseEncryptor.Encrypt(publicKey, data);
var encryptedData = joseEncryptor.Encrypt(publicKey, data, System.Net.Mime.MediaTypeNames.Application.Json);
var attachment = Attachment.FromPath("Test.pdf",
System.Net.Mime.MediaTypeNames.Application.Pdf, description: "Simple Test",
......@@ -42,7 +43,7 @@ public class StraightPreEncryptedForwardTest : EndToEndTestBase {
SchemaUri = new Uri(JSON_SCHEMA_URI)
}, dataHash);
var encryptedMetadata = joseEncryptor.Encrypt(publicKey, metadata);
var encryptedMetadata = joseEncryptor.Encrypt(publicKey, metadata, System.Net.Mime.MediaTypeNames.Application.Json);
// Act
......
......@@ -28,7 +28,7 @@ public class FileEncryptionTest {
[Test]
[Order(10)]
public void EncryptFile() {
_encryptedFile = _encryption.Encrypt(_sourceFile);
_encryptedFile = _encryption.Encrypt(_sourceFile, System.Net.Mime.MediaTypeNames.Application.Octet);
}
[Test]
......@@ -66,7 +66,7 @@ public class FileEncryptionTest {
Assert.Throws<EncryptionException>(() => {
var result = new FitEncryption(new List<string>() { "" }, "", null)
.Encrypt("Test", jsonWebKeyString);
.Encrypt("Test", jsonWebKeyString, System.Net.Mime.MediaTypeNames.Text.Plain);
Console.WriteLine(result);
});
}
......
......@@ -45,7 +45,7 @@ public class JweTest {
// Act
var dummyText = JsonConvert.SerializeObject(new { Title = "Value", Content = "content" });
Console.WriteLine(dummyText);
var cypher = engine.Encrypt(dummyText);
var cypher = engine.Encrypt(dummyText, System.Net.Mime.MediaTypeNames.Text.Plain);
Console.WriteLine(cypher);
var plain = engine.Decrypt(cypher);
Console.WriteLine(plain.plainText);
......@@ -64,7 +64,7 @@ public class JweTest {
// Act
var plainBytes = RandomNumberGenerator.GetBytes(8192);
var cypher = engine.Encrypt(plainBytes);
var cypher = engine.Encrypt(plainBytes, System.Net.Mime.MediaTypeNames.Application.Octet);
var plain = engine.Decrypt(cypher);
......@@ -88,7 +88,7 @@ public class JweTest {
"{\"attachments\":[{\"attachmentId\":\"5d055f43-4ad6-4202-822a-f946c3be29a6\",\"description\":\"Just a test\",\"filename\":\"RandomBytes.pdf\",\"hash\":{\"content\":\"8b1042900c2039f65fe6c4cb1bca31e2a7a04b61d3ca7d9ae9fc4077068b82ad5512fa298385b025db70551113b762064444b87737e45e657a71be5b88b06e59\",\"type\":0},\"mimeType\":\"application/pdf\",\"purpose\":0}],\"data\":{\"hash\":null,\"submissionSchema\":{\"mimeType\":0,\"schemaUri\":\"urn:de:fim:leika:leistung:99400048079000\"}}}";
// Act
var encrypted = encryptionEngine.Encrypt(metadata);
var encrypted = encryptionEngine.Encrypt(metadata, System.Net.Mime.MediaTypeNames.Application.Json);
var plain = decryptEngine.Decrypt(encrypted);
// Assert
......@@ -105,7 +105,8 @@ public class JweTest {
// Act
var plainBytes = RandomNumberGenerator.GetBytes(512);
var cypher = engine.Encrypt(Convert.ToBase64String(plainBytes));
var cypher = engine.Encrypt(Convert.ToBase64String(plainBytes),
System.Net.Mime.MediaTypeNames.Application.Octet);
var plain = engine.Decrypt(cypher);
// Assert
......
......@@ -69,17 +69,18 @@ public class RoutingTests {
route.DestinationSignature.Should().NotBeNull();
}
[Ignore("Server does not return valid results")]
[TestCase("99123456760610", "931")]
public void FindDestination_WithAreaId(string leika, string areaId) {
// Arrange
// Act
var routes = _router.FindDestinationsAsync(leika, areaId: areaId).Result;
// Assert
routes.Count.Should().BeGreaterThan(0);
var route = routes.First();
route.DestinationSignature.Should().NotBeNull();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment