fixed bug in http signing config (#16040)

This commit is contained in:
devhl-labs 2023-07-12 20:27:55 -04:00 committed by GitHub
parent 3678085017
commit 16c149a91e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 70 deletions

View File

@ -272,10 +272,9 @@ namespace {{packageName}}.{{clientPackage}}
/// <returns></returns>
private string GetECDSASignature(byte[] dataToSign)
{
{{#net60OrLater}}
if (!File.Exists(KeyFilePath))
{
throw new Exception("key file path does not exist.");
}
var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----";
var ecKeyFooter = "-----END EC PRIVATE KEY-----";
@ -284,7 +283,6 @@ namespace {{packageName}}.{{clientPackage}}
var keyBytes = System.Convert.FromBase64String(ecKeyBase64String);
var ecdsa = ECDsa.Create();
#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0)
var byteCount = 0;
if (KeyPassPhrase != null)
{
@ -305,18 +303,17 @@ namespace {{packageName}}.{{clientPackage}}
}
}
else
{
ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount);
}
var signedBytes = ecdsa.SignHash(dataToSign);
var derBytes = ConvertToECDSAANS1Format(signedBytes);
var signedString = System.Convert.ToBase64String(derBytes);
return signedString;
#else
{{/net60OrLater}}
{{^net60OrLater}}
throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above");
#endif
{{/net60OrLater}}
}
private byte[] ConvertToECDSAANS1Format(byte[] signedBytes)

View File

@ -279,9 +279,7 @@ namespace Org.OpenAPITools.Client
private string GetECDSASignature(byte[] dataToSign)
{
if (!File.Exists(KeyFilePath))
{
throw new Exception("key file path does not exist.");
}
var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----";
var ecKeyFooter = "-----END EC PRIVATE KEY-----";
@ -290,7 +288,6 @@ namespace Org.OpenAPITools.Client
var keyBytes = System.Convert.FromBase64String(ecKeyBase64String);
var ecdsa = ECDsa.Create();
#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0)
var byteCount = 0;
if (KeyPassPhrase != null)
{
@ -311,18 +308,13 @@ namespace Org.OpenAPITools.Client
}
}
else
{
ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount);
}
var signedBytes = ecdsa.SignHash(dataToSign);
var derBytes = ConvertToECDSAANS1Format(signedBytes);
var signedString = System.Convert.ToBase64String(derBytes);
return signedString;
#else
throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above");
#endif
}
private byte[] ConvertToECDSAANS1Format(byte[] signedBytes)

View File

@ -277,9 +277,7 @@ namespace Org.OpenAPITools.Client
private string GetECDSASignature(byte[] dataToSign)
{
if (!File.Exists(KeyFilePath))
{
throw new Exception("key file path does not exist.");
}
var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----";
var ecKeyFooter = "-----END EC PRIVATE KEY-----";
@ -288,7 +286,6 @@ namespace Org.OpenAPITools.Client
var keyBytes = System.Convert.FromBase64String(ecKeyBase64String);
var ecdsa = ECDsa.Create();
#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0)
var byteCount = 0;
if (KeyPassPhrase != null)
{
@ -309,18 +306,13 @@ namespace Org.OpenAPITools.Client
}
}
else
{
ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount);
}
var signedBytes = ecdsa.SignHash(dataToSign);
var derBytes = ConvertToECDSAANS1Format(signedBytes);
var signedString = System.Convert.ToBase64String(derBytes);
return signedString;
#else
throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above");
#endif
}
private byte[] ConvertToECDSAANS1Format(byte[] signedBytes)

View File

@ -276,51 +276,7 @@ namespace Org.OpenAPITools.Client
/// <returns></returns>
private string GetECDSASignature(byte[] dataToSign)
{
if (!File.Exists(KeyFilePath))
{
throw new Exception("key file path does not exist.");
}
var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----";
var ecKeyFooter = "-----END EC PRIVATE KEY-----";
var keyStr = File.ReadAllText(KeyFilePath);
var ecKeyBase64String = keyStr.Replace(ecKeyHeader, "").Replace(ecKeyFooter, "").Trim();
var keyBytes = System.Convert.FromBase64String(ecKeyBase64String);
var ecdsa = ECDsa.Create();
#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0)
var byteCount = 0;
if (KeyPassPhrase != null)
{
IntPtr unmanagedString = IntPtr.Zero;
try
{
// convert secure string to byte array
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(KeyPassPhrase);
string ptrToStringUni = Marshal.PtrToStringUni(unmanagedString) ?? throw new NullReferenceException();
ecdsa.ImportEncryptedPkcs8PrivateKey(Encoding.UTF8.GetBytes(ptrToStringUni), keyBytes, out byteCount);
}
finally
{
if (unmanagedString != IntPtr.Zero)
Marshal.ZeroFreeBSTR(unmanagedString);
}
}
else
{
ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount);
}
var signedBytes = ecdsa.SignHash(dataToSign);
var derBytes = ConvertToECDSAANS1Format(signedBytes);
var signedString = System.Convert.ToBase64String(derBytes);
return signedString;
#else
throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above");
#endif
}
private byte[] ConvertToECDSAANS1Format(byte[] signedBytes)