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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Security.Cryptography.Certificates.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                runtimeclass Certificate;
            }
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Core
            {
                typedef enum Capi1KdfTargetAlgorithm Capi1KdfTargetAlgorithm;

                typedef enum CryptographicPadding CryptographicPadding;

                typedef enum CryptographicPrivateKeyBlobType CryptographicPrivateKeyBlobType;

                typedef enum CryptographicPublicKeyBlobType CryptographicPublicKeyBlobType;

                interface IAsymmetricAlgorithmNamesStatics;

                interface IAsymmetricAlgorithmNamesStatics2;

                interface IAsymmetricKeyAlgorithmProvider;

                interface IAsymmetricKeyAlgorithmProvider2;

                interface IAsymmetricKeyAlgorithmProviderStatics;

                interface ICryptographicEngineStatics;

                interface ICryptographicEngineStatics2;

                interface ICryptographicKey;

                interface IEccCurveNamesStatics;

                interface IEncryptedAndAuthenticatedData;

                interface IHashAlgorithmNamesStatics;

                interface IHashAlgorithmProvider;

                interface IHashAlgorithmProviderStatics;

                interface IHashComputation;

                interface IKeyDerivationAlgorithmNamesStatics;

                interface IKeyDerivationAlgorithmNamesStatics2;

                interface IKeyDerivationAlgorithmProvider;

                interface IKeyDerivationAlgorithmProviderStatics;

                interface IKeyDerivationParameters;

                interface IKeyDerivationParameters2;

                interface IKeyDerivationParametersStatics;

                interface IKeyDerivationParametersStatics2;

                interface IMacAlgorithmNamesStatics;

                interface IMacAlgorithmProvider;

                interface IMacAlgorithmProvider2;

                interface IMacAlgorithmProviderStatics;

                interface IPersistedKeyProviderStatics;

                interface ISymmetricAlgorithmNamesStatics;

                interface ISymmetricKeyAlgorithmProvider;

                interface ISymmetricKeyAlgorithmProviderStatics;

                runtimeclass AsymmetricAlgorithmNames;

                runtimeclass AsymmetricKeyAlgorithmProvider;

                runtimeclass CryptographicEngine;

                runtimeclass CryptographicHash;

                runtimeclass CryptographicKey;

                runtimeclass EccCurveNames;

                runtimeclass EncryptedAndAuthenticatedData;

                runtimeclass HashAlgorithmNames;

                runtimeclass HashAlgorithmProvider;

                runtimeclass KeyDerivationAlgorithmNames;

                runtimeclass KeyDerivationAlgorithmProvider;

                runtimeclass KeyDerivationParameters;

                runtimeclass MacAlgorithmNames;

                runtimeclass MacAlgorithmProvider;

                runtimeclass PersistedKeyProvider;

                runtimeclass SymmetricAlgorithmNames;

                runtimeclass SymmetricKeyAlgorithmProvider;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Core
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Core.CryptographicKey*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Core
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum Capi1KdfTargetAlgorithm
                {
                    NotAes = 0,
                    Aes    = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum CryptographicPadding
                {
                    None        = 0,
                    RsaOaep     = 1,
                    RsaPkcs1V15 = 2,
                    RsaPss      = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum CryptographicPrivateKeyBlobType
                {
                    Pkcs8RawPrivateKeyInfo  = 0,
                    Pkcs1RsaPrivateKey      = 1,
                    BCryptPrivateKey        = 2,
                    Capi1PrivateKey         = 3,
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    BCryptEccFullPrivateKey = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum CryptographicPublicKeyBlobType
                {
                    X509SubjectPublicKeyInfo = 0,
                    Pkcs1RsaPublicKey        = 1,
                    BCryptPublicKey          = 2,
                    Capi1PublicKey           = 3,
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    BCryptEccFullPublicKey   = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.AsymmetricAlgorithmNames)]
                [uuid(CAF6FCE4-67C0-46AA-84F9-752E77449F9B)]
                interface IAsymmetricAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT RsaPkcs1([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaOaepSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaOaepSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaOaepSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaOaepSha512([out] [retval] HSTRING* value);
                    [propget] HRESULT EcdsaP256Sha256([out] [retval] HSTRING* value);
                    [propget] HRESULT EcdsaP384Sha384([out] [retval] HSTRING* value);
                    [propget] HRESULT EcdsaP521Sha512([out] [retval] HSTRING* value);
                    [propget] HRESULT DsaSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT DsaSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPkcs1Sha1([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPkcs1Sha256([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPkcs1Sha384([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPkcs1Sha512([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPssSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPssSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPssSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT RsaSignPssSha512([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.AsymmetricAlgorithmNames)]
                [uuid(F141C0D6-4BFF-4F23-BA66-6045B137D5DF)]
                interface IAsymmetricAlgorithmNamesStatics2 : IInspectable
                {
                    [propget] HRESULT EcdsaSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT EcdsaSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT EcdsaSha512([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.AsymmetricKeyAlgorithmProvider)]
                [uuid(E8D2FF37-6259-4E88-B7E0-94191FDE699E)]
                interface IAsymmetricKeyAlgorithmProvider : IInspectable
                {
                    [propget] HRESULT AlgorithmName([out] [retval] HSTRING* value);
                    HRESULT CreateKeyPair([in] UINT32 keySize, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                    [overload("ImportKeyPair")] HRESULT ImportDefaultPrivateKeyBlob([in] Windows.Storage.Streams.IBuffer* keyBlob, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                    [overload("ImportKeyPair")] HRESULT ImportKeyPairWithBlobType([in] Windows.Storage.Streams.IBuffer* keyBlob, [in] Windows.Security.Cryptography.Core.CryptographicPrivateKeyBlobType BlobType, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                    [overload("ImportPublicKey")] HRESULT ImportDefaultPublicKeyBlob([in] Windows.Storage.Streams.IBuffer* keyBlob, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                    [overload("ImportPublicKey")] HRESULT ImportPublicKeyWithBlobType([in] Windows.Storage.Streams.IBuffer* keyBlob, [in] Windows.Security.Cryptography.Core.CryptographicPublicKeyBlobType BlobType, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.AsymmetricKeyAlgorithmProvider)]
                [uuid(4E322A7E-7C4D-4997-AC4F-1B848B36306E)]
                interface IAsymmetricKeyAlgorithmProvider2 : IInspectable
                {
                    HRESULT CreateKeyPairWithCurveName([in] HSTRING curveName, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                    HRESULT CreateKeyPairWithCurveParameters([range(0x00000000, 0x00010000)] [in] UINT32 __parametersSize, [in] [size_is(__parametersSize)] BYTE* parameters, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.AsymmetricKeyAlgorithmProvider)]
                [uuid(425BDE18-A7F3-47A6-A8D2-C48D6033A65C)]
                interface IAsymmetricKeyAlgorithmProviderStatics : IInspectable
                {
                    HRESULT OpenAlgorithm([in] HSTRING algorithm, [out] [retval] Windows.Security.Cryptography.Core.AsymmetricKeyAlgorithmProvider** provider);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.CryptographicEngine)]
                [uuid(9FEA0639-6FF7-4C85-A095-95EB31715EB9)]
                interface ICryptographicEngineStatics : IInspectable
                {
                    HRESULT Encrypt([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* iv, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT Decrypt([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* iv, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT EncryptAndAuthenticate([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* nonce, [in] Windows.Storage.Streams.IBuffer* authenticatedData, [out] [retval] Windows.Security.Cryptography.Core.EncryptedAndAuthenticatedData** value);
                    HRESULT DecryptAndAuthenticate([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* nonce, [in] Windows.Storage.Streams.IBuffer* authenticationTag, [in] Windows.Storage.Streams.IBuffer* authenticatedData, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT Sign([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT VerifySignature([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* signature, [out] [retval] boolean* isAuthenticated);
                    HRESULT DeriveKeyMaterial([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Security.Cryptography.Core.KeyDerivationParameters* parameters, [in] UINT32 desiredKeySize, [out] [retval] Windows.Storage.Streams.IBuffer** keyMaterial);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.CryptographicEngine)]
                [uuid(675948FE-DF9F-4191-92C7-6CE6F58420E0)]
                interface ICryptographicEngineStatics2 : IInspectable
                {
                    HRESULT SignHashedData([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT VerifySignatureWithHashInput([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* signature, [out] [retval] boolean* isAuthenticated);
                    HRESULT DecryptAsync([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [in] Windows.Storage.Streams.IBuffer* iv, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer*>** value);
                    HRESULT SignAsync([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer*>** value);
                    HRESULT SignHashedDataAsync([in] Windows.Security.Cryptography.Core.CryptographicKey* key, [in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IBuffer*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.CryptographicKey)]
                [uuid(ED2A3B70-8E7B-4009-8401-FFD1A62EEB27)]
                interface ICryptographicKey : IInspectable
                {
                    [propget] HRESULT KeySize([out] [retval] UINT32* value);
                    [overload("Export")] HRESULT ExportDefaultPrivateKeyBlobType([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [overload("Export")] HRESULT ExportPrivateKeyWithBlobType([in] Windows.Security.Cryptography.Core.CryptographicPrivateKeyBlobType BlobType, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [overload("ExportPublicKey")] HRESULT ExportDefaultPublicKeyBlobType([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [overload("ExportPublicKey")] HRESULT ExportPublicKeyWithBlobType([in] Windows.Security.Cryptography.Core.CryptographicPublicKeyBlobType BlobType, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.EccCurveNames)]
                [uuid(B3FF930C-AEEB-409E-B7D4-9B95295AAECF)]
                interface IEccCurveNamesStatics : IInspectable
                {
                    [propget] HRESULT BrainpoolP160r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP160t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP192r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP192t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP224r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP224t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP256r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP256t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP320r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP320t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP384r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP384t1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP512r1([out] [retval] HSTRING* value);
                    [propget] HRESULT BrainpoolP512t1([out] [retval] HSTRING* value);
                    [propget] HRESULT Curve25519([out] [retval] HSTRING* value);
                    [propget] HRESULT Ec192wapi([out] [retval] HSTRING* value);
                    [propget] HRESULT NistP192([out] [retval] HSTRING* value);
                    [propget] HRESULT NistP224([out] [retval] HSTRING* value);
                    [propget] HRESULT NistP256([out] [retval] HSTRING* value);
                    [propget] HRESULT NistP384([out] [retval] HSTRING* value);
                    [propget] HRESULT NistP521([out] [retval] HSTRING* value);
                    [propget] HRESULT NumsP256t1([out] [retval] HSTRING* value);
                    [propget] HRESULT NumsP384t1([out] [retval] HSTRING* value);
                    [propget] HRESULT NumsP512t1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP160k1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP160r1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP160r2([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP192k1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP192r1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP224k1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP224r1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP256k1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP256r1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP384r1([out] [retval] HSTRING* value);
                    [propget] HRESULT SecP521r1([out] [retval] HSTRING* value);
                    [propget] HRESULT Wtls7([out] [retval] HSTRING* value);
                    [propget] HRESULT Wtls9([out] [retval] HSTRING* value);
                    [propget] HRESULT Wtls12([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P192v1([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P192v2([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P192v3([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P239v1([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P239v2([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P239v3([out] [retval] HSTRING* value);
                    [propget] HRESULT X962P256v1([out] [retval] HSTRING* value);
                    [propget] HRESULT AllEccCurveNames([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.EncryptedAndAuthenticatedData)]
                [uuid(6FA42FE7-1ECB-4B00-BEA5-60B83F862F17)]
                interface IEncryptedAndAuthenticatedData : IInspectable
                {
                    [propget] HRESULT EncryptedData([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propget] HRESULT AuthenticationTag([out] [retval] Windows.Storage.Streams.IBuffer** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.HashAlgorithmNames)]
                [uuid(6B5E0516-DE96-4F0A-8D57-DCC9DAE36C76)]
                interface IHashAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT Md5([out] [retval] HSTRING* value);
                    [propget] HRESULT Sha1([out] [retval] HSTRING* value);
                    [propget] HRESULT Sha256([out] [retval] HSTRING* value);
                    [propget] HRESULT Sha384([out] [retval] HSTRING* value);
                    [propget] HRESULT Sha512([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.HashAlgorithmProvider)]
                [uuid(BE9B3080-B2C3-422B-BCE1-EC90EFB5D7B5)]
                interface IHashAlgorithmProvider : IInspectable
                {
                    [propget] HRESULT AlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT HashLength([out] [retval] UINT32* value);
                    HRESULT HashData([in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Storage.Streams.IBuffer** value);
                    HRESULT CreateHash([out] [retval] Windows.Security.Cryptography.Core.CryptographicHash** Value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.HashAlgorithmProvider)]
                [uuid(9FAC9741-5CC4-4336-AE38-6212B75A915A)]
                interface IHashAlgorithmProviderStatics : IInspectable
                {
                    HRESULT OpenAlgorithm([in] HSTRING algorithm, [out] [retval] Windows.Security.Cryptography.Core.HashAlgorithmProvider** provider);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.CryptographicHash)]
                [uuid(5904D1B6-AD31-4603-A3A4-B1BDA98E2562)]
                interface IHashComputation : IInspectable
                {
                    HRESULT Append([in] Windows.Storage.Streams.IBuffer* data);
                    HRESULT GetValueAndReset([out] [retval] Windows.Storage.Streams.IBuffer** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationAlgorithmNames)]
                [uuid(7B6E363E-94D2-4739-A57B-022E0C3A402A)]
                interface IKeyDerivationAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT Pbkdf2Md5([out] [retval] HSTRING* value);
                    [propget] HRESULT Pbkdf2Sha1([out] [retval] HSTRING* value);
                    [propget] HRESULT Pbkdf2Sha256([out] [retval] HSTRING* value);
                    [propget] HRESULT Pbkdf2Sha384([out] [retval] HSTRING* value);
                    [propget] HRESULT Pbkdf2Sha512([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp800108CtrHmacMd5([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp800108CtrHmacSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp800108CtrHmacSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp800108CtrHmacSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp800108CtrHmacSha512([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp80056aConcatMd5([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp80056aConcatSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp80056aConcatSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp80056aConcatSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT Sp80056aConcatSha512([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationAlgorithmNames)]
                [uuid(57953FAB-6044-466F-97F4-337B7808384D)]
                interface IKeyDerivationAlgorithmNamesStatics2 : IInspectable
                {
                    [propget] HRESULT CapiKdfMd5([out] [retval] HSTRING* value);
                    [propget] HRESULT CapiKdfSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT CapiKdfSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT CapiKdfSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT CapiKdfSha512([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationAlgorithmProvider)]
                [uuid(E1FBA83B-4671-43B7-9158-763AAA98B6BF)]
                interface IKeyDerivationAlgorithmProvider : IInspectable
                {
                    [propget] HRESULT AlgorithmName([out] [retval] HSTRING* value);
                    HRESULT CreateKey([in] Windows.Storage.Streams.IBuffer* keyMaterial, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationAlgorithmProvider)]
                [uuid(0A22097A-0A1C-443B-9418-B9498AEB1603)]
                interface IKeyDerivationAlgorithmProviderStatics : IInspectable
                {
                    HRESULT OpenAlgorithm([in] HSTRING algorithm, [out] [retval] Windows.Security.Cryptography.Core.KeyDerivationAlgorithmProvider** provider);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationParameters)]
                [uuid(7BF05967-047B-4A8C-964A-469FFD5522E2)]
                interface IKeyDerivationParameters : IInspectable
                {
                    [propget] HRESULT KdfGenericBinary([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propput] HRESULT KdfGenericBinary([in] Windows.Storage.Streams.IBuffer* value);
                    [propget] HRESULT IterationCount([out] [retval] UINT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationParameters)]
                [uuid(CD4166D1-417E-4F4C-B666-C0D879F3F8E0)]
                interface IKeyDerivationParameters2 : IInspectable
                {
                    [propget] HRESULT Capi1KdfTargetAlgorithm([out] [retval] Windows.Security.Cryptography.Core.Capi1KdfTargetAlgorithm* value);
                    [propput] HRESULT Capi1KdfTargetAlgorithm([in] Windows.Security.Cryptography.Core.Capi1KdfTargetAlgorithm value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationParameters)]
                [uuid(EA961FBE-F37F-4146-9DFE-A456F1735F4B)]
                interface IKeyDerivationParametersStatics : IInspectable
                {
                    HRESULT BuildForPbkdf2([in] Windows.Storage.Streams.IBuffer* pbkdf2Salt, [in] UINT32 iterationCount, [out] [retval] Windows.Security.Cryptography.Core.KeyDerivationParameters** value);
                    HRESULT BuildForSP800108([in] Windows.Storage.Streams.IBuffer* label, [in] Windows.Storage.Streams.IBuffer* context, [out] [retval] Windows.Security.Cryptography.Core.KeyDerivationParameters** value);
                    HRESULT BuildForSP80056a([in] Windows.Storage.Streams.IBuffer* algorithmId, [in] Windows.Storage.Streams.IBuffer* partyUInfo, [in] Windows.Storage.Streams.IBuffer* partyVInfo, [in] Windows.Storage.Streams.IBuffer* suppPubInfo, [in] Windows.Storage.Streams.IBuffer* suppPrivInfo, [out] [retval] Windows.Security.Cryptography.Core.KeyDerivationParameters** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.KeyDerivationParameters)]
                [uuid(A5783DD5-58E3-4EFB-B283-A1653126E1BE)]
                interface IKeyDerivationParametersStatics2 : IInspectable
                {
                    HRESULT BuildForCapi1Kdf([in] Windows.Security.Cryptography.Core.Capi1KdfTargetAlgorithm capi1KdfTargetAlgorithm, [out] [retval] Windows.Security.Cryptography.Core.KeyDerivationParameters** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.MacAlgorithmNames)]
                [uuid(41412678-FB1E-43A4-895E-A9026E4390A3)]
                interface IMacAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT HmacMd5([out] [retval] HSTRING* value);
                    [propget] HRESULT HmacSha1([out] [retval] HSTRING* value);
                    [propget] HRESULT HmacSha256([out] [retval] HSTRING* value);
                    [propget] HRESULT HmacSha384([out] [retval] HSTRING* value);
                    [propget] HRESULT HmacSha512([out] [retval] HSTRING* value);
                    [propget] HRESULT AesCmac([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.MacAlgorithmProvider)]
                [uuid(4A3FC5C3-1CBD-41CE-A092-AA0BC5D2D2F5)]
                interface IMacAlgorithmProvider : IInspectable
                {
                    [propget] HRESULT AlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT MacLength([out] [retval] UINT32* value);
                    HRESULT CreateKey([in] Windows.Storage.Streams.IBuffer* keyMaterial, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** macKey);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.MacAlgorithmProvider)]
                [uuid(6DA32A15-D931-42ED-8E7E-C301CAEE119C)]
                interface IMacAlgorithmProvider2 : IInspectable
                {
                    HRESULT CreateHash([in] Windows.Storage.Streams.IBuffer* keyMaterial, [out] [retval] Windows.Security.Cryptography.Core.CryptographicHash** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.MacAlgorithmProvider)]
                [uuid(C9BDC147-CC77-4DF0-9E4E-B921E080644C)]
                interface IMacAlgorithmProviderStatics : IInspectable
                {
                    HRESULT OpenAlgorithm([in] HSTRING algorithm, [out] [retval] Windows.Security.Cryptography.Core.MacAlgorithmProvider** provider);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.PersistedKeyProvider)]
                [uuid(77274814-D9D4-4CF5-B668-E0457DF30894)]
                interface IPersistedKeyProviderStatics : IInspectable
                {
                    HRESULT OpenKeyPairFromCertificateAsync([in] Windows.Security.Cryptography.Certificates.Certificate* certificate, [in] HSTRING hashAlgorithmName, [in] Windows.Security.Cryptography.Core.CryptographicPadding padding, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Cryptography.Core.CryptographicKey*>** operation);
                    HRESULT OpenPublicKeyFromCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* certificate, [in] HSTRING hashAlgorithmName, [in] Windows.Security.Cryptography.Core.CryptographicPadding padding, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.SymmetricAlgorithmNames)]
                [uuid(6870727B-C996-4EAE-84D7-79B2AEB73B9C)]
                interface ISymmetricAlgorithmNamesStatics : IInspectable
                {
                    [propget] HRESULT DesCbc([out] [retval] HSTRING* value);
                    [propget] HRESULT DesEcb([out] [retval] HSTRING* value);
                    [propget] HRESULT TripleDesCbc([out] [retval] HSTRING* value);
                    [propget] HRESULT TripleDesEcb([out] [retval] HSTRING* value);
                    [propget] HRESULT Rc2Cbc([out] [retval] HSTRING* value);
                    [propget] HRESULT Rc2Ecb([out] [retval] HSTRING* value);
                    [propget] HRESULT AesCbc([out] [retval] HSTRING* value);
                    [propget] HRESULT AesEcb([out] [retval] HSTRING* value);
                    [propget] HRESULT AesGcm([out] [retval] HSTRING* value);
                    [propget] HRESULT AesCcm([out] [retval] HSTRING* value);
                    [propget] HRESULT AesCbcPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT AesEcbPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT DesCbcPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT DesEcbPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT TripleDesCbcPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT TripleDesEcbPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT Rc2CbcPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT Rc2EcbPkcs7([out] [retval] HSTRING* value);
                    [propget] HRESULT Rc4([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.SymmetricKeyAlgorithmProvider)]
                [uuid(3D7E4A33-3BD0-4902-8AC8-470D50D21376)]
                interface ISymmetricKeyAlgorithmProvider : IInspectable
                {
                    [propget] HRESULT AlgorithmName([out] [retval] HSTRING* value);
                    [propget] HRESULT BlockLength([out] [retval] UINT32* value);
                    HRESULT CreateSymmetricKey([in] Windows.Storage.Streams.IBuffer* keyMaterial, [out] [retval] Windows.Security.Cryptography.Core.CryptographicKey** key);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Cryptography.Core.SymmetricKeyAlgorithmProvider)]
                [uuid(8D3B2326-1F37-491F-B60E-F5431B26B483)]
                interface ISymmetricKeyAlgorithmProviderStatics : IInspectable
                {
                    HRESULT OpenAlgorithm([in] HSTRING algorithm, [out] [retval] Windows.Security.Cryptography.Core.SymmetricKeyAlgorithmProvider** provider);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IAsymmetricAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Core.IAsymmetricAlgorithmNamesStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass AsymmetricAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IAsymmetricKeyAlgorithmProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass AsymmetricKeyAlgorithmProvider
                {
                    [default] interface Windows.Security.Cryptography.Core.IAsymmetricKeyAlgorithmProvider;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Core.IAsymmetricKeyAlgorithmProvider2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.ICryptographicEngineStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Core.ICryptographicEngineStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass CryptographicEngine
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass CryptographicHash
                {
                    [default] interface Windows.Security.Cryptography.Core.IHashComputation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass CryptographicKey
                {
                    [default] interface Windows.Security.Cryptography.Core.ICryptographicKey;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IEccCurveNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass EccCurveNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass EncryptedAndAuthenticatedData
                {
                    [default] interface Windows.Security.Cryptography.Core.IEncryptedAndAuthenticatedData;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IHashAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass HashAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IHashAlgorithmProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass HashAlgorithmProvider
                {
                    [default] interface Windows.Security.Cryptography.Core.IHashAlgorithmProvider;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IKeyDerivationAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Core.IKeyDerivationAlgorithmNamesStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass KeyDerivationAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IKeyDerivationAlgorithmProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass KeyDerivationAlgorithmProvider
                {
                    [default] interface Windows.Security.Cryptography.Core.IKeyDerivationAlgorithmProvider;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IKeyDerivationParametersStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Cryptography.Core.IKeyDerivationParametersStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass KeyDerivationParameters
                {
                    [default] interface Windows.Security.Cryptography.Core.IKeyDerivationParameters;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Core.IKeyDerivationParameters2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IMacAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass MacAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IMacAlgorithmProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass MacAlgorithmProvider
                {
                    [default] interface Windows.Security.Cryptography.Core.IMacAlgorithmProvider;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Security.Cryptography.Core.IMacAlgorithmProvider2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.IPersistedKeyProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass PersistedKeyProvider
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.ISymmetricAlgorithmNamesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass SymmetricAlgorithmNames
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Cryptography.Core.ISymmetricKeyAlgorithmProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass SymmetricKeyAlgorithmProvider
                {
                    [default] interface Windows.Security.Cryptography.Core.ISymmetricKeyAlgorithmProvider;
                }
            }
        }
    }
}
