Add project

Basic formatting applied. Unnecessary comments have been removed. Suspicious code is covered by TODO.
This commit is contained in:
2025-08-12 11:21:10 +09:00
parent bbcbe841a7
commit 33ab055b43
546 changed files with 176950 additions and 0 deletions

View File

@ -0,0 +1,122 @@
using GostCryptography.Properties;
using System.Collections;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
namespace GostCryptography.Reflection
{
static class SignedXmlHelper
{
public static IEnumerator GetKeyInfoEnumerable(this SignedXml signedXml)
{
return (IEnumerator)KeyInfoEnumerableField.GetValue(signedXml);
}
public static void SetKeyInfoEnumerable(this SignedXml signedXml, IEnumerator keyInfoEnumerable)
{
KeyInfoEnumerableField.SetValue(signedXml, keyInfoEnumerable);
}
private static volatile FieldInfo _keyInfoEnumerableField;
private static readonly object KeyInfoEnumerableFieldSync = new object();
private static FieldInfo KeyInfoEnumerableField
{
get
{
if (_keyInfoEnumerableField == null)
{
lock (KeyInfoEnumerableFieldSync)
{
if (_keyInfoEnumerableField == null)
{
_keyInfoEnumerableField = typeof(SignedXml).GetField("m_keyInfoEnum", BindingFlags.Instance | BindingFlags.NonPublic);
}
}
}
if (_keyInfoEnumerableField == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, "m_keyInfoEnum");
}
return _keyInfoEnumerableField;
}
}
public static IEnumerator GetX509Enumerable(this SignedXml signedXml)
{
return (IEnumerator)X509EnumerableField.GetValue(signedXml);
}
public static void SetX509Enumerable(this SignedXml signedXml, IEnumerator x509Enumerable)
{
X509EnumerableField.SetValue(signedXml, x509Enumerable);
}
private static volatile FieldInfo _x509EnumerableField;
private static readonly object X509EnumerableSync = new object();
private static FieldInfo X509EnumerableField
{
get
{
if (_x509EnumerableField == null)
{
lock (X509EnumerableSync)
{
if (_x509EnumerableField == null)
{
_x509EnumerableField = typeof(SignedXml).GetField("m_x509Enum", BindingFlags.Instance | BindingFlags.NonPublic);
}
}
}
if (_x509EnumerableField == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, "m_x509Enum");
}
return _x509EnumerableField;
}
}
public static X509Certificate2Collection GetX509Collection(this SignedXml signedXml)
{
return (X509Certificate2Collection)X509CollectionField.GetValue(signedXml);
}
public static void SetX509Collection(this SignedXml signedXml, X509Certificate2Collection x509Collection)
{
X509CollectionField.SetValue(signedXml, x509Collection);
}
private static volatile FieldInfo _x509CollectionField;
private static readonly object X509CollectionFieldSync = new object();
private static FieldInfo X509CollectionField
{
get
{
if (_x509CollectionField == null)
{
lock (X509CollectionFieldSync)
{
if (_x509CollectionField == null)
{
_x509CollectionField = typeof(SignedXml).GetField("m_x509Collection", BindingFlags.Instance | BindingFlags.NonPublic);
}
}
}
if (_keyInfoEnumerableField == null)
{
throw ExceptionUtility.CryptographicException(Resources.XmlCannotFindPrivateMember, "m_x509Collection");
}
return _x509CollectionField;
}
}
}
}