forked from loafle/openapi-generator-original
[C#][restsharp] Removed warnings in HTTP signing config (#16128)
* Removed warnings in HTTP signing config for restsharp C# * fix
This commit is contained in:
@@ -18,7 +18,6 @@ namespace {{packageName}}.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -27,9 +26,7 @@ namespace {{packageName}}.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -70,18 +67,13 @@ namespace {{packageName}}.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -183,12 +175,12 @@ namespace {{packageName}}.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -256,7 +248,7 @@ namespace {{packageName}}.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -292,11 +284,27 @@ namespace {{packageName}}.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm{{nrt?}} hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +669,7 @@ namespace {{packageName}}.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -774,6 +782,5 @@ namespace {{packageName}}.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm? hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HttpSigningConfiguration
|
public class HttpSigningConfiguration
|
||||||
{
|
{
|
||||||
#region
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
/// Initialize the HashAlgorithm and SigningAlgorithm to default value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,9 +34,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
HashAlgorithm = HashAlgorithmName.SHA256;
|
HashAlgorithm = HashAlgorithmName.SHA256;
|
||||||
SigningAlgorithm = "PKCS1-v15";
|
SigningAlgorithm = "PKCS1-v15";
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Properties
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///Gets the Api keyId
|
///Gets the Api keyId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -78,18 +75,13 @@ namespace Org.OpenAPITools.Client
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int SignatureValidityPeriod { get; set; }
|
public int SignatureValidityPeriod { get; set; }
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region enum
|
|
||||||
private enum PrivateKeyType
|
private enum PrivateKeyType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RSA = 1,
|
RSA = 1,
|
||||||
ECDSA = 2,
|
ECDSA = 2,
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Headers for HttpSigning
|
/// Gets the Headers for HttpSigning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,12 +183,12 @@ namespace Org.OpenAPITools.Client
|
|||||||
|
|
||||||
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
if (HashAlgorithm == HashAlgorithmName.SHA256)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
else if (HashAlgorithm == HashAlgorithmName.SHA512)
|
||||||
{
|
{
|
||||||
var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody);
|
var bodyDigest = GetStringHash(HashAlgorithm, requestBody);
|
||||||
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -264,7 +256,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
//Concatenate headers value separated by new line
|
//Concatenate headers value separated by new line
|
||||||
var headerValuesString = string.Join("\n", headerValuesList);
|
var headerValuesString = string.Join("\n", headerValuesList);
|
||||||
var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString);
|
var signatureStringHash = GetStringHash(HashAlgorithm, headerValuesString);
|
||||||
string headerSignatureStr = null;
|
string headerSignatureStr = null;
|
||||||
var keyType = GetKeyType(KeyString);
|
var keyType = GetKeyType(KeyString);
|
||||||
|
|
||||||
@@ -300,11 +292,27 @@ namespace Org.OpenAPITools.Client
|
|||||||
return HttpSignedRequestHeader;
|
return HttpSignedRequestHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetStringHash(string hashName, string stringToBeHashed)
|
private byte[] GetStringHash(HashAlgorithmName hashAlgorithmName, string stringToBeHashed)
|
||||||
{
|
{
|
||||||
var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName);
|
HashAlgorithm? hashAlgorithm = null;
|
||||||
var bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
|
||||||
var stringHash = hashAlgorithm.ComputeHash(bytes);
|
if (hashAlgorithmName == HashAlgorithmName.SHA1)
|
||||||
|
hashAlgorithm = SHA1.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA256)
|
||||||
|
hashAlgorithm = SHA256.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.SHA512)
|
||||||
|
hashAlgorithm = SHA512.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithmName == HashAlgorithmName.MD5)
|
||||||
|
hashAlgorithm = MD5.Create();
|
||||||
|
|
||||||
|
if (hashAlgorithm == null)
|
||||||
|
throw new NullReferenceException($"{ nameof(hashAlgorithm) } was null.");
|
||||||
|
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(stringToBeHashed);
|
||||||
|
byte[] stringHash = hashAlgorithm.ComputeHash(bytes);
|
||||||
return stringHash;
|
return stringHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +677,7 @@ namespace Org.OpenAPITools.Client
|
|||||||
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes
|
||||||
|
|
||||||
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
// ---- do multi-hashing and concatenate results D1, D2 ... into keymaterial bytes ----
|
||||||
MD5 md5 = new MD5CryptoServiceProvider();
|
MD5 md5 = MD5.Create();
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget
|
||||||
|
|
||||||
@@ -782,6 +790,5 @@ namespace Org.OpenAPITools.Client
|
|||||||
}
|
}
|
||||||
return apiKeyString;
|
return apiKeyString;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user