Skip to content

Commit 96b97f9

Browse files
Fixing the date time configuration
Treating strings containing date time as strings
1 parent 52a978b commit 96b97f9

File tree

6 files changed

+49
-10
lines changed

6 files changed

+49
-10
lines changed

Mastercard.Developer.ClientEncryption.Core/Encryption/FieldLevelEncryption.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public static string EncryptPayload(string payload, FieldLevelEncryptionConfig c
3333
try
3434
{
3535
// Parse the given payload
36-
var payloadToken = JToken.Parse(payload);
36+
var payloadToken = JsonUtils.ParsePayload(payload);
3737

3838
// Perform encryption (if needed)
3939
foreach (var jsonPathIn in config.EncryptionPaths.Keys)
@@ -71,7 +71,7 @@ public static string DecryptPayload(string payload, FieldLevelEncryptionConfig c
7171
try
7272
{
7373
// Parse the given payload
74-
var payloadToken = JToken.Parse(payload);
74+
var payloadToken = JsonUtils.ParsePayload(payload);
7575

7676
// Perform decryption (if needed)
7777
foreach (var jsonPathIn in config.DecryptionPaths.Keys)
@@ -199,7 +199,7 @@ private static JToken DecryptPayloadPath(JToken payloadToken, string jsonPathIn,
199199
if ("$".Equals(jsonPathOut))
200200
{
201201
// The decrypted JSON is the new body
202-
return JToken.Parse(decryptedValue);
202+
return JsonUtils.ParsePayload(decryptedValue);
203203
}
204204
else
205205
{

Mastercard.Developer.ClientEncryption.Core/Encryption/JWE/JweEncryption.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static string EncryptPayload(string payload, JweConfig config)
1717
try
1818
{
1919
// Parse the given payload
20-
var payloadToken = JToken.Parse(payload);
20+
var payloadToken = JsonUtils.ParsePayload(payload);
2121

2222
// Encrypt
2323
foreach (var entry in config.EncryptionPaths)
@@ -40,7 +40,7 @@ public static string DecryptPayload(string payload, JweConfig config)
4040
try
4141
{
4242
// Parse the given payload
43-
var payloadToken = JToken.Parse(payload);
43+
var payloadToken = JsonUtils.ParsePayload(payload);
4444

4545
// Perform decryption
4646
foreach (var entry in config.DecryptionPaths)
@@ -78,7 +78,7 @@ private static JToken DecryptPayloadPath(JToken payload, string jsonPathIn, stri
7878

7979
if ("$".Equals(jsonPathOut))
8080
{
81-
return JToken.Parse(decryptedValue);
81+
return JsonUtils.ParsePayload(decryptedValue);
8282
}
8383

8484
JsonUtils.CheckOrCreateOutObject(payload, jsonPathOut);

Mastercard.Developer.ClientEncryption.Core/Utils/JsonUtils.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using Newtonsoft.Json.Linq;
33
using System.Text.RegularExpressions;
4+
using Newtonsoft.Json;
45

56
namespace Mastercard.Developer.ClientEncryption.Core.Utils
67
{
@@ -76,6 +77,18 @@ internal static bool IsPathDefinite(string path)
7677
{
7778
return !path.Contains("*") && !path.Contains("..") && !path.Contains("@") && !path.Contains(",");
7879
}
80+
/// <summary>
81+
/// Parses the Json payload with specified parameters
82+
/// </summary>
83+
/// <returns>payloadToken</returns>
84+
internal static JToken ParsePayload(string payload)
85+
{
86+
var jsonReader = new JsonTextReader(new System.IO.StringReader(payload)) {
87+
DateParseHandling = DateParseHandling.None
88+
};
89+
90+
return JToken.ReadFrom(jsonReader);
91+
}
7992

8093
internal static void CheckOrCreateOutObject(JToken payloadObject, string jsonPathOut)
8194
{

Mastercard.Developer.ClientEncryption.RestSharpV2/Interceptors/RestSharpEncryptionInterceptor.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
using System;
22
using System.Linq;
33
using System.Text.Json;
4-
using System.Reflection;
54
using Mastercard.Developer.ClientEncryption.Core.Encryption;
65
using Header = RestSharp.HeaderParameter;
76
using RestSharp;
8-
using System.Collections.ObjectModel;
97
using System.Collections.Generic;
108

9+
1110
namespace Mastercard.Developer.ClientEncryption.RestSharpV2.Interceptors
1211
{
1312
/// <summary>

Mastercard.Developer.ClientEncryption.Tests/NetCore2/Test/TestUtils.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ internal static void AssertDecryptedJweEquals(string expectedPayload, string enc
5454

5555
internal static void AssertPayloadEquals(string expectedPayload, string payload)
5656
{
57-
var expectedPayloadToken = JToken.Parse(expectedPayload);
58-
var payloadToken = JToken.Parse(payload);
57+
var expectedPayloadToken = JsonUtils.ParsePayload(expectedPayload);
58+
var payloadToken = JsonUtils.ParsePayload(payload);
5959
Assert.AreEqual(expectedPayloadToken.ToString(), payloadToken.ToString());
6060
}
6161

Mastercard.Developer.ClientEncryption.Tests/NetCore2/Utils/JsonUtilsTest.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using Mastercard.Developer.ClientEncryption.Core.Utils;
33
using Microsoft.VisualStudio.TestTools.UnitTesting;
4+
using Newtonsoft.Json.Linq;
45

56
namespace Mastercard.Developer.ClientEncryption.Tests.NetCore.Utils
67
{
@@ -131,5 +132,31 @@ public void TestGetJsonElementKey_ShouldThrowInvalidOperationException_WhenNoKey
131132
throw;
132133
}
133134
}
135+
136+
[TestMethod]
137+
public void TestParsePayload()
138+
{
139+
// GIVEN
140+
const string payload = "{\"num\":123, timestamp:\"2024-02-12T00:00:00-05:00\"}";
141+
JToken token = JsonUtils.ParsePayload(payload);
142+
143+
// WHEN
144+
string num = token.SelectToken("num").ToString();
145+
string timestamp = token.SelectToken("timestamp").ToString();
146+
// THEN
147+
Assert.AreEqual(num, "123");
148+
Assert.AreEqual(timestamp, "2024-02-12T00:00:00-05:00");
149+
150+
// WHEN
151+
var defaultToken = JToken.Parse(payload);
152+
num = defaultToken.SelectToken("num").ToString();
153+
timestamp = defaultToken.SelectToken("timestamp").ToString();
154+
155+
// THEN
156+
Assert.AreEqual(num, "123");
157+
Assert.AreNotEqual(timestamp, "2024-02-12T00:00:00-05:00");
158+
159+
160+
}
134161
}
135162
}

0 commit comments

Comments
 (0)