Add migrated to .NET 8.0 variant of Hcs.Client

This commit is contained in:
2025-09-26 19:48:32 +09:00
parent da127df8f6
commit 6cd2fb82e9
503 changed files with 223796 additions and 0 deletions

View File

@ -0,0 +1,136 @@
using GostCryptography.Properties;
using System;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
namespace GostCryptography.Reflection
{
static class CryptographyXmlUtils
{
public static X509Certificate2Collection BuildBagOfCertsVerification(KeyInfoX509Data keyInfoX509Data)
{
return BuildBagOfCerts(keyInfoX509Data, 0);
}
public static X509Certificate2Collection BuildBagOfCertsDecryption(KeyInfoX509Data keyInfoX509Data)
{
return BuildBagOfCerts(keyInfoX509Data, 1);
}
private static X509Certificate2Collection BuildBagOfCerts(KeyInfoX509Data keyInfoX509Data, int certUsageType)
{
try
{
return (X509Certificate2Collection)BuildBagOfCertsMethod.Invoke(null, new object[] { keyInfoX509Data, certUsageType });
}
catch (TargetInvocationException exception)
{
if (exception.InnerException != null)
{
throw exception.InnerException;
}
throw;
}
}
private static volatile MethodInfo _buildBagOfCertsMethod;
private static readonly object BuildBagOfCertsMethodSync = new object();
private static MethodInfo BuildBagOfCertsMethod
{
get
{
if (_buildBagOfCertsMethod == null)
{
lock (BuildBagOfCertsMethodSync)
{
if (_buildBagOfCertsMethod == null)
{
_buildBagOfCertsMethod = CryptographyXmlUtilsType.GetMethod("BuildBagOfCerts", BindingFlags.Static | BindingFlags.NonPublic);
}
}
}
if (_buildBagOfCertsMethod == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, $"{CryptographyXmlUtilsType.FullName}.BuildBagOfCerts()");
}
return _buildBagOfCertsMethod;
}
}
public static string ExtractIdFromLocalUri(string uri)
{
try
{
return (string)ExtractIdFromLocalUriMethod.Invoke(null, new object[] { uri });
}
catch (TargetInvocationException exception)
{
if (exception.InnerException != null)
{
throw exception.InnerException;
}
throw;
}
}
private static volatile MethodInfo _extractIdFromLocalUriMethod;
private static readonly object ExtractIdFromLocalUriMethodSync = new object();
private static MethodInfo ExtractIdFromLocalUriMethod
{
get
{
if (_extractIdFromLocalUriMethod == null)
{
lock (ExtractIdFromLocalUriMethodSync)
{
if (_extractIdFromLocalUriMethod == null)
{
_extractIdFromLocalUriMethod = CryptographyXmlUtilsType.GetMethod("ExtractIdFromLocalUri", BindingFlags.Static | BindingFlags.NonPublic);
}
}
}
if (_extractIdFromLocalUriMethod == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, $"{CryptographyXmlUtilsType.FullName}.ExtractIdFromLocalUri()");
}
return _extractIdFromLocalUriMethod;
}
}
private static volatile Type _cryptographyXmlUtilsType;
private static readonly object CryptographyXmlUtilsTypeSync = new object();
private static Type CryptographyXmlUtilsType
{
get
{
if (_cryptographyXmlUtilsType == null)
{
lock (CryptographyXmlUtilsTypeSync)
{
if (_cryptographyXmlUtilsType == null)
{
_cryptographyXmlUtilsType = typeof(SignedXml).Assembly.GetType("System.Security.Cryptography.Xml.Utils");
}
}
}
if (_cryptographyXmlUtilsType == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, "System.Security.Cryptography.Xml.Utils");
}
return _cryptographyXmlUtilsType;
}
}
}
}