Skip to content

Commit 0d002d3

Browse files
authored
[C#][restsharp] Removed warnings in HTTP signing config (#16128)
* Removed warnings in HTTP signing config for restsharp C# * fix
1 parent a729cb4 commit 0d002d3

File tree

9 files changed

+216
-153
lines changed

9 files changed

+216
-153
lines changed

modules/openapi-generator/src/main/resources/csharp/HttpSigningConfiguration.mustache

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ namespace {{packageName}}.Client
1818
/// </summary>
1919
public class HttpSigningConfiguration
2020
{
21-
#region
2221
/// <summary>
2322
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
2423
/// </summary>
@@ -27,9 +26,7 @@ namespace {{packageName}}.Client
2726
HashAlgorithm = HashAlgorithmName.SHA256;
2827
SigningAlgorithm = "PKCS1-v15";
2928
}
30-
#endregion
3129

32-
#region Properties
3330
/// <summary>
3431
///Gets the Api keyId
3532
/// </summary>
@@ -70,18 +67,13 @@ namespace {{packageName}}.Client
7067
/// </summary>
7168
public int SignatureValidityPeriod { get; set; }
7269

73-
#endregion
74-
75-
#region enum
7670
private enum PrivateKeyType
7771
{
7872
None = 0,
7973
RSA = 1,
8074
ECDSA = 2,
8175
}
82-
#endregion
8376

84-
#region Methods
8577
/// <summary>
8678
/// Gets the Headers for HttpSigning
8779
/// </summary>
@@ -183,12 +175,12 @@ namespace {{packageName}}.Client
183175

184176
if (HashAlgorithm == HashAlgorithmName.SHA256)
185177
{
186-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
178+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
187179
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
188180
}
189181
else if (HashAlgorithm == HashAlgorithmName.SHA512)
190182
{
191-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
183+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
192184
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
193185
}
194186
else
@@ -256,7 +248,7 @@ namespace {{packageName}}.Client
256248
}
257249
//Concatenate headers value separated by new line
258250
var headerValuesString = string.Join("\n", headerValuesList);
259-
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
251+
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
260252
string headerSignatureStr = null;
261253
var keyType = GetKeyType(KeyString);
262254

@@ -292,11 +284,27 @@ namespace {{packageName}}.Client
292284
return HttpSignedRequestHeader;
293285
}
294286

295-
private byte[] GetStringHash(string hashName, string stringToBeHashed)
287+
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
296288
{
297-
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
298-
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
299-
var stringHash = hashAlgorithm.ComputeHash(bytes);
289+
HashAlgorithm{{nrt?}} hashAlgorithm = null;
290+
291+
if (hashAlgorithmName == HashAlgorithmName.SHA1)
292+
hashAlgorithm = SHA1.Create();
293+
294+
if (hashAlgorithmName == HashAlgorithmName.SHA256)
295+
hashAlgorithm = SHA256.Create();
296+
297+
if (hashAlgorithmName == HashAlgorithmName.SHA512)
298+
hashAlgorithm = SHA512.Create();
299+
300+
if (hashAlgorithmName == HashAlgorithmName.MD5)
301+
hashAlgorithm = MD5.Create();
302+
303+
if (hashAlgorithm == null)
304+
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
305+
306+
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
307+
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
300308
return stringHash;
301309
}
302310

@@ -661,7 +669,7 @@ namespace {{packageName}}.Client
661669
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
662670
663671
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
664-
MD5 md5 = new MD5CryptoServiceProvider();
672+
MD5 md5 = MD5.Create();
665673
byte[] result = null;
666674
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
667675
@@ -774,6 +782,5 @@ namespace {{packageName}}.Client
774782
}
775783
return apiKeyString;
776784
}
777-
#endregion
778785
}
779786
}

samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
2626
/// </summary>
2727
public class HttpSigningConfiguration
2828
{
29-
#region
3029
/// <summary>
3130
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
3231
/// </summary>
@@ -35,9 +34,7 @@ public HttpSigningConfiguration()
3534
HashAlgorithm = HashAlgorithmName.SHA256;
3635
SigningAlgorithm = "PKCS1-v15";
3736
}
38-
#endregion
3937

40-
#region Properties
4138
/// <summary>
4239
///Gets the Api keyId
4340
/// </summary>
@@ -78,18 +75,13 @@ public HttpSigningConfiguration()
7875
/// </summary>
7976
public int SignatureValidityPeriod { get; set; }
8077

81-
#endregion
82-
83-
#region enum
8478
private enum PrivateKeyType
8579
{
8680
None = 0,
8781
RSA = 1,
8882
ECDSA = 2,
8983
}
90-
#endregion
9184

92-
#region Methods
9385
/// <summary>
9486
/// Gets the Headers for HttpSigning
9587
/// </summary>
@@ -191,12 +183,12 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
191183

192184
if (HashAlgorithm == HashAlgorithmName.SHA256)
193185
{
194-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
186+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
195187
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
196188
}
197189
else if (HashAlgorithm == HashAlgorithmName.SHA512)
198190
{
199-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
191+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
200192
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
201193
}
202194
else
@@ -264,7 +256,7 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
264256
}
265257
//Concatenate headers value separated by new line
266258
var headerValuesString = string.Join("\n", headerValuesList);
267-
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
259+
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
268260
string headerSignatureStr = null;
269261
var keyType = GetKeyType(KeyString);
270262

@@ -300,11 +292,27 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
300292
return HttpSignedRequestHeader;
301293
}
302294

303-
private byte[] GetStringHash(string hashName, string stringToBeHashed)
295+
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
304296
{
305-
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
306-
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
307-
var stringHash = hashAlgorithm.ComputeHash(bytes);
297+
HashAlgorithm hashAlgorithm = null;
298+
299+
if (hashAlgorithmName == HashAlgorithmName.SHA1)
300+
hashAlgorithm = SHA1.Create();
301+
302+
if (hashAlgorithmName == HashAlgorithmName.SHA256)
303+
hashAlgorithm = SHA256.Create();
304+
305+
if (hashAlgorithmName == HashAlgorithmName.SHA512)
306+
hashAlgorithm = SHA512.Create();
307+
308+
if (hashAlgorithmName == HashAlgorithmName.MD5)
309+
hashAlgorithm = MD5.Create();
310+
311+
if (hashAlgorithm == null)
312+
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
313+
314+
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
315+
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
308316
return stringHash;
309317
}
310318

@@ -669,7 +677,7 @@ private byte[] GetEncryptedKey(byte[] salt, SecureString secpswd, int count, int
669677
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
670678

671679
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
672-
MD5 md5 = new MD5CryptoServiceProvider();
680+
MD5 md5 = MD5.Create();
673681
byte[] result = null;
674682
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
675683

@@ -782,6 +790,5 @@ private string ReadApiKeyFromFile(string apiKeyFilePath)
782790
}
783791
return apiKeyString;
784792
}
785-
#endregion
786793
}
787794
}

samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
2626
/// </summary>
2727
public class HttpSigningConfiguration
2828
{
29-
#region
3029
/// <summary>
3130
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
3231
/// </summary>
@@ -35,9 +34,7 @@ public HttpSigningConfiguration()
3534
HashAlgorithm = HashAlgorithmName.SHA256;
3635
SigningAlgorithm = "PKCS1-v15";
3736
}
38-
#endregion
3937

40-
#region Properties
4138
/// <summary>
4239
///Gets the Api keyId
4340
/// </summary>
@@ -78,18 +75,13 @@ public HttpSigningConfiguration()
7875
/// </summary>
7976
public int SignatureValidityPeriod { get; set; }
8077

81-
#endregion
82-
83-
#region enum
8478
private enum PrivateKeyType
8579
{
8680
None = 0,
8781
RSA = 1,
8882
ECDSA = 2,
8983
}
90-
#endregion
9184

92-
#region Methods
9385
/// <summary>
9486
/// Gets the Headers for HttpSigning
9587
/// </summary>
@@ -191,12 +183,12 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
191183

192184
if (HashAlgorithm == HashAlgorithmName.SHA256)
193185
{
194-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
186+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
195187
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
196188
}
197189
else if (HashAlgorithm == HashAlgorithmName.SHA512)
198190
{
199-
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
191+
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
200192
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
201193
}
202194
else
@@ -264,7 +256,7 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
264256
}
265257
//Concatenate headers value separated by new line
266258
var headerValuesString = string.Join("\n", headerValuesList);
267-
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
259+
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
268260
string headerSignatureStr = null;
269261
var keyType = GetKeyType(KeyString);
270262

@@ -300,11 +292,27 @@ internal Dictionary<string, string> GetHttpSignedHeader(string basePath,string m
300292
return HttpSignedRequestHeader;
301293
}
302294

303-
private byte[] GetStringHash(string hashName, string stringToBeHashed)
295+
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
304296
{
305-
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
306-
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
307-
var stringHash = hashAlgorithm.ComputeHash(bytes);
297+
HashAlgorithm hashAlgorithm = null;
298+
299+
if (hashAlgorithmName == HashAlgorithmName.SHA1)
300+
hashAlgorithm = SHA1.Create();
301+
302+
if (hashAlgorithmName == HashAlgorithmName.SHA256)
303+
hashAlgorithm = SHA256.Create();
304+
305+
if (hashAlgorithmName == HashAlgorithmName.SHA512)
306+
hashAlgorithm = SHA512.Create();
307+
308+
if (hashAlgorithmName == HashAlgorithmName.MD5)
309+
hashAlgorithm = MD5.Create();
310+
311+
if (hashAlgorithm == null)
312+
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
313+
314+
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
315+
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
308316
return stringHash;
309317
}
310318

@@ -669,7 +677,7 @@ private byte[] GetEncryptedKey(byte[] salt, SecureString secpswd, int count, int
669677
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
670678

671679
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
672-
MD5 md5 = new MD5CryptoServiceProvider();
680+
MD5 md5 = MD5.Create();
673681
byte[] result = null;
674682
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
675683

@@ -782,6 +790,5 @@ private string ReadApiKeyFromFile(string apiKeyFilePath)
782790
}
783791
return apiKeyString;
784792
}
785-
#endregion
786793
}
787794
}

0 commit comments

Comments
 (0)