import typing, clr, abc
from System.Security.Cryptography import ECDsa, HashAlgorithmName, RSA, RSASignaturePadding, DSA, AsymmetricAlgorithm, Oid, AsnEncodedData, ECDiffieHellman, OidCollection
from System.Collections.ObjectModel import Collection_1
from System import DateTimeOffset, Array_1, ReadOnlySpan_1, Span_1, Uri, IDisposable, DateTime, TimeSpan
from System.Net import IPAddress
from System.Runtime.Serialization import ISerializable, IDeserializationCallback, SerializationInfo, StreamingContext
from System.Security import SecureString
from System.Collections.Generic import IEnumerable_1, IEnumerator_1
from System.Collections import IEnumerator, CollectionBase, ICollection
from Microsoft.Win32.SafeHandles import SafeX509ChainHandle

class CertificateRequest:
    @typing.overload
    def __init__(self, subjectName: str, key: ECDsa, hashAlgorithm: HashAlgorithmName) -> None: ...
    @typing.overload
    def __init__(self, subjectName: X500DistinguishedName, key: ECDsa, hashAlgorithm: HashAlgorithmName) -> None: ...
    @typing.overload
    def __init__(self, subjectName: str, key: RSA, hashAlgorithm: HashAlgorithmName, padding: RSASignaturePadding) -> None: ...
    @typing.overload
    def __init__(self, subjectName: X500DistinguishedName, key: RSA, hashAlgorithm: HashAlgorithmName, padding: RSASignaturePadding) -> None: ...
    @typing.overload
    def __init__(self, subjectName: X500DistinguishedName, publicKey: PublicKey, hashAlgorithm: HashAlgorithmName) -> None: ...
    @property
    def CertificateExtensions(self) -> Collection_1[X509Extension]: ...
    @property
    def HashAlgorithm(self) -> HashAlgorithmName: ...
    @property
    def PublicKey(self) -> PublicKey: ...
    @property
    def SubjectName(self) -> X500DistinguishedName: ...
    def CreateSelfSigned(self, notBefore: DateTimeOffset, notAfter: DateTimeOffset) -> X509Certificate2: ...
    # Skipped Create due to it being static, abstract and generic.

    Create : Create_MethodGroup
    class Create_MethodGroup:
        @typing.overload
        def __call__(self, issuerCertificate: X509Certificate2, notBefore: DateTimeOffset, notAfter: DateTimeOffset, serialNumber: Array_1[int]) -> X509Certificate2:...
        @typing.overload
        def __call__(self, issuerCertificate: X509Certificate2, notBefore: DateTimeOffset, notAfter: DateTimeOffset, serialNumber: ReadOnlySpan_1[int]) -> X509Certificate2:...
        @typing.overload
        def __call__(self, issuerName: X500DistinguishedName, generator: X509SignatureGenerator, notBefore: DateTimeOffset, notAfter: DateTimeOffset, serialNumber: Array_1[int]) -> X509Certificate2:...
        @typing.overload
        def __call__(self, issuerName: X500DistinguishedName, generator: X509SignatureGenerator, notBefore: DateTimeOffset, notAfter: DateTimeOffset, serialNumber: ReadOnlySpan_1[int]) -> X509Certificate2:...

    # Skipped CreateSigningRequest due to it being static, abstract and generic.

    CreateSigningRequest : CreateSigningRequest_MethodGroup
    class CreateSigningRequest_MethodGroup:
        @typing.overload
        def __call__(self) -> Array_1[int]:...
        @typing.overload
        def __call__(self, signatureGenerator: X509SignatureGenerator) -> Array_1[int]:...



class DSACertificateExtensions(abc.ABC):
    @staticmethod
    def CopyWithPrivateKey(certificate: X509Certificate2, privateKey: DSA) -> X509Certificate2: ...
    @staticmethod
    def GetDSAPrivateKey(certificate: X509Certificate2) -> DSA: ...
    @staticmethod
    def GetDSAPublicKey(certificate: X509Certificate2) -> DSA: ...


class ECDsaCertificateExtensions(abc.ABC):
    @staticmethod
    def CopyWithPrivateKey(certificate: X509Certificate2, privateKey: ECDsa) -> X509Certificate2: ...
    @staticmethod
    def GetECDsaPrivateKey(certificate: X509Certificate2) -> ECDsa: ...
    @staticmethod
    def GetECDsaPublicKey(certificate: X509Certificate2) -> ECDsa: ...


class OpenFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    ReadOnly : OpenFlags # 0
    ReadWrite : OpenFlags # 1
    MaxAllowed : OpenFlags # 2
    OpenExistingOnly : OpenFlags # 4
    IncludeArchived : OpenFlags # 8


class PublicKey:
    @typing.overload
    def __init__(self, key: AsymmetricAlgorithm) -> None: ...
    @typing.overload
    def __init__(self, oid: Oid, parameters: AsnEncodedData, keyValue: AsnEncodedData) -> None: ...
    @property
    def EncodedKeyValue(self) -> AsnEncodedData: ...
    @EncodedKeyValue.setter
    def EncodedKeyValue(self, value: AsnEncodedData) -> AsnEncodedData: ...
    @property
    def EncodedParameters(self) -> AsnEncodedData: ...
    @EncodedParameters.setter
    def EncodedParameters(self, value: AsnEncodedData) -> AsnEncodedData: ...
    @property
    def Key(self) -> AsymmetricAlgorithm: ...
    @property
    def Oid(self) -> Oid: ...
    @staticmethod
    def CreateFromSubjectPublicKeyInfo(source: ReadOnlySpan_1[int], bytesRead: clr.Reference[int]) -> PublicKey: ...
    def ExportSubjectPublicKeyInfo(self) -> Array_1[int]: ...
    def GetDSAPublicKey(self) -> DSA: ...
    def GetECDiffieHellmanPublicKey(self) -> ECDiffieHellman: ...
    def GetECDsaPublicKey(self) -> ECDsa: ...
    def GetRSAPublicKey(self) -> RSA: ...
    def TryExportSubjectPublicKeyInfo(self, destination: Span_1[int], bytesWritten: clr.Reference[int]) -> bool: ...


class RSACertificateExtensions(abc.ABC):
    @staticmethod
    def CopyWithPrivateKey(certificate: X509Certificate2, privateKey: RSA) -> X509Certificate2: ...
    @staticmethod
    def GetRSAPrivateKey(certificate: X509Certificate2) -> RSA: ...
    @staticmethod
    def GetRSAPublicKey(certificate: X509Certificate2) -> RSA: ...


class StoreLocation(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    CurrentUser : StoreLocation # 1
    LocalMachine : StoreLocation # 2


class StoreName(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    AddressBook : StoreName # 1
    AuthRoot : StoreName # 2
    CertificateAuthority : StoreName # 3
    Disallowed : StoreName # 4
    My : StoreName # 5
    Root : StoreName # 6
    TrustedPeople : StoreName # 7
    TrustedPublisher : StoreName # 8


class SubjectAlternativeNameBuilder:
    def __init__(self) -> None: ...
    def AddDnsName(self, dnsName: str) -> None: ...
    def AddEmailAddress(self, emailAddress: str) -> None: ...
    def AddIpAddress(self, ipAddress: IPAddress) -> None: ...
    def AddUri(self, uri: Uri) -> None: ...
    def AddUserPrincipalName(self, upn: str) -> None: ...
    def Build(self, critical: bool = ...) -> X509Extension: ...


class X500DistinguishedName(AsnEncodedData):
    @typing.overload
    def __init__(self, distinguishedName: X500DistinguishedName) -> None: ...
    @typing.overload
    def __init__(self, distinguishedName: str) -> None: ...
    @typing.overload
    def __init__(self, distinguishedName: str, flag: X500DistinguishedNameFlags) -> None: ...
    @typing.overload
    def __init__(self, encodedDistinguishedName: Array_1[int]) -> None: ...
    @typing.overload
    def __init__(self, encodedDistinguishedName: ReadOnlySpan_1[int]) -> None: ...
    @typing.overload
    def __init__(self, encodedDistinguishedName: AsnEncodedData) -> None: ...
    @property
    def Name(self) -> str: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    def Decode(self, flag: X500DistinguishedNameFlags) -> str: ...
    def Format(self, multiLine: bool) -> str: ...


class X500DistinguishedNameFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : X500DistinguishedNameFlags # 0
    Reversed : X500DistinguishedNameFlags # 1
    UseSemicolons : X500DistinguishedNameFlags # 16
    DoNotUsePlusSign : X500DistinguishedNameFlags # 32
    DoNotUseQuotes : X500DistinguishedNameFlags # 64
    UseCommas : X500DistinguishedNameFlags # 128
    UseNewLines : X500DistinguishedNameFlags # 256
    UseUTF8Encoding : X500DistinguishedNameFlags # 4096
    UseT61Encoding : X500DistinguishedNameFlags # 8192
    ForceUTF8Encoding : X500DistinguishedNameFlags # 16384


class X509BasicConstraintsExtension(X509Extension):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, certificateAuthority: bool, hasPathLengthConstraint: bool, pathLengthConstraint: int, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, encodedBasicConstraints: AsnEncodedData, critical: bool) -> None: ...
    @property
    def CertificateAuthority(self) -> bool: ...
    @property
    def Critical(self) -> bool: ...
    @Critical.setter
    def Critical(self, value: bool) -> bool: ...
    @property
    def HasPathLengthConstraint(self) -> bool: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def PathLengthConstraint(self) -> int: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    def CopyFrom(self, asnEncodedData: AsnEncodedData) -> None: ...


class X509Certificate(ISerializable, IDeserializationCallback, IDisposable):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, cert: X509Certificate) -> None: ...
    @typing.overload
    def __init__(self, data: Array_1[int]) -> None: ...
    @typing.overload
    def __init__(self, fileName: str) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: str) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: SecureString) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: str, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, handle: int) -> None: ...
    @typing.overload
    def __init__(self, info: SerializationInfo, context: StreamingContext) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: str) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: SecureString) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: str, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @property
    def Handle(self) -> int: ...
    @property
    def Issuer(self) -> str: ...
    @property
    def Subject(self) -> str: ...
    @staticmethod
    def CreateFromCertFile(filename: str) -> X509Certificate: ...
    @staticmethod
    def CreateFromSignedFile(filename: str) -> X509Certificate: ...
    def Dispose(self) -> None: ...
    def GetEffectiveDateString(self) -> str: ...
    def GetExpirationDateString(self) -> str: ...
    def GetFormat(self) -> str: ...
    def GetHashCode(self) -> int: ...
    def GetIssuerName(self) -> str: ...
    def GetKeyAlgorithm(self) -> str: ...
    def GetKeyAlgorithmParameters(self) -> Array_1[int]: ...
    def GetKeyAlgorithmParametersString(self) -> str: ...
    def GetName(self) -> str: ...
    def GetPublicKey(self) -> Array_1[int]: ...
    def GetPublicKeyString(self) -> str: ...
    def GetRawCertData(self) -> Array_1[int]: ...
    def GetRawCertDataString(self) -> str: ...
    def GetSerialNumber(self) -> Array_1[int]: ...
    def GetSerialNumberString(self) -> str: ...
    def Reset(self) -> None: ...
    def TryGetCertHash(self, hashAlgorithm: HashAlgorithmName, destination: Span_1[int], bytesWritten: clr.Reference[int]) -> bool: ...
    # Skipped Equals due to it being static, abstract and generic.

    Equals : Equals_MethodGroup
    class Equals_MethodGroup:
        @typing.overload
        def __call__(self, other: X509Certificate) -> bool:...
        @typing.overload
        def __call__(self, obj: typing.Any) -> bool:...

    # Skipped Export due to it being static, abstract and generic.

    Export : Export_MethodGroup
    class Export_MethodGroup:
        @typing.overload
        def __call__(self, contentType: X509ContentType) -> Array_1[int]:...
        @typing.overload
        def __call__(self, contentType: X509ContentType, password: str) -> Array_1[int]:...
        @typing.overload
        def __call__(self, contentType: X509ContentType, password: SecureString) -> Array_1[int]:...

    # Skipped GetCertHash due to it being static, abstract and generic.

    GetCertHash : GetCertHash_MethodGroup
    class GetCertHash_MethodGroup:
        @typing.overload
        def __call__(self) -> Array_1[int]:...
        @typing.overload
        def __call__(self, hashAlgorithm: HashAlgorithmName) -> Array_1[int]:...

    # Skipped GetCertHashString due to it being static, abstract and generic.

    GetCertHashString : GetCertHashString_MethodGroup
    class GetCertHashString_MethodGroup:
        @typing.overload
        def __call__(self) -> str:...
        @typing.overload
        def __call__(self, hashAlgorithm: HashAlgorithmName) -> str:...

    # Skipped Import due to it being static, abstract and generic.

    Import : Import_MethodGroup
    class Import_MethodGroup:
        @typing.overload
        def __call__(self, rawData: Array_1[int]) -> None:...
        @typing.overload
        def __call__(self, fileName: str) -> None:...
        @typing.overload
        def __call__(self, rawData: Array_1[int], password: str, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, rawData: Array_1[int], password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: str, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None:...

    # Skipped ToString due to it being static, abstract and generic.

    ToString : ToString_MethodGroup
    class ToString_MethodGroup:
        @typing.overload
        def __call__(self) -> str:...
        @typing.overload
        def __call__(self, fVerbose: bool) -> str:...



class X509Certificate2(X509Certificate):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, certificate: X509Certificate) -> None: ...
    @typing.overload
    def __init__(self, fileName: str) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: str) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: SecureString) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: str, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, password: ReadOnlySpan_1[str], keyStorageFlags: X509KeyStorageFlags = ...) -> None: ...
    @typing.overload
    def __init__(self, handle: int) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int]) -> None: ...
    @typing.overload
    def __init__(self, rawData: ReadOnlySpan_1[int]) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: str) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: SecureString) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: str, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, rawData: Array_1[int], password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None: ...
    @typing.overload
    def __init__(self, rawData: ReadOnlySpan_1[int], password: ReadOnlySpan_1[str], keyStorageFlags: X509KeyStorageFlags = ...) -> None: ...
    @property
    def Archived(self) -> bool: ...
    @Archived.setter
    def Archived(self, value: bool) -> bool: ...
    @property
    def Extensions(self) -> X509ExtensionCollection: ...
    @property
    def FriendlyName(self) -> str: ...
    @FriendlyName.setter
    def FriendlyName(self, value: str) -> str: ...
    @property
    def Handle(self) -> int: ...
    @property
    def HasPrivateKey(self) -> bool: ...
    @property
    def Issuer(self) -> str: ...
    @property
    def IssuerName(self) -> X500DistinguishedName: ...
    @property
    def NotAfter(self) -> DateTime: ...
    @property
    def NotBefore(self) -> DateTime: ...
    @property
    def PrivateKey(self) -> AsymmetricAlgorithm: ...
    @PrivateKey.setter
    def PrivateKey(self, value: AsymmetricAlgorithm) -> AsymmetricAlgorithm: ...
    @property
    def PublicKey(self) -> PublicKey: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @property
    def SerialNumber(self) -> str: ...
    @property
    def SignatureAlgorithm(self) -> Oid: ...
    @property
    def Subject(self) -> str: ...
    @property
    def SubjectName(self) -> X500DistinguishedName: ...
    @property
    def Thumbprint(self) -> str: ...
    @property
    def Version(self) -> int: ...
    def CopyWithPrivateKey(self, privateKey: ECDiffieHellman) -> X509Certificate2: ...
    @staticmethod
    def CreateFromEncryptedPem(certPem: ReadOnlySpan_1[str], keyPem: ReadOnlySpan_1[str], password: ReadOnlySpan_1[str]) -> X509Certificate2: ...
    @staticmethod
    def CreateFromEncryptedPemFile(certPemFilePath: str, password: ReadOnlySpan_1[str], keyPemFilePath: str = ...) -> X509Certificate2: ...
    @staticmethod
    def CreateFromPemFile(certPemFilePath: str, keyPemFilePath: str = ...) -> X509Certificate2: ...
    def GetECDiffieHellmanPrivateKey(self) -> ECDiffieHellman: ...
    def GetECDiffieHellmanPublicKey(self) -> ECDiffieHellman: ...
    def GetNameInfo(self, nameType: X509NameType, forIssuer: bool) -> str: ...
    def Reset(self) -> None: ...
    def Verify(self) -> bool: ...
    # Skipped CreateFromPem due to it being static, abstract and generic.

    CreateFromPem : CreateFromPem_MethodGroup
    class CreateFromPem_MethodGroup:
        @typing.overload
        def __call__(self, certPem: ReadOnlySpan_1[str]) -> X509Certificate2:...
        @typing.overload
        def __call__(self, certPem: ReadOnlySpan_1[str], keyPem: ReadOnlySpan_1[str]) -> X509Certificate2:...

    # Skipped GetCertContentType due to it being static, abstract and generic.

    GetCertContentType : GetCertContentType_MethodGroup
    class GetCertContentType_MethodGroup:
        @typing.overload
        def __call__(self, rawData: Array_1[int]) -> X509ContentType:...
        @typing.overload
        def __call__(self, rawData: ReadOnlySpan_1[int]) -> X509ContentType:...
        @typing.overload
        def __call__(self, fileName: str) -> X509ContentType:...

    # Skipped Import due to it being static, abstract and generic.

    Import : Import_MethodGroup
    class Import_MethodGroup:
        @typing.overload
        def __call__(self, rawData: Array_1[int]) -> None:...
        @typing.overload
        def __call__(self, fileName: str) -> None:...
        @typing.overload
        def __call__(self, rawData: Array_1[int], password: str, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, rawData: Array_1[int], password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: str, keyStorageFlags: X509KeyStorageFlags) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: SecureString, keyStorageFlags: X509KeyStorageFlags) -> None:...

    # Skipped ToString due to it being static, abstract and generic.

    ToString : ToString_MethodGroup
    class ToString_MethodGroup:
        @typing.overload
        def __call__(self) -> str:...
        @typing.overload
        def __call__(self, verbose: bool) -> str:...



class X509Certificate2Collection(X509CertificateCollection, IEnumerable_1[X509Certificate2]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, certificate: X509Certificate2) -> None: ...
    @typing.overload
    def __init__(self, certificates: Array_1[X509Certificate2]) -> None: ...
    @typing.overload
    def __init__(self, certificates: X509Certificate2Collection) -> None: ...
    @property
    def Capacity(self) -> int: ...
    @Capacity.setter
    def Capacity(self, value: int) -> int: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> X509Certificate2: ...
    @Item.setter
    def Item(self, value: X509Certificate2) -> X509Certificate2: ...
    @property
    def Item(self) -> X509Certificate: ...
    @Item.setter
    def Item(self, value: X509Certificate) -> X509Certificate: ...
    def Find(self, findType: X509FindType, findValue: typing.Any, validOnly: bool) -> X509Certificate2Collection: ...
    def ImportFromPem(self, certPem: ReadOnlySpan_1[str]) -> None: ...
    def ImportFromPemFile(self, certPemFilePath: str) -> None: ...
    # Skipped Add due to it being static, abstract and generic.

    Add : Add_MethodGroup
    class Add_MethodGroup:
        @typing.overload
        def __call__(self, certificate: X509Certificate2) -> int:...
        @typing.overload
        def __call__(self, value: X509Certificate) -> int:...

    # Skipped AddRange due to it being static, abstract and generic.

    AddRange : AddRange_MethodGroup
    class AddRange_MethodGroup:
        @typing.overload
        def __call__(self, certificates: X509Certificate2Collection) -> None:...
        @typing.overload
        def __call__(self, certificates: Array_1[X509Certificate2]) -> None:...
        @typing.overload
        def __call__(self, value: Array_1[X509Certificate]) -> None:...
        @typing.overload
        def __call__(self, value: X509CertificateCollection) -> None:...

    # Skipped Contains due to it being static, abstract and generic.

    Contains : Contains_MethodGroup
    class Contains_MethodGroup:
        @typing.overload
        def __call__(self, certificate: X509Certificate2) -> bool:...
        @typing.overload
        def __call__(self, value: X509Certificate) -> bool:...

    # Skipped Export due to it being static, abstract and generic.

    Export : Export_MethodGroup
    class Export_MethodGroup:
        @typing.overload
        def __call__(self, contentType: X509ContentType) -> Array_1[int]:...
        @typing.overload
        def __call__(self, contentType: X509ContentType, password: str) -> Array_1[int]:...

    # Skipped GetEnumerator due to it being static, abstract and generic.

    GetEnumerator : GetEnumerator_MethodGroup
    class GetEnumerator_MethodGroup:
        def __call__(self) -> X509Certificate2Enumerator:...
        # Method GetEnumerator() was skipped since it collides with above method
        # Method GetEnumerator() was skipped since it collides with above method

    # Skipped Import due to it being static, abstract and generic.

    Import : Import_MethodGroup
    class Import_MethodGroup:
        @typing.overload
        def __call__(self, rawData: Array_1[int]) -> None:...
        @typing.overload
        def __call__(self, rawData: ReadOnlySpan_1[int]) -> None:...
        @typing.overload
        def __call__(self, fileName: str) -> None:...
        @typing.overload
        def __call__(self, rawData: Array_1[int], password: str, keyStorageFlags: X509KeyStorageFlags = ...) -> None:...
        @typing.overload
        def __call__(self, rawData: ReadOnlySpan_1[int], password: ReadOnlySpan_1[str], keyStorageFlags: X509KeyStorageFlags = ...) -> None:...
        @typing.overload
        def __call__(self, rawData: ReadOnlySpan_1[int], password: str, keyStorageFlags: X509KeyStorageFlags = ...) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: ReadOnlySpan_1[str], keyStorageFlags: X509KeyStorageFlags = ...) -> None:...
        @typing.overload
        def __call__(self, fileName: str, password: str, keyStorageFlags: X509KeyStorageFlags = ...) -> None:...

    # Skipped Insert due to it being static, abstract and generic.

    Insert : Insert_MethodGroup
    class Insert_MethodGroup:
        @typing.overload
        def __call__(self, index: int, certificate: X509Certificate2) -> None:...
        @typing.overload
        def __call__(self, index: int, value: X509Certificate) -> None:...

    # Skipped Remove due to it being static, abstract and generic.

    Remove : Remove_MethodGroup
    class Remove_MethodGroup:
        @typing.overload
        def __call__(self, certificate: X509Certificate2) -> None:...
        @typing.overload
        def __call__(self, value: X509Certificate) -> None:...

    # Skipped RemoveRange due to it being static, abstract and generic.

    RemoveRange : RemoveRange_MethodGroup
    class RemoveRange_MethodGroup:
        @typing.overload
        def __call__(self, certificates: X509Certificate2Collection) -> None:...
        @typing.overload
        def __call__(self, certificates: Array_1[X509Certificate2]) -> None:...



class X509Certificate2Enumerator(IEnumerator_1[X509Certificate2]):
    @property
    def Current(self) -> X509Certificate2: ...
    def MoveNext(self) -> bool: ...
    def Reset(self) -> None: ...


class X509CertificateCollection(CollectionBase):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: Array_1[X509Certificate]) -> None: ...
    @typing.overload
    def __init__(self, value: X509CertificateCollection) -> None: ...
    @property
    def Capacity(self) -> int: ...
    @Capacity.setter
    def Capacity(self, value: int) -> int: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> X509Certificate: ...
    @Item.setter
    def Item(self, value: X509Certificate) -> X509Certificate: ...
    def Add(self, value: X509Certificate) -> int: ...
    def Contains(self, value: X509Certificate) -> bool: ...
    def CopyTo(self, array: Array_1[X509Certificate], index: int) -> None: ...
    def GetHashCode(self) -> int: ...
    def IndexOf(self, value: X509Certificate) -> int: ...
    def Insert(self, index: int, value: X509Certificate) -> None: ...
    def Remove(self, value: X509Certificate) -> None: ...
    # Skipped AddRange due to it being static, abstract and generic.

    AddRange : AddRange_MethodGroup
    class AddRange_MethodGroup:
        @typing.overload
        def __call__(self, value: Array_1[X509Certificate]) -> None:...
        @typing.overload
        def __call__(self, value: X509CertificateCollection) -> None:...

    # Skipped GetEnumerator due to it being static, abstract and generic.

    GetEnumerator : GetEnumerator_MethodGroup
    class GetEnumerator_MethodGroup:
        def __call__(self) -> X509CertificateCollection.X509CertificateEnumerator:...
        # Method GetEnumerator() was skipped since it collides with above method


    class X509CertificateEnumerator(IEnumerator):
        def __init__(self, mappings: X509CertificateCollection) -> None: ...
        @property
        def Current(self) -> X509Certificate: ...
        def MoveNext(self) -> bool: ...
        def Reset(self) -> None: ...



class X509Chain(IDisposable):
    # Constructor .ctor(useMachineContext : Boolean) was skipped since it collides with above method
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, chainContext: int) -> None: ...
    @property
    def ChainContext(self) -> int: ...
    @property
    def ChainElements(self) -> X509ChainElementCollection: ...
    @property
    def ChainPolicy(self) -> X509ChainPolicy: ...
    @ChainPolicy.setter
    def ChainPolicy(self, value: X509ChainPolicy) -> X509ChainPolicy: ...
    @property
    def ChainStatus(self) -> Array_1[X509ChainStatus]: ...
    @property
    def SafeHandle(self) -> SafeX509ChainHandle: ...
    def Build(self, certificate: X509Certificate2) -> bool: ...
    @staticmethod
    def Create() -> X509Chain: ...
    def Dispose(self) -> None: ...
    def Reset(self) -> None: ...


class X509ChainElement:
    @property
    def Certificate(self) -> X509Certificate2: ...
    @Certificate.setter
    def Certificate(self, value: X509Certificate2) -> X509Certificate2: ...
    @property
    def ChainElementStatus(self) -> Array_1[X509ChainStatus]: ...
    @ChainElementStatus.setter
    def ChainElementStatus(self, value: Array_1[X509ChainStatus]) -> Array_1[X509ChainStatus]: ...
    @property
    def Information(self) -> str: ...
    @Information.setter
    def Information(self, value: str) -> str: ...


class X509ChainElementCollection(IEnumerable_1[X509ChainElement], ICollection):
    @property
    def Count(self) -> int: ...
    @property
    def IsSynchronized(self) -> bool: ...
    @property
    def Item(self) -> X509ChainElement: ...
    @property
    def SyncRoot(self) -> typing.Any: ...
    def CopyTo(self, array: Array_1[X509ChainElement], index: int) -> None: ...
    def GetEnumerator(self) -> X509ChainElementEnumerator: ...


class X509ChainElementEnumerator(IEnumerator_1[X509ChainElement]):
    @property
    def Current(self) -> X509ChainElement: ...
    def MoveNext(self) -> bool: ...
    def Reset(self) -> None: ...


class X509ChainPolicy:
    def __init__(self) -> None: ...
    @property
    def ApplicationPolicy(self) -> OidCollection: ...
    @property
    def CertificatePolicy(self) -> OidCollection: ...
    @property
    def CustomTrustStore(self) -> X509Certificate2Collection: ...
    @property
    def DisableCertificateDownloads(self) -> bool: ...
    @DisableCertificateDownloads.setter
    def DisableCertificateDownloads(self, value: bool) -> bool: ...
    @property
    def ExtraStore(self) -> X509Certificate2Collection: ...
    @property
    def RevocationFlag(self) -> X509RevocationFlag: ...
    @RevocationFlag.setter
    def RevocationFlag(self, value: X509RevocationFlag) -> X509RevocationFlag: ...
    @property
    def RevocationMode(self) -> X509RevocationMode: ...
    @RevocationMode.setter
    def RevocationMode(self, value: X509RevocationMode) -> X509RevocationMode: ...
    @property
    def TrustMode(self) -> X509ChainTrustMode: ...
    @TrustMode.setter
    def TrustMode(self, value: X509ChainTrustMode) -> X509ChainTrustMode: ...
    @property
    def UrlRetrievalTimeout(self) -> TimeSpan: ...
    @UrlRetrievalTimeout.setter
    def UrlRetrievalTimeout(self, value: TimeSpan) -> TimeSpan: ...
    @property
    def VerificationFlags(self) -> X509VerificationFlags: ...
    @VerificationFlags.setter
    def VerificationFlags(self, value: X509VerificationFlags) -> X509VerificationFlags: ...
    @property
    def VerificationTime(self) -> DateTime: ...
    @VerificationTime.setter
    def VerificationTime(self, value: DateTime) -> DateTime: ...
    def Reset(self) -> None: ...


class X509ChainStatus:
    @property
    def Status(self) -> X509ChainStatusFlags: ...
    @Status.setter
    def Status(self, value: X509ChainStatusFlags) -> X509ChainStatusFlags: ...
    @property
    def StatusInformation(self) -> str: ...
    @StatusInformation.setter
    def StatusInformation(self, value: str) -> str: ...


class X509ChainStatusFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    NoError : X509ChainStatusFlags # 0
    NotTimeValid : X509ChainStatusFlags # 1
    NotTimeNested : X509ChainStatusFlags # 2
    Revoked : X509ChainStatusFlags # 4
    NotSignatureValid : X509ChainStatusFlags # 8
    NotValidForUsage : X509ChainStatusFlags # 16
    UntrustedRoot : X509ChainStatusFlags # 32
    RevocationStatusUnknown : X509ChainStatusFlags # 64
    Cyclic : X509ChainStatusFlags # 128
    InvalidExtension : X509ChainStatusFlags # 256
    InvalidPolicyConstraints : X509ChainStatusFlags # 512
    InvalidBasicConstraints : X509ChainStatusFlags # 1024
    InvalidNameConstraints : X509ChainStatusFlags # 2048
    HasNotSupportedNameConstraint : X509ChainStatusFlags # 4096
    HasNotDefinedNameConstraint : X509ChainStatusFlags # 8192
    HasNotPermittedNameConstraint : X509ChainStatusFlags # 16384
    HasExcludedNameConstraint : X509ChainStatusFlags # 32768
    PartialChain : X509ChainStatusFlags # 65536
    CtlNotTimeValid : X509ChainStatusFlags # 131072
    CtlNotSignatureValid : X509ChainStatusFlags # 262144
    CtlNotValidForUsage : X509ChainStatusFlags # 524288
    HasWeakSignature : X509ChainStatusFlags # 1048576
    OfflineRevocation : X509ChainStatusFlags # 16777216
    NoIssuanceChainPolicy : X509ChainStatusFlags # 33554432
    ExplicitDistrust : X509ChainStatusFlags # 67108864
    HasNotSupportedCriticalExtension : X509ChainStatusFlags # 134217728


class X509ChainTrustMode(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    System : X509ChainTrustMode # 0
    CustomRootTrust : X509ChainTrustMode # 1


class X509ContentType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Unknown : X509ContentType # 0
    Cert : X509ContentType # 1
    SerializedCert : X509ContentType # 2
    Pfx : X509ContentType # 3
    Pkcs12 : X509ContentType # 3
    SerializedStore : X509ContentType # 4
    Pkcs7 : X509ContentType # 5
    Authenticode : X509ContentType # 6


class X509EnhancedKeyUsageExtension(X509Extension):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, encodedEnhancedKeyUsages: AsnEncodedData, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, enhancedKeyUsages: OidCollection, critical: bool) -> None: ...
    @property
    def Critical(self) -> bool: ...
    @Critical.setter
    def Critical(self, value: bool) -> bool: ...
    @property
    def EnhancedKeyUsages(self) -> OidCollection: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    def CopyFrom(self, asnEncodedData: AsnEncodedData) -> None: ...


class X509Extension(AsnEncodedData):
    @typing.overload
    def __init__(self, encodedExtension: AsnEncodedData, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, oid: Oid, rawData: Array_1[int], critical: bool) -> None: ...
    @typing.overload
    def __init__(self, oid: Oid, rawData: ReadOnlySpan_1[int], critical: bool) -> None: ...
    @typing.overload
    def __init__(self, oid: str, rawData: Array_1[int], critical: bool) -> None: ...
    @typing.overload
    def __init__(self, oid: str, rawData: ReadOnlySpan_1[int], critical: bool) -> None: ...
    @property
    def Critical(self) -> bool: ...
    @Critical.setter
    def Critical(self, value: bool) -> bool: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    def CopyFrom(self, asnEncodedData: AsnEncodedData) -> None: ...


class X509ExtensionCollection(IEnumerable_1[X509Extension], ICollection):
    def __init__(self) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def IsSynchronized(self) -> bool: ...
    @property
    def Item(self) -> X509Extension: ...
    @property
    def Item(self) -> X509Extension: ...
    @property
    def SyncRoot(self) -> typing.Any: ...
    def Add(self, extension: X509Extension) -> int: ...
    def CopyTo(self, array: Array_1[X509Extension], index: int) -> None: ...
    def GetEnumerator(self) -> X509ExtensionEnumerator: ...


class X509ExtensionEnumerator(IEnumerator_1[X509Extension]):
    @property
    def Current(self) -> X509Extension: ...
    def MoveNext(self) -> bool: ...
    def Reset(self) -> None: ...


class X509FindType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    FindByThumbprint : X509FindType # 0
    FindBySubjectName : X509FindType # 1
    FindBySubjectDistinguishedName : X509FindType # 2
    FindByIssuerName : X509FindType # 3
    FindByIssuerDistinguishedName : X509FindType # 4
    FindBySerialNumber : X509FindType # 5
    FindByTimeValid : X509FindType # 6
    FindByTimeNotYetValid : X509FindType # 7
    FindByTimeExpired : X509FindType # 8
    FindByTemplateName : X509FindType # 9
    FindByApplicationPolicy : X509FindType # 10
    FindByCertificatePolicy : X509FindType # 11
    FindByExtension : X509FindType # 12
    FindByKeyUsage : X509FindType # 13
    FindBySubjectKeyIdentifier : X509FindType # 14


class X509IncludeOption(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : X509IncludeOption # 0
    ExcludeRoot : X509IncludeOption # 1
    EndCertOnly : X509IncludeOption # 2
    WholeChain : X509IncludeOption # 3


class X509KeyStorageFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    DefaultKeySet : X509KeyStorageFlags # 0
    UserKeySet : X509KeyStorageFlags # 1
    MachineKeySet : X509KeyStorageFlags # 2
    Exportable : X509KeyStorageFlags # 4
    UserProtected : X509KeyStorageFlags # 8
    PersistKeySet : X509KeyStorageFlags # 16
    EphemeralKeySet : X509KeyStorageFlags # 32


class X509KeyUsageExtension(X509Extension):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, encodedKeyUsage: AsnEncodedData, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, keyUsages: X509KeyUsageFlags, critical: bool) -> None: ...
    @property
    def Critical(self) -> bool: ...
    @Critical.setter
    def Critical(self, value: bool) -> bool: ...
    @property
    def KeyUsages(self) -> X509KeyUsageFlags: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    def CopyFrom(self, asnEncodedData: AsnEncodedData) -> None: ...


class X509KeyUsageFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : X509KeyUsageFlags # 0
    EncipherOnly : X509KeyUsageFlags # 1
    CrlSign : X509KeyUsageFlags # 2
    KeyCertSign : X509KeyUsageFlags # 4
    KeyAgreement : X509KeyUsageFlags # 8
    DataEncipherment : X509KeyUsageFlags # 16
    KeyEncipherment : X509KeyUsageFlags # 32
    NonRepudiation : X509KeyUsageFlags # 64
    DigitalSignature : X509KeyUsageFlags # 128
    DecipherOnly : X509KeyUsageFlags # 32768


class X509NameType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    SimpleName : X509NameType # 0
    EmailName : X509NameType # 1
    UpnName : X509NameType # 2
    DnsName : X509NameType # 3
    DnsFromAlternativeName : X509NameType # 4
    UrlName : X509NameType # 5


class X509RevocationFlag(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    EndCertificateOnly : X509RevocationFlag # 0
    EntireChain : X509RevocationFlag # 1
    ExcludeRoot : X509RevocationFlag # 2


class X509RevocationMode(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    NoCheck : X509RevocationMode # 0
    Online : X509RevocationMode # 1
    Offline : X509RevocationMode # 2


class X509SignatureGenerator(abc.ABC):
    @property
    def PublicKey(self) -> PublicKey: ...
    @staticmethod
    def CreateForECDsa(key: ECDsa) -> X509SignatureGenerator: ...
    @staticmethod
    def CreateForRSA(key: RSA, signaturePadding: RSASignaturePadding) -> X509SignatureGenerator: ...
    @abc.abstractmethod
    def GetSignatureAlgorithmIdentifier(self, hashAlgorithm: HashAlgorithmName) -> Array_1[int]: ...
    @abc.abstractmethod
    def SignData(self, data: Array_1[int], hashAlgorithm: HashAlgorithmName) -> Array_1[int]: ...


class X509Store(IDisposable):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, storeHandle: int) -> None: ...
    @typing.overload
    def __init__(self, storeLocation: StoreLocation) -> None: ...
    @typing.overload
    def __init__(self, storeName: str) -> None: ...
    @typing.overload
    def __init__(self, storeName: StoreName) -> None: ...
    @typing.overload
    def __init__(self, storeName: StoreName, storeLocation: StoreLocation) -> None: ...
    @typing.overload
    def __init__(self, storeName: str, storeLocation: StoreLocation) -> None: ...
    @typing.overload
    def __init__(self, storeName: StoreName, storeLocation: StoreLocation, flags: OpenFlags) -> None: ...
    @typing.overload
    def __init__(self, storeName: str, storeLocation: StoreLocation, flags: OpenFlags) -> None: ...
    @property
    def Certificates(self) -> X509Certificate2Collection: ...
    @property
    def IsOpen(self) -> bool: ...
    @property
    def Location(self) -> StoreLocation: ...
    @Location.setter
    def Location(self, value: StoreLocation) -> StoreLocation: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def StoreHandle(self) -> int: ...
    def Add(self, certificate: X509Certificate2) -> None: ...
    def AddRange(self, certificates: X509Certificate2Collection) -> None: ...
    def Close(self) -> None: ...
    def Dispose(self) -> None: ...
    def Open(self, flags: OpenFlags) -> None: ...
    def Remove(self, certificate: X509Certificate2) -> None: ...
    def RemoveRange(self, certificates: X509Certificate2Collection) -> None: ...


class X509SubjectKeyIdentifierExtension(X509Extension):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, encodedSubjectKeyIdentifier: AsnEncodedData, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, key: PublicKey, algorithm: X509SubjectKeyIdentifierHashAlgorithm, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, key: PublicKey, critical: bool) -> None: ...
    @typing.overload
    def __init__(self, subjectKeyIdentifier: Array_1[int], critical: bool) -> None: ...
    @typing.overload
    def __init__(self, subjectKeyIdentifier: ReadOnlySpan_1[int], critical: bool) -> None: ...
    @typing.overload
    def __init__(self, subjectKeyIdentifier: str, critical: bool) -> None: ...
    @property
    def Critical(self) -> bool: ...
    @Critical.setter
    def Critical(self, value: bool) -> bool: ...
    @property
    def Oid(self) -> Oid: ...
    @Oid.setter
    def Oid(self, value: Oid) -> Oid: ...
    @property
    def RawData(self) -> Array_1[int]: ...
    @RawData.setter
    def RawData(self, value: Array_1[int]) -> Array_1[int]: ...
    @property
    def SubjectKeyIdentifier(self) -> str: ...
    def CopyFrom(self, asnEncodedData: AsnEncodedData) -> None: ...


class X509SubjectKeyIdentifierHashAlgorithm(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Sha1 : X509SubjectKeyIdentifierHashAlgorithm # 0
    ShortSha1 : X509SubjectKeyIdentifierHashAlgorithm # 1
    CapiSha1 : X509SubjectKeyIdentifierHashAlgorithm # 2


class X509VerificationFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    NoFlag : X509VerificationFlags # 0
    IgnoreNotTimeValid : X509VerificationFlags # 1
    IgnoreCtlNotTimeValid : X509VerificationFlags # 2
    IgnoreNotTimeNested : X509VerificationFlags # 4
    IgnoreInvalidBasicConstraints : X509VerificationFlags # 8
    AllowUnknownCertificateAuthority : X509VerificationFlags # 16
    IgnoreWrongUsage : X509VerificationFlags # 32
    IgnoreInvalidName : X509VerificationFlags # 64
    IgnoreInvalidPolicy : X509VerificationFlags # 128
    IgnoreEndRevocationUnknown : X509VerificationFlags # 256
    IgnoreCtlSignerRevocationUnknown : X509VerificationFlags # 512
    IgnoreCertificateAuthorityRevocationUnknown : X509VerificationFlags # 1024
    IgnoreRootRevocationUnknown : X509VerificationFlags # 2048
    AllFlags : X509VerificationFlags # 4095

