//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Networking.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        interface IAsyncAction;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass HostName;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;

            interface IInputStream;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                typedef enum CertificateChainPolicy CertificateChainPolicy;

                typedef enum ChainValidationResult ChainValidationResult;

                typedef enum EnrollKeyUsages EnrollKeyUsages;

                typedef enum ExportOption ExportOption;

                typedef enum InstallOptions InstallOptions;

                typedef enum KeyProtectionLevel KeyProtectionLevel;

                typedef enum KeySize KeySize;

                typedef enum SignatureValidationResult SignatureValidationResult;

                interface ICertificate;

                interface ICertificate2;

                interface ICertificate3;

                interface ICertificateChain;

                interface ICertificateEnrollmentManagerStatics;

                interface ICertificateEnrollmentManagerStatics2;

                interface ICertificateEnrollmentManagerStatics3;

                interface ICertificateExtension;

                interface ICertificateFactory;

                interface ICertificateKeyUsages;

                interface ICertificateQuery;

                interface ICertificateQuery2;

                interface ICertificateRequestProperties;

                interface ICertificateRequestProperties2;

                interface ICertificateRequestProperties3;

                interface ICertificateRequestProperties4;

                interface ICertificateStore;

                interface ICertificateStore2;

                interface ICertificateStoresStatics;

                interface ICertificateStoresStatics2;

                interface IChainBuildingParameters;

                interface IChainValidationParameters;

                interface ICmsAttachedSignature;

                interface ICmsAttachedSignatureFactory;

                interface ICmsAttachedSignatureStatics;

                interface ICmsDetachedSignature;

                interface ICmsDetachedSignatureFactory;

                interface ICmsDetachedSignatureStatics;

                interface ICmsSignerInfo;

                interface ICmsTimestampInfo;

                interface IKeyAlgorithmNamesStatics;

                interface IKeyAlgorithmNamesStatics2;

                interface IKeyAttestationHelperStatics;

                interface IKeyAttestationHelperStatics2;

                interface IKeyStorageProviderNamesStatics;

                interface IKeyStorageProviderNamesStatics2;

                interface IPfxImportParameters;

                interface IStandardCertificateStoreNamesStatics;

                interface ISubjectAlternativeNameInfo;

                interface ISubjectAlternativeNameInfo2;

                interface IUserCertificateEnrollmentManager;

                interface IUserCertificateEnrollmentManager2;

                interface IUserCertificateStore;

                runtimeclass Certificate;

                runtimeclass CertificateChain;

                runtimeclass CertificateEnrollmentManager;

                runtimeclass CertificateExtension;

                runtimeclass CertificateKeyUsages;

                runtimeclass CertificateQuery;

                runtimeclass CertificateRequestProperties;

                runtimeclass CertificateStore;

                runtimeclass CertificateStores;

                runtimeclass ChainBuildingParameters;

                runtimeclass ChainValidationParameters;

                runtimeclass CmsAttachedSignature;

                runtimeclass CmsDetachedSignature;

                runtimeclass CmsSignerInfo;

                runtimeclass CmsTimestampInfo;

                runtimeclass KeyAlgorithmNames;

                runtimeclass KeyAttestationHelper;

                runtimeclass KeyStorageProviderNames;

                runtimeclass PfxImportParameters;

                runtimeclass StandardCertificateStoreNames;

                runtimeclass SubjectAlternativeNameInfo;

                runtimeclass UserCertificateEnrollmentManager;

                runtimeclass UserCertificateStore;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.Certificate*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.CertificateExtension*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.ChainValidationResult>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Security.Cryptography.Certificates.Certificate*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Security.Cryptography.Certificates.CertificateExtension*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Security.Cryptography.Certificates.ChainValidationResult>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.CertificateExtension*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.ChainValidationResult>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>;

                    interface Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.Certificate*>;

                    interface Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.CertificateExtension*>;

                    interface Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.ChainValidationResult>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Certificates.CertificateChain*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Certificates.SignatureValidationResult>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum CertificateChainPolicy
                {
                    Base             = 0,
                    Ssl              = 1,
                    NTAuthentication = 2,
                    MicrosoftRoot    = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum ChainValidationResult
                {
                    Success                           = 0,
                    Untrusted                         = 1,
                    Revoked                           = 2,
                    Expired                           = 3,
                    IncompleteChain                   = 4,
                    InvalidSignature                  = 5,
                    WrongUsage                        = 6,
                    InvalidName                       = 7,
                    InvalidCertificateAuthorityPolicy = 8,
                    BasicConstraintsError             = 9,
                    UnknownCriticalExtension          = 10,
                    RevocationInformationMissing      = 11,
                    RevocationFailure                 = 12,
                    OtherErrors                       = 13
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [flags]
                enum EnrollKeyUsages
                {
                    None         = 0x0,
                    Decryption   = 0x1,
                    Signing      = 0x2,
                    KeyAgreement = 0x4,
                    All          = 0xFFFFFF
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum ExportOption
                {
                    NotExportable = 0,
                    Exportable    = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [flags]
                enum InstallOptions
                {
                    None          = 0x0,
                    DeleteExpired = 0x1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum KeyProtectionLevel
                {
                    NoConsent              = 0,
                    ConsentOnly            = 1,
                    ConsentWithPassword    = 2,
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    ConsentWithFingerprint = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum KeySize
                {
                    Invalid = 0,
                    Rsa2048 = 2048,
                    Rsa4096 = 4096
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum SignatureValidationResult
                {
                    Success          = 0,
                    InvalidParameter = 1,
                    BadMessage       = 2,
                    InvalidSignature = 3,
                    OtherErrors      = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.Certificate)]
                [uuid(333F740C-04D8-43B3-B278-8C5FCC9BE5A0)]
                interface ICertificate : IInspectable
                {
                    [overload("BuildChainAsync")] HRESULT BuildChainAsync([in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.Certificate*>* certificates, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Certificates.CertificateChain*>** value);
                    [overload("BuildChainAsync")] HRESULT BuildChainWithParametersAsync([in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.Certificate*>* certificates, [in] Windows.Security.Cryptography.Certificates.ChainBuildingParameters* parameters, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Certificates.CertificateChain*>** value);
                    [propget] HRESULT SerialNumber([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [overload("GetHashValue")] HRESULT GetHashValue([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [overload("GetHashValue")] HRESULT GetHashValueWithAlgorithm([in] HSTRING hashAlgorithmName, [out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    HRESULT GetCertificateBlob([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propget] HRESULT Subject([out] [retval] HSTRING* value);
                    [propget] HRESULT Issuer([out] [retval] HSTRING* value);
                    [propget] HRESULT HasPrivateKey([out] [retval] boolean* value);
                    [propget] HRESULT IsStronglyProtected([out] [retval] boolean* value);
                    [propget] HRESULT ValidFrom([out] [retval] Windows.Foundation.DateTime* value);
                    [propget] HRESULT ValidTo([out] [retval] Windows.Foundation.DateTime* value);
                    [propget] HRESULT EnhancedKeyUsages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propput] HRESULT FriendlyName([in] HSTRING value);
                    [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.Certificate)]
                [uuid(17B8374C-8A25-4D96-A492-8FC29AC4FDA6)]
                interface ICertificate2 : IInspectable
                {
                    [propget] HRESULT IsSecurityDeviceBound([out] [retval] boolean* value);
                    [propget] HRESULT KeyUsages([out] [retval] Windows.Security.Cryptography.Certificates.CertificateKeyUsages** value);
                    [propget] HRESULT KeyAlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT SignatureAlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT SignatureHashAlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT SubjectAlternativeName([out] [retval] Windows.Security.Cryptography.Certificates.SubjectAlternativeNameInfo** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.Certificate)]
                [uuid(BE51A966-AE5F-4652-ACE7-C6D7E7724CF3)]
                interface ICertificate3 : IInspectable
                {
                    [propget] HRESULT IsPerUser([out] [retval] boolean* value);
                    [propget] HRESULT StoreName([out] [retval] HSTRING* value);
                    [propget] HRESULT KeyStorageProviderName([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateChain)]
                [uuid(20BF5385-3691-4501-A62C-FD97278B31EE)]
                interface ICertificateChain : IInspectable
                {
                    [overload("Validate")] HRESULT Validate([out] [retval] Windows.Security.Cryptography.Certificates.ChainValidationResult* status);
                    [overload("Validate")] HRESULT ValidateWithParameters([in] Windows.Security.Cryptography.Certificates.ChainValidationParameters* parameter, [out] [retval] Windows.Security.Cryptography.Certificates.ChainValidationResult* status);
                    HRESULT GetCertificates([in] boolean includeRoot, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** certificates);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager)]
                [uuid(8846EF3F-A986-48FB-9FD7-9AEC06935BF1)]
                interface ICertificateEnrollmentManagerStatics : IInspectable
                {
                    HRESULT CreateRequestAsync([in] Windows.Security.Cryptography.Certificates.CertificateRequestProperties* request, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** value);
                    HRESULT InstallCertificateAsync([in] HSTRING certificate, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [out] [retval] Windows.Foundation.IAsyncAction** value);
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.ExportOption exportable, [in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel keyProtectionLevel, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [in] HSTRING friendlyName, [out] [retval] Windows.Foundation.IAsyncAction** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager)]
                [uuid(DC5B1C33-6429-4014-999C-5D9735802D1D)]
                interface ICertificateEnrollmentManagerStatics2 : IInspectable
                {
                    [propget] HRESULT UserCertificateEnrollmentManager([out] [retval] Windows.Security.Cryptography.Certificates.UserCertificateEnrollmentManager** value);
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataToKspAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.ExportOption exportable, [in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel keyProtectionLevel, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [in] HSTRING friendlyName, [in] HSTRING keyStorageProvider, [out] [retval] Windows.Foundation.IAsyncAction** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager)]
                [uuid(FDEC82BE-617C-425A-B72D-398B26AC7264)]
                interface ICertificateEnrollmentManagerStatics3 : IInspectable
                {
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataToKspWithParametersAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.PfxImportParameters* pfxImportParameters, [out] [retval] Windows.Foundation.IAsyncAction** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateExtension)]
                [uuid(84CF0656-A9E6-454D-8E45-2EA7C4BCD53B)]
                interface ICertificateExtension : IInspectable
                {
                    [propget] HRESULT ObjectId([out] [retval] HSTRING* value);
                    [propput] HRESULT ObjectId([in] HSTRING value);
                    [propget] HRESULT IsCritical([out] [retval] boolean* value);
                    [propput] HRESULT IsCritical([in] boolean value);
                    HRESULT EncodeValue([in] HSTRING value);
                    [propget] HRESULT Value([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [propput] HRESULT Value([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.Certificate)]
                [uuid(17B4221C-4BAF-44A2-9608-04FB62B16942)]
                interface ICertificateFactory : IInspectable
                {
                    HRESULT CreateCertificate([in] Windows.Storage.Streams.IBuffer* certBlob, [out] [retval] Windows.Security.Cryptography.Certificates.Certificate** certificate);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateKeyUsages)]
                [uuid(6AC6206F-E1CF-486A-B485-A69C83E46FD1)]
                interface ICertificateKeyUsages : IInspectable
                {
                    [propget] HRESULT EncipherOnly([out] [retval] boolean* value);
                    [propput] HRESULT EncipherOnly([in] boolean value);
                    [propget] HRESULT CrlSign([out] [retval] boolean* value);
                    [propput] HRESULT CrlSign([in] boolean value);
                    [propget] HRESULT KeyCertificateSign([out] [retval] boolean* value);
                    [propput] HRESULT KeyCertificateSign([in] boolean value);
                    [propget] HRESULT KeyAgreement([out] [retval] boolean* value);
                    [propput] HRESULT KeyAgreement([in] boolean value);
                    [propget] HRESULT DataEncipherment([out] [retval] boolean* value);
                    [propput] HRESULT DataEncipherment([in] boolean value);
                    [propget] HRESULT KeyEncipherment([out] [retval] boolean* value);
                    [propput] HRESULT KeyEncipherment([in] boolean value);
                    [propget] HRESULT NonRepudiation([out] [retval] boolean* value);
                    [propput] HRESULT NonRepudiation([in] boolean value);
                    [propget] HRESULT DigitalSignature([out] [retval] boolean* value);
                    [propput] HRESULT DigitalSignature([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateQuery)]
                [uuid(5B082A31-A728-4916-B5EE-FFCB8ACF2417)]
                interface ICertificateQuery : IInspectable
                {
                    [propget] HRESULT EnhancedKeyUsages([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT IssuerName([out] [retval] HSTRING* value);
                    [propput] HRESULT IssuerName([in] HSTRING value);
                    [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                    [propput] HRESULT FriendlyName([in] HSTRING value);
                    [propget] HRESULT Thumbprint([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [propput] HRESULT Thumbprint([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
                    [propget] HRESULT HardwareOnly([out] [retval] boolean* value);
                    [propput] HRESULT HardwareOnly([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateQuery)]
                [uuid(935A0AF7-0BD9-4F75-B8C2-E27A7F74EECD)]
                interface ICertificateQuery2 : IInspectable
                {
                    [propget] HRESULT IncludeDuplicates([out] [retval] boolean* value);
                    [propput] HRESULT IncludeDuplicates([in] boolean value);
                    [propget] HRESULT IncludeExpiredCertificates([out] [retval] boolean* value);
                    [propput] HRESULT IncludeExpiredCertificates([in] boolean value);
                    [propget] HRESULT StoreName([out] [retval] HSTRING* value);
                    [propput] HRESULT StoreName([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateRequestProperties)]
                [uuid(487E84F6-94E2-4DCE-8833-1A700A37A29A)]
                interface ICertificateRequestProperties : IInspectable
                {
                    [propget] HRESULT Subject([out] [retval] HSTRING* value);
                    [propput] HRESULT Subject([in] HSTRING value);
                    [propget] HRESULT KeyAlgorithmName([out] [retval] HSTRING* value);
                    [propput] HRESULT KeyAlgorithmName([in] HSTRING value);
                    [propget] HRESULT KeySize([out] [retval] UINT32* value);
                    [propput] HRESULT KeySize([in] UINT32 value);
                    [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                    [propput] HRESULT FriendlyName([in] HSTRING value);
                    [propget] HRESULT HashAlgorithmName([out] [retval] HSTRING* value);
                    [propput] HRESULT HashAlgorithmName([in] HSTRING value);
                    [propget] HRESULT Exportable([out] [retval] Windows.Security.Cryptography.Certificates.ExportOption* value);
                    [propput] HRESULT Exportable([in] Windows.Security.Cryptography.Certificates.ExportOption value);
                    [propget] HRESULT KeyUsages([out] [retval] Windows.Security.Cryptography.Certificates.EnrollKeyUsages* value);
                    [propput] HRESULT KeyUsages([in] Windows.Security.Cryptography.Certificates.EnrollKeyUsages value);
                    [propget] HRESULT KeyProtectionLevel([out] [retval] Windows.Security.Cryptography.Certificates.KeyProtectionLevel* value);
                    [propput] HRESULT KeyProtectionLevel([in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel value);
                    [propget] HRESULT KeyStorageProviderName([out] [retval] HSTRING* value);
                    [propput] HRESULT KeyStorageProviderName([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateRequestProperties)]
                [uuid(3DA0C954-D73F-4FF3-A0A6-0677C0ADA05B)]
                interface ICertificateRequestProperties2 : IInspectable
                {
                    [propget] HRESULT SmartcardReaderName([out] [retval] HSTRING* value);
                    [propput] HRESULT SmartcardReaderName([in] HSTRING value);
                    [propget] HRESULT SigningCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                    [propput] HRESULT SigningCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
                    [propget] HRESULT AttestationCredentialCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                    [propput] HRESULT AttestationCredentialCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateRequestProperties)]
                [uuid(E687F616-734D-46B1-9D4C-6EDFDBFC845B)]
                interface ICertificateRequestProperties3 : IInspectable
                {
                    [propget] HRESULT CurveName([out] [retval] HSTRING* value);
                    [propput] HRESULT CurveName([in] HSTRING value);
                    [propget] HRESULT CurveParameters([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [propput] HRESULT CurveParameters([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
                    [propget] HRESULT ContainerNamePrefix([out] [retval] HSTRING* value);
                    [propput] HRESULT ContainerNamePrefix([in] HSTRING value);
                    [propget] HRESULT ContainerName([out] [retval] HSTRING* value);
                    [propput] HRESULT ContainerName([in] HSTRING value);
                    [propget] HRESULT UseExistingKey([out] [retval] boolean* value);
                    [propput] HRESULT UseExistingKey([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateRequestProperties)]
                [uuid(4E429AD2-1C61-4FEA-B8FE-135FB19CDCE4)]
                interface ICertificateRequestProperties4 : IInspectable
                {
                    [propget] HRESULT SuppressedDefaults([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT SubjectAlternativeName([out] [retval] Windows.Security.Cryptography.Certificates.SubjectAlternativeNameInfo** value);
                    [propget] HRESULT Extensions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.CertificateExtension*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateStore)]
                [uuid(B0BFF720-344E-4331-AF14-A7F7A7EBC93A)]
                interface ICertificateStore : IInspectable
                {
                    HRESULT Add([in] Windows.Security.Cryptography.Certificates.Certificate* certificate);
                    HRESULT Delete([in] Windows.Security.Cryptography.Certificates.Certificate* certificate);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateStore)]
                [uuid(C7E68E4A-417D-4D1A-BABD-15687E549974)]
                interface ICertificateStore2 : IInspectable
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateStores)]
                [uuid(FBECC739-C6FE-4DE7-99CF-74C3E596E032)]
                interface ICertificateStoresStatics : IInspectable
                {
                    [overload("FindAllAsync")] HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>*>** value);
                    [overload("FindAllAsync")] HRESULT FindAllWithQueryAsync([in] Windows.Security.Cryptography.Certificates.CertificateQuery* query, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>*>** value);
                    [propget] HRESULT TrustedRootCertificationAuthorities([out] [retval] Windows.Security.Cryptography.Certificates.CertificateStore** value);
                    [propget] HRESULT IntermediateCertificationAuthorities([out] [retval] Windows.Security.Cryptography.Certificates.CertificateStore** value);
                    HRESULT GetStoreByName([in] HSTRING storeName, [out] [retval] Windows.Security.Cryptography.Certificates.CertificateStore** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CertificateStores)]
                [uuid(FA900B79-A0D4-4B8C-BC55-C0A37EB141ED)]
                interface ICertificateStoresStatics2 : IInspectable
                {
                    HRESULT GetUserStoreByName([in] HSTRING storeName, [out] [retval] Windows.Security.Cryptography.Certificates.UserCertificateStore** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.ChainBuildingParameters)]
                [uuid(422BA922-7C8D-47B7-B59B-B12703733AC3)]
                interface IChainBuildingParameters : IInspectable
                {
                    [propget] HRESULT EnhancedKeyUsages([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT ValidationTimestamp([out] [retval] Windows.Foundation.DateTime* value);
                    [propput] HRESULT ValidationTimestamp([in] Windows.Foundation.DateTime value);
                    [propget] HRESULT RevocationCheckEnabled([out] [retval] boolean* value);
                    [propput] HRESULT RevocationCheckEnabled([in] boolean value);
                    [propget] HRESULT NetworkRetrievalEnabled([out] [retval] boolean* value);
                    [propput] HRESULT NetworkRetrievalEnabled([in] boolean value);
                    [propget] HRESULT AuthorityInformationAccessEnabled([out] [retval] boolean* value);
                    [propput] HRESULT AuthorityInformationAccessEnabled([in] boolean value);
                    [propget] HRESULT CurrentTimeValidationEnabled([out] [retval] boolean* value);
                    [propput] HRESULT CurrentTimeValidationEnabled([in] boolean value);
                    [propget] HRESULT ExclusiveTrustRoots([out] [retval] Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.Certificate*>** certificates);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.ChainValidationParameters)]
                [uuid(C4743B4A-7EB0-4B56-A040-B9C8E655DDF3)]
                interface IChainValidationParameters : IInspectable
                {
                    [propget] HRESULT CertificateChainPolicy([out] [retval] Windows.Security.Cryptography.Certificates.CertificateChainPolicy* value);
                    [propput] HRESULT CertificateChainPolicy([in] Windows.Security.Cryptography.Certificates.CertificateChainPolicy value);
                    [propget] HRESULT ServerDnsName([out] [retval] Windows.Networking.HostName** value);
                    [propput] HRESULT ServerDnsName([in] Windows.Networking.HostName* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsAttachedSignature)]
                [uuid(61899D9D-3757-4ECB-BDDC-0CA357D7A936)]
                interface ICmsAttachedSignature : IInspectable
                {
                    [propget] HRESULT Certificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
                    [propget] HRESULT Content([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                    [propget] HRESULT Signers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>** value);
                    HRESULT VerifySignature([out] [retval] Windows.Security.Cryptography.Certificates.SignatureValidationResult* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsAttachedSignature)]
                [uuid(D0C8FC15-F757-4C64-A362-52CC1C77CFFB)]
                interface ICmsAttachedSignatureFactory : IInspectable
                {
                    HRESULT CreateCmsAttachedSignature([in] Windows.Storage.Streams.IBuffer* inputBlob, [out] [retval] Windows.Security.Cryptography.Certificates.CmsAttachedSignature** cmsSignedData);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsAttachedSignature)]
                [uuid(87989C8E-B0AD-498D-A7F5-78B59BCE4B36)]
                interface ICmsAttachedSignatureStatics : IInspectable
                {
                    HRESULT GenerateSignatureAsync([in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>* signers, [in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.Certificate*>* certificates, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer*>** outputBlob);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsDetachedSignature)]
                [uuid(0F1EF154-F65E-4536-8339-5944081DB2CA)]
                interface ICmsDetachedSignature : IInspectable
                {
                    [propget] HRESULT Certificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
                    [propget] HRESULT Signers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>** value);
                    HRESULT VerifySignatureAsync([in] Windows.Storage.Streams.IInputStream* data, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Certificates.SignatureValidationResult>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsDetachedSignature)]
                [uuid(C4AB3503-AE7F-4387-AD19-00F150E48EBB)]
                interface ICmsDetachedSignatureFactory : IInspectable
                {
                    HRESULT CreateCmsDetachedSignature([in] Windows.Storage.Streams.IBuffer* inputBlob, [out] [retval] Windows.Security.Cryptography.Certificates.CmsDetachedSignature** cmsSignedData);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsDetachedSignature)]
                [uuid(3D114CFD-BF9B-4682-9BE6-91F57C053808)]
                interface ICmsDetachedSignatureStatics : IInspectable
                {
                    HRESULT GenerateSignatureAsync([in] Windows.Storage.Streams.IInputStream* data, [in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.CmsSignerInfo*>* signers, [in] Windows.Foundation.Collections.IIterable<Windows.Security.Cryptography.Certificates.Certificate*>* certificates, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer*>** outputBlob);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsSignerInfo)]
                [uuid(50D020DB-1D2F-4C1A-B5C5-D0188FF91F47)]
                interface ICmsSignerInfo : IInspectable
                {
                    [propget] HRESULT Certificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                    [propput] HRESULT Certificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
                    [propget] HRESULT HashAlgorithmName([out] [retval] HSTRING* value);
                    [propput] HRESULT HashAlgorithmName([in] HSTRING value);
                    [propget] HRESULT TimestampInfo([out] [retval] Windows.Security.Cryptography.Certificates.CmsTimestampInfo** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.CmsTimestampInfo)]
                [uuid(2F5F00F2-2C18-4F88-8435-C534086076F5)]
                interface ICmsTimestampInfo : IInspectable
                {
                    [propget] HRESULT SigningCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                    [propget] HRESULT Certificates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Cryptography.Certificates.Certificate*>** value);
                    [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyAlgorithmNames)]
                [uuid(479065D7-7AC7-4581-8C3B-D07027140448)]
                interface IKeyAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT Rsa([out] [retval] HSTRING* value);
                    [propget] HRESULT Dsa([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdh256([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdh384([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdh521([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdsa256([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdsa384([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdsa521([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyAlgorithmNames)]
                [uuid(C99B5686-E1FD-4A4A-893D-A26F33DD8BB4)]
                interface IKeyAlgorithmNamesStatics2 : IInspectable
                {
                    [propget] HRESULT Ecdsa([out] [retval] HSTRING* value);
                    [propget] HRESULT Ecdh([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyAttestationHelper)]
                [uuid(1648E246-F644-4326-88BE-3AF102D30E0C)]
                interface IKeyAttestationHelperStatics : IInspectable
                {
                    [overload("DecryptTpmAttestationCredentialAsync")] HRESULT DecryptTpmAttestationCredentialAsync([in] HSTRING credential, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** value);
                    HRESULT GetTpmAttestationCredentialId([in] HSTRING credential, [out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyAttestationHelper)]
                [uuid(9C590B2C-A6C6-4A5E-9E64-E85D5279DF97)]
                interface IKeyAttestationHelperStatics2 : IInspectable
                {
                    [overload("DecryptTpmAttestationCredentialAsync")] HRESULT DecryptTpmAttestationCredentialWithContainerNameAsync([in] HSTRING credential, [in] HSTRING containerName, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyStorageProviderNames)]
                [uuid(AF186AE0-5529-4602-BD94-0AAB91957B5C)]
                interface IKeyStorageProviderNamesStatics : IInspectable
                {
                    [propget] HRESULT SoftwareKeyStorageProvider([out] [retval] HSTRING* value);
                    [propget] HRESULT SmartcardKeyStorageProvider([out] [retval] HSTRING* value);
                    [propget] HRESULT PlatformKeyStorageProvider([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.KeyStorageProviderNames)]
                [uuid(262D743D-9C2E-41CC-8812-C4D971DD7C60)]
                interface IKeyStorageProviderNamesStatics2 : IInspectable
                {
                    [propget] HRESULT PassportKeyStorageProvider([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.PfxImportParameters)]
                [uuid(680D3511-9A08-47C8-864A-2EDD4D8EB46C)]
                interface IPfxImportParameters : IInspectable
                {
                    [propget] HRESULT Exportable([out] [retval] Windows.Security.Cryptography.Certificates.ExportOption* value);
                    [propput] HRESULT Exportable([in] Windows.Security.Cryptography.Certificates.ExportOption value);
                    [propget] HRESULT KeyProtectionLevel([out] [retval] Windows.Security.Cryptography.Certificates.KeyProtectionLevel* value);
                    [propput] HRESULT KeyProtectionLevel([in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel value);
                    [propget] HRESULT InstallOptions([out] [retval] Windows.Security.Cryptography.Certificates.InstallOptions* value);
                    [propput] HRESULT InstallOptions([in] Windows.Security.Cryptography.Certificates.InstallOptions value);
                    [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                    [propput] HRESULT FriendlyName([in] HSTRING value);
                    [propget] HRESULT KeyStorageProviderName([out] [retval] HSTRING* value);
                    [propput] HRESULT KeyStorageProviderName([in] HSTRING value);
                    [propget] HRESULT ContainerNamePrefix([out] [retval] HSTRING* value);
                    [propput] HRESULT ContainerNamePrefix([in] HSTRING value);
                    [propget] HRESULT ReaderName([out] [retval] HSTRING* value);
                    [propput] HRESULT ReaderName([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.StandardCertificateStoreNames)]
                [uuid(0C154ADB-A496-41F8-8FE5-9E96F36EFBF8)]
                interface IStandardCertificateStoreNamesStatics : IInspectable
                {
                    [propget] HRESULT Personal([out] [retval] HSTRING* value);
                    [propget] HRESULT TrustedRootCertificationAuthorities([out] [retval] HSTRING* value);
                    [propget] HRESULT IntermediateCertificationAuthorities([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.SubjectAlternativeNameInfo)]
                [uuid(582859F1-569D-4C20-BE7B-4E1C9A0BC52B)]
                interface ISubjectAlternativeNameInfo : IInspectable
                {
                    [propget] HRESULT EmailName([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT IPAddress([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT Url([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT DnsName([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT DistinguishedName([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT PrincipalName([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.SubjectAlternativeNameInfo)]
                [uuid(437A78C6-1C51-41EA-B34A-3D654398A370)]
                interface ISubjectAlternativeNameInfo2 : IInspectable
                {
                    [propget] HRESULT EmailNames([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT IPAddresses([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT Urls([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT DnsNames([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT DistinguishedNames([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT PrincipalNames([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                    [propget] HRESULT Extension([out] [retval] Windows.Security.Cryptography.Certificates.CertificateExtension** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.UserCertificateEnrollmentManager)]
                [uuid(96313718-22E1-4819-B20B-AB46A6ECA06E)]
                interface IUserCertificateEnrollmentManager : IInspectable
                {
                    HRESULT CreateRequestAsync([in] Windows.Security.Cryptography.Certificates.CertificateRequestProperties* request, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** value);
                    HRESULT InstallCertificateAsync([in] HSTRING certificate, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [out] [retval] Windows.Foundation.IAsyncAction** value);
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.ExportOption exportable, [in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel keyProtectionLevel, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [in] HSTRING friendlyName, [out] [retval] Windows.Foundation.IAsyncAction** value);
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataToKspAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.ExportOption exportable, [in] Windows.Security.Cryptography.Certificates.KeyProtectionLevel keyProtectionLevel, [in] Windows.Security.Cryptography.Certificates.InstallOptions installOption, [in] HSTRING friendlyName, [in] HSTRING keyStorageProvider, [out] [retval] Windows.Foundation.IAsyncAction** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.UserCertificateEnrollmentManager)]
                [uuid(0DAD9CB1-65DE-492A-B86D-FC5C482C3747)]
                interface IUserCertificateEnrollmentManager2 : IInspectable
                {
                    [overload("ImportPfxDataAsync")] HRESULT ImportPfxDataToKspWithParametersAsync([in] HSTRING pfxData, [in] HSTRING password, [in] Windows.Security.Cryptography.Certificates.PfxImportParameters* pfxImportParameters, [out] [retval] Windows.Foundation.IAsyncAction** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Security.Cryptography.Certificates.UserCertificateStore)]
                [uuid(C9FB1D83-789F-4B4E-9180-045A757AAC6D)]
                interface IUserCertificateStore : IInspectable
                {
                    HRESULT RequestAddAsync([in] Windows.Security.Cryptography.Certificates.Certificate* certificate, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                    HRESULT RequestDeleteAsync([in] Windows.Security.Cryptography.Certificates.Certificate* certificate, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                }

                [activatable(Windows.Security.Cryptography.Certificates.ICertificateFactory, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass Certificate
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificate;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.ICertificate2;
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Security.Cryptography.Certificates.ICertificate3;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateChain
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateChain;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.ICertificateEnrollmentManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.ICertificateEnrollmentManagerStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.ICertificateEnrollmentManagerStatics3, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass CertificateEnrollmentManager
                {
                }

                [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateExtension
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateExtension;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateKeyUsages
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateKeyUsages;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateQuery
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateQuery;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.ICertificateQuery2;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateRequestProperties
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateRequestProperties;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.ICertificateRequestProperties2;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.ICertificateRequestProperties3;
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Security.Cryptography.Certificates.ICertificateRequestProperties4;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CertificateStore
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICertificateStore;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.ICertificateStore2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.ICertificateStoresStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.ICertificateStoresStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
                [threading(both)]
                runtimeclass CertificateStores
                {
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ChainBuildingParameters
                {
                    [default] interface Windows.Security.Cryptography.Certificates.IChainBuildingParameters;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ChainValidationParameters
                {
                    [default] interface Windows.Security.Cryptography.Certificates.IChainValidationParameters;
                }

                [activatable(Windows.Security.Cryptography.Certificates.ICmsAttachedSignatureFactory, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.ICmsAttachedSignatureStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass CmsAttachedSignature
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICmsAttachedSignature;
                }

                [activatable(Windows.Security.Cryptography.Certificates.ICmsDetachedSignatureFactory, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.ICmsDetachedSignatureStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass CmsDetachedSignature
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICmsDetachedSignature;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CmsSignerInfo
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICmsSignerInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CmsTimestampInfo
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ICmsTimestampInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.IKeyAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.IKeyAlgorithmNamesStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass KeyAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.IKeyAttestationHelperStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.IKeyAttestationHelperStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass KeyAttestationHelper
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.IKeyStorageProviderNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Certificates.IKeyStorageProviderNamesStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass KeyStorageProviderNames
                {
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PfxImportParameters
                {
                    [default] interface Windows.Security.Cryptography.Certificates.IPfxImportParameters;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Certificates.IStandardCertificateStoreNamesStatics, Windows.Foundation.UniversalApiContract, 3.0)]
                [threading(both)]
                runtimeclass StandardCertificateStoreNames
                {
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SubjectAlternativeNameInfo
                {
                    [default] interface Windows.Security.Cryptography.Certificates.ISubjectAlternativeNameInfo;
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Security.Cryptography.Certificates.ISubjectAlternativeNameInfo2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass UserCertificateEnrollmentManager
                {
                    [default] interface Windows.Security.Cryptography.Certificates.IUserCertificateEnrollmentManager;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Certificates.IUserCertificateEnrollmentManager2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass UserCertificateStore
                {
                    [default] interface Windows.Security.Cryptography.Certificates.IUserCertificateStore;
                }
            }
        }
    }
}
