//
// 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.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            typedef enum BinaryStringEncoding BinaryStringEncoding;

            interface ICryptographicBufferStatics;

            runtimeclass CryptographicBuffer;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BinaryStringEncoding
            {
                Utf8    = 0,
                Utf16LE = 1,
                Utf16BE = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Security.Cryptography.CryptographicBuffer)]
            [uuid(320B7E22-3CB0-4CDF-8663-1D28910065EB)]
            interface ICryptographicBufferStatics : IInspectable
            {
                HRESULT Compare([in] Windows.Storage.Streams.IBuffer* object1, [in] Windows.Storage.Streams.IBuffer* object2, [out] [retval] boolean* isEqual);
                HRESULT GenerateRandom([in] UINT32 length, [out] [retval] Windows.Storage.Streams.IBuffer** buffer);
                HRESULT GenerateRandomNumber([out] [retval] UINT32* value);
                HRESULT CreateFromByteArray([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value, [out] [retval] Windows.Storage.Streams.IBuffer** buffer);
                HRESULT CopyToByteArray([in] Windows.Storage.Streams.IBuffer* buffer, [out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] BYTE** value);
                HRESULT DecodeFromHexString([in] HSTRING value, [out] [retval] Windows.Storage.Streams.IBuffer** buffer);
                HRESULT EncodeToHexString([in] Windows.Storage.Streams.IBuffer* buffer, [out] [retval] HSTRING* value);
                HRESULT DecodeFromBase64String([in] HSTRING value, [out] [retval] Windows.Storage.Streams.IBuffer** buffer);
                HRESULT EncodeToBase64String([in] Windows.Storage.Streams.IBuffer* buffer, [out] [retval] HSTRING* value);
                HRESULT ConvertStringToBinary([in] HSTRING value, [in] Windows.Security.Cryptography.BinaryStringEncoding encoding, [out] [retval] Windows.Storage.Streams.IBuffer** buffer);
                HRESULT ConvertBinaryToString([in] Windows.Security.Cryptography.BinaryStringEncoding encoding, [in] Windows.Storage.Streams.IBuffer* buffer, [out] [retval] HSTRING* value);
            }

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