From 307eae20a6d2528ec847052d0546c123412d50a9 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Mon, 19 Sep 2022 21:48:03 +0300 Subject: [PATCH] include: Add windows.security.cryptography.idl. Signed-off-by: Nikolay Sivov --- include/Makefile.in | 1 + include/windows.security.cryptography.idl | 110 ++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 include/windows.security.cryptography.idl diff --git a/include/Makefile.in b/include/Makefile.in index 14fe8e24863..1c04f9a298b 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -806,6 +806,7 @@ SOURCES = \ windows.media.idl \ windows.media.speechrecognition.idl \ windows.media.speechsynthesis.idl \ + windows.security.cryptography.idl \ windows.storage.streams.idl \ windows.system.idl \ windows.system.power.idl \ diff --git a/include/windows.security.cryptography.idl b/include/windows.security.cryptography.idl new file mode 100644 index 00000000000..7d7b7fba2dc --- /dev/null +++ b/include/windows.security.cryptography.idl @@ -0,0 +1,110 @@ +/* + * Copyright 2022 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "inspectable.idl"; +import "asyncinfo.idl"; +import "windowscontracts.idl"; +import "windows.foundation.idl"; +import "windows.storage.streams.idl"; + +namespace Windows.Security.Cryptography +{ + typedef enum BinaryStringEncoding BinaryStringEncoding; + runtimeclass CryptographicBuffer; + + [ + 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 *is_equal + ); + HRESULT GenerateRandom( + [in] UINT32 length, + [out, retval] Windows.Storage.Streams.IBuffer **buffer + ); + HRESULT GenerateRandomNumber( + [out, retval] UINT32 *value + ); + HRESULT CreateFromByteArray( + [in] UINT32 value_size, + [in, size_is(value_size)] BYTE *value, + [out, retval] Windows.Storage.Streams.IBuffer **buffer + ); + HRESULT CopyToByteArray( + [in] Windows.Storage.Streams.IBuffer *buffer, + [out] UINT32 *value_size, + [out, size_is(, *value_size)] 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 + { + } +}