Compare commits

...

79 Commits
v4.0 ... v4.4

Author SHA1 Message Date
Alistair Leslie-Hughes
b6787bc221 Release v4.4 2019-03-17 17:12:16 +11:00
Zebediah Figura
6c37563f92 Rebase against 05994cd6179626438ef26c13ee45323a6a1f66eb. 2019-03-15 15:57:45 -05:00
Alistair Leslie-Hughes
65e6bb8111 Rebase against fa262317480e52eb3420c4e0ba9bae9e17db4457 2019-03-15 11:44:38 +11:00
Alistair Leslie-Hughes
3d9797093d Added opencl-version_1_2 patchset 2019-03-15 09:51:33 +11:00
Alistair Leslie-Hughes
993b6c9c83 Rebase against f34f13825fd060fda40f0a5b02dc1b420e3a8e1e 2019-03-13 09:54:01 +11:00
Alistair Leslie-Hughes
d866f07818 Added pdh-PdhLookupPerfNameByIndex-processor patchset 2019-03-12 09:19:32 +11:00
Alistair Leslie-Hughes
3d08d08fda Rebase against 5baadda536172d6713fa6fef1196dc2baa773904 2019-03-12 09:07:36 +11:00
Zebediah Figura
01adefa75c Rebase against ab7756619c1b16c761618a68d1b6a06ad437cbe8. 2019-03-07 17:53:33 -06:00
Zebediah Figura
6260ab9bce wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending: Updates from Paul Gofman.
Should fix https://bugs.winehq.org/show_bug.cgi?id=46790.
2019-03-07 17:30:08 -06:00
Zebediah Figura
3a1bf0a033 Rebase against 56f34c7489cb463981e987a59aee9f8780fef7cd. 2019-03-06 22:07:08 -06:00
Alistair Leslie-Hughes
06fbe73760 Updated wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending patchsets 2019-03-05 09:53:07 +11:00
Alistair Leslie-Hughes
c043d43772 Updated d3dx9_36-DrawText patchset
Thanks github user IIde pointing this out.
2019-03-05 09:18:36 +11:00
Alistair Leslie-Hughes
d3067e60ff Rebase against 6d35c10a7b7155dd552a3ad1a266d205e38f8765 2019-03-05 09:11:28 +11:00
Alistair Leslie-Hughes
923434cd32 Release v4.3 2019-03-03 16:51:57 +11:00
Alistair Leslie-Hughes
f419a53698 Added xaudio2-revert patchset 2019-03-03 16:46:30 +11:00
Zebediah Figura
5e8beb5ff2 Rebase against 1e8f4c059befe4a026ddf5c56e81d720b35c6c2f. 2019-02-28 22:32:39 -06:00
Alistair Leslie-Hughes
37de066533 Revert "Added msasn1-ASN1_CreateModule patchset"
This reverts commit 06ad40cfd0.

It come to out attention that FreeRDP may not be a clean source
for this patch.
2019-03-01 08:08:25 +11:00
Alistair Leslie-Hughes
e108b600b5 Added comctrl-rebar-capture patchset 2019-02-28 16:28:45 +11:00
Alistair Leslie-Hughes
06ad40cfd0 Added msasn1-ASN1_CreateModule patchset 2019-02-28 16:28:39 +11:00
Alistair Leslie-Hughes
bd8f790f9b Added dinput-axis-recalc patchset 2019-02-28 16:22:05 +11:00
Alistair Leslie-Hughes
4a23a62b5d Added dinput-reconnect-joystick patchset 2019-02-28 15:30:07 +11:00
Alistair Leslie-Hughes
e6cfe1ccd8 Added dinput-remap-joystick patchset 2019-02-28 15:30:07 +11:00
Zebediah Figura
b50c875c39 setupapi-Display_Device: Correct rebase. 2019-02-27 21:01:33 -06:00
Zebediah Figura
b02bd9c446 wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending: Add new patch sets from Paul Gofman. 2019-02-27 20:27:16 -06:00
Alistair Leslie-Hughes
7c1618b197 Rebase against 474a6771ba03e2c475cd088ff40c97e8285a455f 2019-02-27 12:51:15 +11:00
Alistair Leslie-Hughes
733fa5c485 Rebase against f784cabd3489b20c13afd80fddbbcf5aa1b656b3 2019-02-26 08:54:19 +11:00
Zebediah Figura
b74293fbfe Rebase against b3c5b7da9442af840431cd7f795da20989aad42a. 2019-02-22 22:45:29 -06:00
Alistair Leslie-Hughes
38aa047cad Rebase against 812d03129dea53337367789bac8ab523b9fce21d 2019-02-22 08:51:56 +11:00
Alistair Leslie-Hughes
778998c66e Rebase against c0cc126d579e078f2804112c14f0c18b38f68937 2019-02-21 13:49:36 +11:00
Zebediah Figura
d12fcebb0e ntoskrnl.exe-Resources: Add patch set. 2019-02-19 19:03:35 -06:00
Zebediah Figura
7937739028 ntdll-MemoryWorkingSetExInformation: Add patch. 2019-02-19 18:48:47 -06:00
Zebediah Figura
13b580a0c8 Rebase against 0c738d900a8daccf2c5460972033766d34d59aed. 2019-02-19 18:36:59 -06:00
Alistair Leslie-Hughes
b3c99ebf4b Rebase against 5e86cc0a8f37295072b03b1c13aa205ff3e6f3e4 2019-02-19 11:35:04 +11:00
Alistair Leslie-Hughes
87578b4c82 Updated httpapi-HttpCreateServerSession patchset
Thanks Gijs Vermeulen.
2019-02-19 08:30:45 +11:00
Alistair Leslie-Hughes
be81b6245c Added wmvcore-WMCreateSyncReader patchset 2019-02-18 13:58:09 +11:00
Alistair Leslie-Hughes
b1b1abafe7 Release v4.2 2019-02-17 15:44:00 +11:00
Zebediah Figura
0b57832a15 ddraw-version-check: Correct author. 2019-02-16 13:39:46 -06:00
Zebediah Figura
b080509a3b actually add the patches 2019-02-16 08:36:04 -06:00
Zebediah Figura
4d363d04f9 Add ddraw-version-check and gdi32-rotation. 2019-02-15 19:34:50 -06:00
Alistair Leslie-Hughes
7cbbfd0a9e Rebase against 3fc1180623b9a0c9fc9e16abf358b179f2eff49b 2019-02-15 11:18:02 +11:00
Alistair Leslie-Hughes
27ff0169ed Updated uxtheme-GTK_Theming patch 2019-02-15 08:39:48 +11:00
Alistair Leslie-Hughes
32bac8b64c Rebase against 7907ccfdcb39b30dc49c96c411332534525b6ea9 2019-02-14 11:08:02 +11:00
Alistair Leslie-Hughes
b8de62375f Rebase against 9781b5433cd4b708c0f537aa0b5608ff4157f04c 2019-02-13 11:01:29 +11:00
Alistair Leslie-Hughes
697fe8b5da Rebase against d0727decdedb5aba250038458e0a28dec5687e50 2019-02-12 10:01:26 +11:00
Zebediah Figura
c6aeba1397 ntdll-DllRedirects: Remove patch set.
This patch has caused a disproportionate amount of annoyance during
rebases, and this is only likely to increase. On top of this it is not
an especially good way to structure things; switching between
interfaces is something best done within one DLL.
2019-02-09 17:15:09 -06:00
Zebediah Figura
3d74da6622 uxtheme-GTK_Theming: Rework to avoid "DLL redirects".
Instead we have an alternate code path for the appropriate API entry
points in uxtheme.dll.

This is not the best organizational structure. We should probably have
HTHEME handles resolve to an object with its own function table, so
then we have an MSSTYLES backend and a GTK backend and what have
you. It would also be better to avoid having GTK controlled with its
own registry key like this but rather to have it be selectable using
EnumThemes()/ApplyTheme() [presumably through a fake theme file, as
was used in the original implementation], so that we don't have to
have special handling for those functions and everything can just be
part of the HTHEME backend. However, time is currently of the essence,
and this will have to do for the moment.
2019-02-09 17:15:09 -06:00
Zebediah Figura
ecc4fe6d6a Rebase against f7b3120991df02ecaa975c18c6421fedb48ae731. 2019-02-08 21:57:06 -06:00
Zebediah Figura
35f9449641 ntdll-Purist_Mode: Remove patch set.
This is redundant and not especially useful.
2019-02-08 21:37:09 -06:00
Zebediah Figura
f605d79997 ntdll-DllOverrides_WOW64: Remove patchset.
This was always a no-op; HKCU/Software does not reflect.
2019-02-08 21:35:26 -06:00
Alistair Leslie-Hughes
ab89820aa5 Added secur32-compile-fix 2019-02-08 11:08:27 +11:00
Alistair Leslie-Hughes
f85accadd5 Rebase against 957a1f0216995c14c3a3fe737358578a506af707 2019-02-08 10:49:30 +11:00
Alistair Leslie-Hughes
533cbe994f Updated bcrypt-BCryptGenerateKeyPair patchset
Fixes FreeBSD build and --without-gnutls option.
2019-02-08 08:31:23 +11:00
Alistair Leslie-Hughes
9f5a34bcb8 Updated uxtheme-GTK_Theming patchset
Fixes
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46587
2019-02-07 14:45:37 +11:00
Zebediah Figura
ca3bfa28f9 Rebase against c3ac646a8ded3ef3ebc743a7fdda01b0691a427a. 2019-02-06 19:44:16 -06:00
Alistair Leslie-Hughes
3dab9e5e6b Rebase against 6b76648a8b773838ecde00719ca54a433edf5ce6 2019-02-06 14:27:30 +11:00
Alistair Leslie-Hughes
1edb7d5bc5 Updated bcrypt-BCryptGenerateKeyPair patchset
Fix for Debian 8.0 and xUbuntu_16.04.
2019-02-06 07:16:21 +11:00
Alistair Leslie-Hughes
0f48c0caac Updated bcrypt-BCryptGenerateKeyPair patchset
This is to fix the macos build.
2019-02-05 13:46:27 +11:00
Alistair Leslie-Hughes
785d3c2244 Release v4.1 2019-02-05 11:19:37 +11:00
Alistair Leslie-Hughes
fd3b0a7361 Updated kernel32-CreateSymbolicLink patchset 2019-02-05 11:06:09 +11:00
Alistair Leslie-Hughes
d25f4cf2e2 Added bcrypt-BCryptSecretAgreement patchset 2019-02-05 10:34:01 +11:00
Alistair Leslie-Hughes
7a2d7b751d Updated bcrypt-BCryptGenerateKeyPair patchset 2019-02-05 10:25:02 +11:00
Alistair Leslie-Hughes
4f5ec5595c Rebase against 152cda38df79cf04aae589f1d721de3cac1cd49e 2019-02-05 09:32:59 +11:00
Alistair Leslie-Hughes
75e683d877 Rebase against 84459ba94b9de2fc32499154aa4591f10d746947 2019-02-01 08:21:25 +11:00
Alistair Leslie-Hughes
4839b31cec Rebase against 7003ba44892d39ec0f409c793b97a0c5f4ae72d0 2019-01-31 11:39:09 +11:00
Alistair Leslie-Hughes
46fc7a5a0d Added kernel32-CreateSymbolicLink patchset 2019-01-30 16:39:10 +11:00
Alistair Leslie-Hughes
6df93d0242 Added httpapi-HttpCreateServerSession patchset 2019-01-30 16:34:25 +11:00
Zebediah Figura
fc1eb83a27 crypt32-old_libgnutls: Add patch. 2019-01-29 18:33:33 -06:00
Zebediah Figura
53de6620d0 Rebase against 78a8445a2a4a6f225386a8a9781e961d2c5517a4. 2019-01-29 18:30:45 -06:00
Alistair Leslie-Hughes
d2a48f1ad3 Added urlmon-ftp_escape patchset 2019-01-29 11:03:45 +11:00
Alistair Leslie-Hughes
1c5f409745 Rebase against ca29ac4650f7f9a96cfaa75a7919ef007306cbbb 2019-01-29 11:02:57 +11:00
Zebediah Figura
60f0f50382 Rebase against 699eb8cdba8fe236f038550e2bd68a4cd2cab055. 2019-01-25 18:42:27 -06:00
Zebediah Figura
ceb31ed876 newupdate.py: Tweaks. 2019-01-25 18:39:37 -06:00
Alistair Leslie-Hughes
3b56f9ccef Added wined3d-stream-frequency patchset 2019-01-25 16:05:43 +11:00
Alistair Leslie-Hughes
8a60fbdd19 Added wined3d-multisample-quality patchset 2019-01-25 16:05:09 +11:00
Alistair Leslie-Hughes
6fbde84214 Added d3dx9_36-D3DXSHProjectCubeMap patchset 2019-01-25 16:04:25 +11:00
Alistair Leslie-Hughes
3a0fddb73c Added mciavi32-fullscreen_support patchset 2019-01-25 15:55:40 +11:00
Alistair Leslie-Hughes
5e5c754a8b Added iphlpapi-GetBestRoute2 patchset 2019-01-25 15:53:45 +11:00
Zebediah Figura
04c8f24337 Rebase against fee112f90accd80805e9b499b9f8917661f76cba. 2019-01-24 21:06:01 -06:00
Alistair Leslie-Hughes
b39ac4692c Rebase against f5d7d9cccc941024f1532a9ac23427d07810f337 2019-01-24 11:34:38 +11:00
285 changed files with 20082 additions and 25431 deletions

View File

@@ -1,7 +1,7 @@
From 744549e1ecc76c3764079d337c09445d01a3527e Mon Sep 17 00:00:00 2001
From 5e4c31d0796f2e559889d4f84cdb571130217e7d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:58:40 +0100
Subject: dwrite: Avoid implicit cast of interface pointer.
Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
---
dlls/dwrite/font.c | 4 ++--
@@ -9,10 +9,10 @@ Subject: dwrite: Avoid implicit cast of interface pointer.
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index d9ddce0..0a90c20 100644
index f50133d..1bc7b59 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1684,7 +1684,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
@@ -1815,7 +1815,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontVtbl*)&dwritefontvtbl);
@@ -20,8 +20,8 @@ index d9ddce0..0a90c20 100644
+ return CONTAINING_RECORD((IDWriteFont3 *)iface, struct dwrite_font, IDWriteFont3_iface);
}
static struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1692,7 +1692,7 @@ static struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace
struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1823,7 +1823,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontFaceVtbl*)&dwritefontfacevtbl);
@@ -31,10 +31,10 @@ index d9ddce0..0a90c20 100644
void get_logfont_from_font(IDWriteFont *iface, LOGFONTW *lf)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 706ed4e..c76a909 100644
index f27fe9f..ee1eb5a 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5196,7 +5196,7 @@ static const IDWriteTextFormat2Vtbl dwritetextformatvtbl = {
@@ -5622,7 +5622,7 @@ static const IDWriteTextFormat2Vtbl dwritetextformatvtbl = {
static struct dwrite_textformat *unsafe_impl_from_IDWriteTextFormat(IDWriteTextFormat *iface)
{
return (iface->lpVtbl == (IDWriteTextFormatVtbl*)&dwritetextformatvtbl) ?
@@ -44,5 +44,5 @@ index 706ed4e..c76a909 100644
HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style,
--
2.9.0
1.9.1

View File

@@ -1,8 +1,8 @@
From 42dbdf9479e2e09734fa183b854d5ddfe987f203 Mon Sep 17 00:00:00 2001
From 494fc3abe1eddabcf7cede677ee907284e89eea8 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 23:08:30 +0100
Subject: [PATCH] include: Check element type in CONTAINING_RECORD and
similar macros.
Subject: [PATCH] include: Check element type in CONTAINING_RECORD and similar
macros.
---
include/wine/list.h | 10 ++++++++--
@@ -11,7 +11,7 @@ Subject: [PATCH] include: Check element type in CONTAINING_RECORD and
3 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/include/wine/list.h b/include/wine/list.h
index b4d681f..287ad39 100644
index b4d681fe..287ad394 100644
--- a/include/wine/list.h
+++ b/include/wine/list.h
@@ -228,7 +228,13 @@ static inline void list_move_head( struct list *dst, struct list *src )
@@ -31,7 +31,7 @@ index b4d681f..287ad39 100644
#endif /* __WINE_SERVER_LIST_H */
diff --git a/include/wine/rbtree.h b/include/wine/rbtree.h
index dc50b5e..8130deb 100644
index dc50b5e7..8130deb5 100644
--- a/include/wine/rbtree.h
+++ b/include/wine/rbtree.h
@@ -23,8 +23,14 @@
@@ -52,12 +52,12 @@ index dc50b5e..8130deb 100644
struct wine_rb_entry
{
diff --git a/include/winnt.h b/include/winnt.h
index 7f822c4..ccfe73b 100644
index 2b489382..a156efc4 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -756,8 +756,14 @@ typedef struct _MEMORY_BASIC_INFORMATION
#define FIELD_OFFSET(type, field) ((LONG)offsetof(type, field))
@@ -760,8 +760,14 @@ typedef struct _MEMORY_BASIC_INFORMATION
#define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
#define RTL_SIZEOF_THROUGH_FIELD(type, field) (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
-#define CONTAINING_RECORD(address, type, field) \
- ((type *)((PCHAR)(address) - offsetof(type, field)))
@@ -73,5 +73,5 @@ index 7f822c4..ccfe73b 100644
#ifdef __WINESRC__
# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
--
1.9.1
2.20.1

View File

@@ -1,4 +1,4 @@
From d67d7293a17592b580d284fa68881a613e61f591 Mon Sep 17 00:00:00 2001
From f94296129eb249a04ccb012a10f50b79fb0a631a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 01:45:29 +0200
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
@@ -14,10 +14,10 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
6 files changed, 117 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index dbead5e..586b504 100644
index 969cee7..008abb7 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1482,6 +1482,9 @@
@@ -1508,6 +1508,9 @@
# Virtual memory
@ cdecl __wine_locked_recvmsg(long ptr long)
@@ -28,12 +28,12 @@ index dbead5e..586b504 100644
@ cdecl wine_get_version() NTDLL_wine_get_version
@ cdecl wine_get_patches() NTDLL_wine_get_patches
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 8a64338..137a22d 100644
index 5a93ede..cb02bd1 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -80,6 +80,9 @@ extern void virtual_init_threading(void) DECLSPEC_HIDDEN;
extern void fill_cpu_info(void) DECLSPEC_HIDDEN;
extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
@@ -83,6 +83,9 @@ extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern void update_user_process_params( const UNICODE_STRING *image ) DECLSPEC_HIDDEN;
+/* token */
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
@@ -42,10 +42,10 @@ index 8a64338..137a22d 100644
extern timeout_t server_start_time DECLSPEC_HIDDEN;
extern unsigned int server_cpus DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 40034b4..1ebbb79 100644
index 2ff8610..bb4a171 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -99,6 +99,24 @@ HANDLE CDECL __wine_make_process_system(void)
@@ -118,6 +118,24 @@ HANDLE CDECL __wine_make_process_system(void)
return ret;
}
@@ -71,10 +71,10 @@ index 40034b4..1ebbb79 100644
#define UNIMPLEMENTED_INFO_CLASS(c) \
diff --git a/server/protocol.def b/server/protocol.def
index 0bb04cd..f2deca6 100644
index 493100b..071f740 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3641,6 +3641,14 @@ struct handle_info
@@ -3666,6 +3666,14 @@ struct handle_info
@END
@@ -102,7 +102,7 @@ index 6c33714..21e90cc 100644
/* token functions */
diff --git a/server/token.c b/server/token.c
index 7776cbe..64ab565 100644
index 4c37c67..e449e61 100644
--- a/server/token.c
+++ b/server/token.c
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
@@ -121,7 +121,7 @@ index 7776cbe..64ab565 100644
static luid_t prev_luid_value = { 1000, 0 };
@@ -901,6 +903,64 @@ struct token *token_create_admin( void )
@@ -908,6 +910,64 @@ struct token *token_create_admin( void )
return token;
}
@@ -186,7 +186,7 @@ index 7776cbe..64ab565 100644
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
{
struct privilege *privilege;
@@ -1718,3 +1778,27 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1713,3 +1773,27 @@ DECL_HANDLER(set_token_default_dacl)
release_object( token );
}
}

View File

@@ -1,25 +1,24 @@
From 3ff546b9cbde1d0f5ea43c5cbb92ac8dc2028676 Mon Sep 17 00:00:00 2001
From dd6544561d6432555f14a9004e107e6b87564949 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
---
dlls/ntdll/loader.c | 37 +++++++++++++++++++++++++++++++++++++
dlls/ntdll/loader.c | 40 ++++++++++++++++++++++++++++++++++++++--
server/process.c | 8 ++++++++
server/process.h | 1 +
server/protocol.def | 7 +++++++
server/token.c | 14 ++++++++++++++
5 files changed, 67 insertions(+)
5 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 3fcbbf77a5..2399f1246e 100644
index d7dbe57..7588d5a 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3054,6 +3054,32 @@ NTSTATUS attach_dlls( CONTEXT *context )
}
@@ -3321,6 +3321,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
+/***********************************************************************
/***********************************************************************
+ * elevate_process
+ */
+static void elevate_process( void )
@@ -45,19 +44,37 @@ index 3fcbbf77a5..2399f1246e 100644
+}
+
+
/***********************************************************************
+/***********************************************************************
* load_global_options
*/
@@ -3115,6 +3141,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
ULONG_PTR unknown3, ULONG_PTR unknown4 )
static void load_global_options(void)
@@ -3373,6 +3399,7 @@ static void load_global_options(void)
}
+
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3408,7 +3435,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
-
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -3505,7 +3531,7 @@ void __wine_process_init(void)
{
static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
-
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
NTSTATUS status;
WINE_MODREF *wm;
PEB *peb = NtCurrentTeb()->Peb;
@@ -3142,6 +3169,16 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
REG_DWORD, &peb->NtGlobalFlag, sizeof(peb->NtGlobalFlag), NULL );
NTSTATUS status;
ANSI_STRING func_name;
@@ -3556,6 +3582,16 @@ void __wine_process_init(void)
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
heap_set_debug_flags( GetProcessHeap() );
+ /* elevate process if necessary */
@@ -72,12 +89,12 @@ index 3fcbbf77a5..2399f1246e 100644
+
/* the main exe needs to be the first in the load order list */
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index ee85249bd4..81cea2f1ba 100644
index 0a25f44..3988b52 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1133,6 +1133,14 @@ struct process_snapshot *process_snap( int *count )
@@ -1109,6 +1109,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
}
@@ -93,10 +110,10 @@ index ee85249bd4..81cea2f1ba 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index f22c128f07..78e88ec350 100644
index 4566a04..029b328 100644
--- a/server/process.h
+++ b/server/process.h
@@ -136,6 +136,7 @@ extern void break_process( struct process *process );
@@ -138,6 +138,7 @@ extern void break_process( struct process *process );
extern void detach_debugged_processes( struct thread *debugger );
extern struct process_snapshot *process_snap( int *count );
extern void enum_processes( int (*cb)(struct process*, void*), void *user);
@@ -105,10 +122,10 @@ index f22c128f07..78e88ec350 100644
/* console functions */
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
diff --git a/server/protocol.def b/server/protocol.def
index 0abd1683f0..5fb6e38ea5 100644
index 071f740..cc44503 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3654,6 +3654,13 @@ struct handle_info
@@ -3674,6 +3674,13 @@ struct handle_info
@END
@@ -123,10 +140,10 @@ index 0abd1683f0..5fb6e38ea5 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index 64ab565a95..52fa10d52e 100644
index e449e61..961fbe7 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1802,3 +1802,17 @@ DECL_HANDLER(create_token)
@@ -1797,3 +1797,17 @@ DECL_HANDLER(create_token)
release_object( token );
}
}
@@ -145,5 +162,5 @@ index 64ab565a95..52fa10d52e 100644
+ }
+}
--
2.16.1
1.9.1

View File

@@ -1,26 +1,26 @@
From a4d5c33bb2fc98fd0f84ea05575e0d3eeb5a1bcd Mon Sep 17 00:00:00 2001
From 9a67b4c62e5a575a38081114d4434f274355020e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 12 Apr 2016 01:02:34 +0200
Subject: [PATCH] uiautomationcore: Add dll and stub some functions.
---
dlls/uiautomationcore/Makefile.in | 1 +
dlls/uiautomationcore/uia_main.c | 53 +++++++++++++++++++++++++----
dlls/uiautomationcore/uiautomationcore.spec | 6 ++++
3 files changed, 54 insertions(+), 6 deletions(-)
dlls/uiautomationcore/Makefile.in | 1 +
dlls/uiautomationcore/uia_main.c | 53 ++++++++++++++++++++++++++++++++++-----
2 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/dlls/uiautomationcore/Makefile.in b/dlls/uiautomationcore/Makefile.in
index 78d6254..029fc2e 100644
index 5221450..5173f23 100644
--- a/dlls/uiautomationcore/Makefile.in
+++ b/dlls/uiautomationcore/Makefile.in
@@ -1,4 +1,5 @@
@@ -1,5 +1,6 @@
MODULE = uiautomationcore.dll
IMPORTLIB = uiautomationcore
+IMPORTS = uuid
C_SRCS = \
uia_main.c
diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c
index 31b7d3e..cc4831e 100644
index f0d8247..b9c24b4 100644
--- a/dlls/uiautomationcore/uia_main.c
+++ b/dlls/uiautomationcore/uia_main.c
@@ -1,4 +1,5 @@
@@ -121,41 +121,6 @@ index 31b7d3e..cc4831e 100644
return 0;
}
diff --git a/dlls/uiautomationcore/uiautomationcore.spec b/dlls/uiautomationcore/uiautomationcore.spec
index 48a06b2..8e676ad 100644
--- a/dlls/uiautomationcore/uiautomationcore.spec
+++ b/dlls/uiautomationcore/uiautomationcore.spec
@@ -53,6 +53,8 @@
@ stub TransformPattern_Rotate
@ stub UiaAddEvent
@ stdcall UiaClientsAreListening()
+@ stub UiaDisconnectAllProviders
+@ stub UiaDisconnectProvider
@ stub UiaEventAddWindow
@ stub UiaEventRemoveWindow
@ stub UiaFind
@@ -69,6 +71,7 @@
@ stub UiaHUiaNodeFromVariant
@ stub UiaHasServerSideProvider
@ stub UiaHostProviderFromHwnd
+@ stub UiaIAccessibleFromProvider
@ stdcall UiaLookupId(long ptr)
@ stub UiaNavigate
@ stub UiaNodeFromFocus
@@ -77,10 +80,13 @@
@ stub UiaNodeFromProvider
@ stub UiaNodeRelease
@ stub UiaPatternRelease
+@ stub UiaProviderForNonClient
+@ stub UiaProviderFromIAccessible
@ stub UiaRaiseAsyncContentLoadedEvent
@ stdcall UiaRaiseAutomationEvent(ptr long)
@ stub UiaRaiseAutomationPropertyChangedEvent
@ stub UiaRaiseStructureChangedEvent
+@ stub UiaRaiseTextEditTextChangedEvent
@ stub UiaRegisterProviderCallback
@ stub UiaRemoveEvent
@ stdcall UiaReturnRawElementProvider(long long long ptr)
--
1.9.1

View File

@@ -1,351 +0,0 @@
From ff1967f048d2b32ad98e91b4f39edba0c425a8a9 Mon Sep 17 00:00:00 2001
From: Jack Grigg <me@jackgrigg.com>
Date: Sat, 17 Mar 2018 21:14:05 +1100
Subject: [PATCH] bcrypt: Implement BCryptDeriveKeyPBKDF2 and add test vectors.
Fixes https://bugs.winehq.org/show_bug.cgi?id=42704
Tested on Ubuntu 16.04.2 LTS.
v2 - Removed C++ comment
- Removed all warnings.
- Use heap_* functions
- Formatting changes.
Signed-off-by: Jack Grigg <me@jackgrigg.com>
---
dlls/bcrypt/bcrypt.spec | 1 +
dlls/bcrypt/bcrypt_main.c | 163 +++++++++++++++++++++++++++++++++++++++++++++
dlls/bcrypt/tests/bcrypt.c | 83 +++++++++++++++++++++++
dlls/ncrypt/ncrypt.spec | 2 +-
include/bcrypt.h | 1 +
5 files changed, 249 insertions(+), 1 deletion(-)
diff --git a/dlls/bcrypt/bcrypt.spec b/dlls/bcrypt/bcrypt.spec
index 78824d7..f4d9a57 100644
--- a/dlls/bcrypt/bcrypt.spec
+++ b/dlls/bcrypt/bcrypt.spec
@@ -8,6 +8,7 @@
@ stdcall BCryptDecrypt(ptr ptr long ptr ptr long ptr long ptr long)
@ stub BCryptDeleteContext
@ stub BCryptDeriveKey
+@ stdcall BCryptDeriveKeyPBKDF2(ptr ptr long ptr long int64 ptr long long)
@ stdcall BCryptDestroyHash(ptr)
@ stdcall BCryptDestroyKey(ptr)
@ stub BCryptDestroySecret
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 2b9ae0b..49ccb13 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -1316,6 +1316,169 @@ NTSTATUS WINAPI BCryptSetProperty( BCRYPT_HANDLE handle, const WCHAR *prop, UCHA
}
}
+NTSTATUS PBKDF2_F( BCRYPT_ALG_HANDLE algorithm,
+ UCHAR *password, ULONG password_length,
+ UCHAR *salt, ULONG salt_length,
+ ULONGLONG iterations, int i,
+ UCHAR *res, int hash_length )
+{
+ BCRYPT_HASH_HANDLE handle;
+ NTSTATUS status = STATUS_NOT_SUPPORTED;
+ UCHAR bytes[4];
+ UCHAR *tmp;
+ int j;
+ int k;
+
+ if (!(tmp = heap_alloc( hash_length )))
+ {
+ return STATUS_NO_MEMORY;
+ }
+
+ for (j = 0; j < iterations; j++)
+ {
+ status = BCryptCreateHash( algorithm, &handle, NULL, 0,
+ password, password_length, 0 );
+ if (status != STATUS_SUCCESS)
+ goto done;
+
+ if (j == 0)
+ {
+ /* Use salt || INT(i) */
+ status = BCryptHashData( handle, salt, salt_length, 0 );
+ if (status != STATUS_SUCCESS)
+ goto done;
+ bytes[0] = (i >> 24) & 0xFF;
+ bytes[1] = (i >> 16) & 0xFF;
+ bytes[2] = (i >> 8) & 0xFF;
+ bytes[3] = i & 0xFF;
+ status = BCryptHashData( handle, bytes, 4, 0 );
+ }
+ else
+ {
+ /* Use U_j */
+ status = BCryptHashData( handle, tmp, hash_length, 0 );
+ }
+ if (status != STATUS_SUCCESS)
+ goto done;
+
+ status = BCryptFinishHash( handle, tmp, hash_length, 0 );
+ if (status != STATUS_SUCCESS)
+ goto done;
+
+ status = BCryptDestroyHash( handle );
+ if (status != STATUS_SUCCESS)
+ goto done;
+
+ handle = NULL;
+
+ if (j == 0)
+ {
+ /* Copy into res */
+ memcpy( res, tmp, hash_length );
+ }
+ else
+ {
+ /* XOR into res */
+ for (k = 0; k < hash_length; k++)
+ res[k] ^= tmp[k];
+ }
+ }
+
+done:
+ TRACE("<- status 0x%08x\n", status);
+ if(handle)
+ BCryptDestroyHash( handle );
+ heap_free( tmp );
+ return status;
+}
+
+/************************************************************
+ * BCryptDeriveKeyPBKDF2 (BCRYPT.@)
+ *
+ * Derive a key from a password using the PBKDF2 function
+ * (RFC 2898).
+ *
+ * PARAMS
+ * handle [I] Pointer to the PRF provider
+ * password [I] Optional pointer to the beginning of the password
+ * password_length [I] Length of the password
+ * salt [I] Optional pointer to the beginning of the salt
+ * salt_length [I] Length of the salt
+ * iterations [I] Iteration count
+ * dk [O] Pointer to the beginning of the buffer to store the
+ * derived key in, at least dklen in size
+ * dklen [I] Intended length of the derived key, at most
+ * (2^32 - 1) * (output length of PRF)
+ * flags [I] Reserved, must be zero
+ *
+ * RETURNS
+ * Success: STATUS_SUCCESS.
+ * Failure: - STATUS_INVALID_HANDLE
+ * - STATUS_INVALID_PARAMETER
+ * - STATUS_NO_MEMORY
+ */
+NTSTATUS WINAPI BCryptDeriveKeyPBKDF2( BCRYPT_ALG_HANDLE handle,
+ PUCHAR password, ULONG password_length,
+ PUCHAR salt, ULONG salt_length,
+ ULONGLONG iterations,
+ PUCHAR dk, ULONG dklen,
+ ULONG flags )
+{
+ struct algorithm *alg = handle;
+ int hlen = alg_props[alg->id].hash_length;
+ UCHAR *partial;
+ NTSTATUS status;
+ int l;
+ int r;
+ int i;
+
+ TRACE( "%p, %p, %u, %p, %u, %s, %p, %u, %08x - stub\n",
+ handle, password, password_length, salt, salt_length,
+ wine_dbgstr_longlong(iterations), dk, dklen, flags );
+
+ if (dklen <= 0 || dklen > ((((ULONGLONG) 1) << 32) - 1) * hlen)
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ l = 1 + ((dklen - 1) / hlen); /* ceil(dklen/hlen) */
+ r = dklen - (l - 1) * hlen;
+
+ /* Full blocks */
+ for (i = 1; i < l; i++)
+ {
+ status = PBKDF2_F( handle,
+ password, password_length,
+ salt, salt_length,
+ iterations, i,
+ dk + ((i - 1) * hlen), hlen );
+ if (status != STATUS_SUCCESS)
+ {
+ return status;
+ }
+ }
+
+ /* Final partial block */
+ if (!(partial = heap_alloc( hlen )))
+ {
+ return STATUS_NO_MEMORY;
+ }
+ status = PBKDF2_F( handle,
+ password, password_length,
+ salt, salt_length,
+ iterations, l,
+ partial, hlen );
+ if (status != STATUS_SUCCESS)
+ {
+ heap_free( partial );
+ return status;
+ }
+ memcpy( dk + ((l - 1) * hlen), partial, r );
+ heap_free( partial );
+
+ return STATUS_SUCCESS;
+}
+
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
switch (reason)
diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c
index 6865e87..5c4df6a 100644
--- a/dlls/bcrypt/tests/bcrypt.c
+++ b/dlls/bcrypt/tests/bcrypt.c
@@ -36,6 +36,8 @@ static NTSTATUS (WINAPI *pBCryptHashData)(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULO
static NTSTATUS (WINAPI *pBCryptDuplicateHash)(BCRYPT_HASH_HANDLE, BCRYPT_HASH_HANDLE *, UCHAR *, ULONG, ULONG);
static NTSTATUS (WINAPI *pBCryptFinishHash)(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG);
static NTSTATUS (WINAPI *pBCryptDestroyHash)(BCRYPT_HASH_HANDLE);
+static NTSTATUS (WINAPI *pBCryptDeriveKeyPBKDF2)(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG,
+ ULONGLONG, PUCHAR, ULONG, ULONG);
static NTSTATUS (WINAPI *pBCryptGenRandom)(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, ULONG);
static NTSTATUS (WINAPI *pBCryptGetProperty)(BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG *, ULONG);
static NTSTATUS (WINAPI *pBCryptSetProperty)(BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG);
@@ -396,6 +398,81 @@ static void test_BcryptHash(void)
ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
}
+/* Test vectors from RFC 6070 */
+static UCHAR password[] = "password";
+static UCHAR salt[] = "salt";
+static UCHAR long_password[] =
+ "passwordPASSWORDpassword";
+static UCHAR long_salt[] =
+ "saltSALTsaltSALTsaltSALTsaltSALTsalt";
+static UCHAR password_NUL[] = "pass\0word";
+static UCHAR salt_NUL[] = "sa\0lt";
+
+static UCHAR dk1[] =
+ "0c60c80f961f0e71f3a9b524af6012062fe037a6";
+static UCHAR dk2[] =
+ "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957";
+static UCHAR dk3[] =
+ "4b007901b765489abead49d926f721d065a429c1";
+static UCHAR dk4[] =
+ "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984";
+static UCHAR dk5[] =
+ "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038";
+static UCHAR dk6[] =
+ "56fa6aa75548099dcc37d7f03425e0c3";
+
+static const struct {
+ ULONG password_length;
+ ULONG salt_length;
+ ULONGLONG iterations;
+ ULONG dklen;
+ UCHAR *password;
+ UCHAR *salt;
+ const UCHAR *dk;
+} rfc6070[] = {
+ { 8, 4, 1, 20, password, salt, dk1 },
+ { 8, 4, 2, 20, password, salt, dk2 },
+ { 8, 4, 4096, 20, password, salt, dk3 },
+ { 8, 4, 16777216, 20, password, salt, dk4 },
+ { 24, 36, 4096, 25, long_password, long_salt, dk5 },
+ { 9, 5, 4096, 16, password_NUL, salt_NUL, dk6 }
+};
+
+static void test_BcryptDeriveKeyPBKDF2(void)
+{
+ BCRYPT_ALG_HANDLE alg;
+ UCHAR dk[25];
+ char str[51];
+ NTSTATUS ret;
+ int i;
+
+ alg = NULL;
+ ret = pBCryptOpenAlgorithmProvider(&alg, BCRYPT_SHA1_ALGORITHM, MS_PRIMITIVE_PROVIDER,
+ BCRYPT_ALG_HANDLE_HMAC_FLAG);
+ ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
+ ok(alg != NULL, "alg not set\n");
+
+ test_hash_length(alg, 20);
+ test_alg_name(alg, "SHA1");
+
+ for (i = 0; i < ARRAY_SIZE(rfc6070); i++)
+ {
+ memset(dk, 0, sizeof(dk));
+ ret = pBCryptDeriveKeyPBKDF2(alg,
+ rfc6070[i].password, rfc6070[i].password_length,
+ rfc6070[i].salt, rfc6070[i].salt_length,
+ rfc6070[i].iterations,
+ dk, rfc6070[i].dklen,
+ 0);
+ ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
+ format_hash( dk, rfc6070[i].dklen, str );
+ ok(!memcmp(str, rfc6070[i].dk, rfc6070[i].dklen), "got %s\n", str);
+ }
+
+ ret = pBCryptCloseAlgorithmProvider(alg, 0);
+ ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
+}
+
static void test_rng(void)
{
BCRYPT_ALG_HANDLE alg;
@@ -1630,6 +1707,7 @@ START_TEST(bcrypt)
pBCryptDuplicateHash = (void *)GetProcAddress(module, "BCryptDuplicateHash");
pBCryptFinishHash = (void *)GetProcAddress(module, "BCryptFinishHash");
pBCryptDestroyHash = (void *)GetProcAddress(module, "BCryptDestroyHash");
+ pBCryptDeriveKeyPBKDF2 = (void *)GetProcAddress(module, "BCryptDeriveKeyPBKDF2");
pBCryptGenRandom = (void *)GetProcAddress(module, "BCryptGenRandom");
pBCryptGetProperty = (void *)GetProcAddress(module, "BCryptGetProperty");
pBCryptSetProperty = (void *)GetProcAddress(module, "BCryptSetProperty");
@@ -1660,5 +1738,10 @@ START_TEST(bcrypt)
else
win_skip("BCryptHash is not available\n");
+ if (pBCryptDeriveKeyPBKDF2) /* >= Win 7 */
+ test_BcryptDeriveKeyPBKDF2();
+ else
+ win_skip("BCryptDeriveKeyPBKDF2 is not available\n");
+
FreeLibrary(module);
}
diff --git a/dlls/ncrypt/ncrypt.spec b/dlls/ncrypt/ncrypt.spec
index e7b12e0..adc0999 100644
--- a/dlls/ncrypt/ncrypt.spec
+++ b/dlls/ncrypt/ncrypt.spec
@@ -9,7 +9,7 @@
@ stub BCryptDeleteContext
@ stub BCryptDeriveKey
@ stub BCryptDeriveKeyCapi
-@ stub BCryptDeriveKeyPBKDF2
+@ stdcall BCryptDeriveKeyPBKDF2(ptr ptr long ptr long int64 ptr long long) bcrypt.BCryptDeriveKeyPBKDF2
@ stdcall BCryptDestroyHash(ptr) bcrypt.BCryptDestroyHash
@ stdcall BCryptDestroyKey(ptr) bcrypt.BCryptDestroyKey
@ stub BCryptDestroySecret
diff --git a/include/bcrypt.h b/include/bcrypt.h
index df54f62..d3e4b99 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -217,6 +217,7 @@ typedef PVOID BCRYPT_HASH_HANDLE;
NTSTATUS WINAPI BCryptCloseAlgorithmProvider(BCRYPT_ALG_HANDLE, ULONG);
NTSTATUS WINAPI BCryptCreateHash(BCRYPT_ALG_HANDLE, BCRYPT_HASH_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptDecrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
+NTSTATUS WINAPI BCryptDeriveKeyPBKDF2(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, ULONGLONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptDestroyHash(BCRYPT_HASH_HANDLE);
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE);
NTSTATUS WINAPI BCryptEncrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
--
1.9.1

View File

@@ -1 +0,0 @@
Fixes: [42704] Implement BCryptDeriveKeyPBKDF2

View File

@@ -1,58 +0,0 @@
From ee38b7a672771d088ee5c4e58300623259020fb6 Mon Sep 17 00:00:00 2001
From: Maxime Lombard <berillions@gmail.com>
Date: Sun, 10 Jun 2018 14:47:01 +0200
Subject: [PATCH 1/3] bcrypt: Add support for algorithm ECDH P256.
---
dlls/bcrypt/bcrypt_internal.h | 1 +
dlls/bcrypt/bcrypt_main.c | 2 ++
include/bcrypt.h | 1 +
3 files changed, 4 insertions(+)
diff --git a/dlls/bcrypt/bcrypt_internal.h b/dlls/bcrypt/bcrypt_internal.h
index 11c8b30..fd8cc90 100644
--- a/dlls/bcrypt/bcrypt_internal.h
+++ b/dlls/bcrypt/bcrypt_internal.h
@@ -137,6 +137,7 @@ enum alg_id
ALG_ID_SHA256,
ALG_ID_SHA384,
ALG_ID_SHA512,
+ ALG_ID_ECDH_P256,
ALG_ID_ECDSA_P256,
ALG_ID_ECDSA_P384,
};
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 24065c1..003e8f3 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -114,6 +114,7 @@ alg_props[] =
/* ALG_ID_SHA256 */ { 286, 32, 512, BCRYPT_SHA256_ALGORITHM, FALSE },
/* ALG_ID_SHA384 */ { 382, 48, 1024, BCRYPT_SHA384_ALGORITHM, FALSE },
/* ALG_ID_SHA512 */ { 382, 64, 1024, BCRYPT_SHA512_ALGORITHM, FALSE },
+ /* ALG_ID_ECDH_P256 */ { 0, 0, 0, BCRYPT_ECDH_P256_ALGORITHM, FALSE },
/* ALG_ID_ECDSA_P256 */ { 0, 0, 0, BCRYPT_ECDSA_P256_ALGORITHM, FALSE },
/* ALG_ID_ECDSA_P384 */ { 0, 0, 0, BCRYPT_ECDSA_P384_ALGORITHM, FALSE },
};
@@ -184,6 +185,7 @@ NTSTATUS WINAPI BCryptOpenAlgorithmProvider( BCRYPT_ALG_HANDLE *handle, LPCWSTR
else if (!strcmpW( id, BCRYPT_SHA256_ALGORITHM )) alg_id = ALG_ID_SHA256;
else if (!strcmpW( id, BCRYPT_SHA384_ALGORITHM )) alg_id = ALG_ID_SHA384;
else if (!strcmpW( id, BCRYPT_SHA512_ALGORITHM )) alg_id = ALG_ID_SHA512;
+ else if (!strcmpW( id, BCRYPT_ECDH_P256_ALGORITHM )) alg_id = ALG_ID_ECDH_P256;
else if (!strcmpW( id, BCRYPT_ECDSA_P256_ALGORITHM )) alg_id = ALG_ID_ECDSA_P256;
else if (!strcmpW( id, BCRYPT_ECDSA_P384_ALGORITHM )) alg_id = ALG_ID_ECDSA_P384;
else
diff --git a/include/bcrypt.h b/include/bcrypt.h
index d3e4b99..676db72 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -81,6 +81,7 @@ typedef LONG NTSTATUS;
#define BCRYPT_SHA256_ALGORITHM (const WCHAR []){'S','H','A','2','5','6',0}
#define BCRYPT_SHA384_ALGORITHM (const WCHAR []){'S','H','A','3','8','4',0}
#define BCRYPT_SHA512_ALGORITHM (const WCHAR []){'S','H','A','5','1','2',0}
+#define BCRYPT_ECDH_P256_ALGORITHM (const WCHAR []){'E','C','D','H','_','P','2','5','6',0}
#define BCRYPT_ECDSA_P256_ALGORITHM (const WCHAR []){'E','C','D','S','A','_','P','2','5','6',0}
#define BCRYPT_ECDSA_P384_ALGORITHM (const WCHAR []){'E','C','D','S','A','_','P','3','8','4',0}
#define BCRYPT_ECDSA_P521_ALGORITHM (const WCHAR []){'E','C','D','S','A','_','P','5','2','1',0}
--
1.9.1

View File

@@ -1,70 +0,0 @@
From 480ec9b4f559237e618ede31ecd158340783ab80 Mon Sep 17 00:00:00 2001
From: Maxime Lombard <berillions@gmail.com>
Date: Sun, 10 Jun 2018 14:50:31 +0200
Subject: [PATCH 2/3] bcrypt: Add BCryptGenerateKeyPair stub.
---
dlls/bcrypt/bcrypt.spec | 2 +-
dlls/bcrypt/bcrypt_main.c | 6 ++++++
dlls/ncrypt/ncrypt.spec | 2 +-
include/bcrypt.h | 1 +
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/bcrypt/bcrypt.spec b/dlls/bcrypt/bcrypt.spec
index 78824d7..ccfec63 100644
--- a/dlls/bcrypt/bcrypt.spec
+++ b/dlls/bcrypt/bcrypt.spec
@@ -25,7 +25,7 @@
@ stdcall BCryptFinishHash(ptr ptr long long)
@ stub BCryptFreeBuffer
@ stdcall BCryptGenRandom(ptr ptr long long)
-@ stub BCryptGenerateKeyPair
+@ stdcall BCryptGenerateKeyPair(ptr ptr long long)
@ stdcall BCryptGenerateSymmetricKey(ptr ptr ptr long ptr long long)
@ stdcall BCryptGetFipsAlgorithmMode(ptr)
@ stdcall BCryptGetProperty(ptr wstr ptr long ptr long)
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 0381b65..623ccb5 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -160,6 +160,12 @@ NTSTATUS WINAPI BCryptGenRandom(BCRYPT_ALG_HANDLE handle, UCHAR *buffer, ULONG c
return STATUS_NOT_IMPLEMENTED;
}
+NTSTATUS WINAPI BCryptGenerateKeyPair(BCRYPT_ALG_HANDLE algorithm, BCRYPT_KEY_HANDLE *handle, ULONG input_len, ULONG flags)
+{
+ FIXME("%p, %p, %u, %08x - stub\n", algorithm, handle, input_len, flags);
+ return STATUS_SUCCESS;
+}
+
NTSTATUS WINAPI BCryptOpenAlgorithmProvider( BCRYPT_ALG_HANDLE *handle, LPCWSTR id, LPCWSTR implementation, DWORD flags )
{
const DWORD supported_flags = BCRYPT_ALG_HANDLE_HMAC_FLAG;
diff --git a/dlls/ncrypt/ncrypt.spec b/dlls/ncrypt/ncrypt.spec
index e7b12e0..e667e75 100644
--- a/dlls/ncrypt/ncrypt.spec
+++ b/dlls/ncrypt/ncrypt.spec
@@ -27,7 +27,7 @@
@ stdcall BCryptFinishHash(ptr ptr long long) bcrypt.BCryptFinishHash
@ stub BCryptFreeBuffer
@ stdcall BCryptGenRandom(ptr ptr long long) bcrypt.BCryptGenRandom
-@ stub BCryptGenerateKeyPair
+@ stdcall BCryptGenerateKeyPair(ptr ptr long long) bcrypt.BCryptGenerateKeyPair
@ stdcall BCryptGenerateSymmetricKey(ptr ptr ptr long ptr long long) bcrypt.BCryptGenerateSymmetricKey
@ stdcall BCryptGetFipsAlgorithmMode(ptr) bcrypt.BCryptGetFipsAlgorithmMode
@ stdcall BCryptGetProperty(ptr wstr ptr long ptr long) bcrypt.BCryptGetProperty
diff --git a/include/bcrypt.h b/include/bcrypt.h
index 7966f76..2ef073b 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -223,6 +223,7 @@ NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE);
NTSTATUS WINAPI BCryptEncrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
NTSTATUS WINAPI BCryptEnumAlgorithms(ULONG, ULONG *, BCRYPT_ALGORITHM_IDENTIFIER **, ULONG);
NTSTATUS WINAPI BCryptFinishHash(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG);
+NTSTATUS WINAPI BCryptGenerateKeyPair(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, ULONG, ULONG);
NTSTATUS WINAPI BCryptGenerateSymmetricKey(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptGenRandom(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptGetFipsAlgorithmMode(BOOLEAN *);
--
1.9.1

View File

@@ -1,70 +0,0 @@
From e765bec7193e3ffa27492abe76ed4e56db0f4fc7 Mon Sep 17 00:00:00 2001
From: Maxime Lombard <berillions@gmail.com>
Date: Sun, 10 Jun 2018 14:52:31 +0200
Subject: [PATCH 3/3] bcrypt: Add BCryptFinalizeKeyPair stub.
---
dlls/bcrypt/bcrypt.spec | 2 +-
dlls/bcrypt/bcrypt_main.c | 6 ++++++
dlls/ncrypt/ncrypt.spec | 2 +-
include/bcrypt.h | 1 +
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/bcrypt/bcrypt.spec b/dlls/bcrypt/bcrypt.spec
index ccfec63..891381f 100644
--- a/dlls/bcrypt/bcrypt.spec
+++ b/dlls/bcrypt/bcrypt.spec
@@ -21,7 +21,7 @@
@ stub BCryptEnumProviders
@ stub BCryptEnumRegisteredProviders
@ stdcall BCryptExportKey(ptr ptr wstr ptr long ptr long)
-@ stub BCryptFinalizeKeyPair
+@ stdcall BCryptFinalizeKeyPair(ptr long)
@ stdcall BCryptFinishHash(ptr ptr long long)
@ stub BCryptFreeBuffer
@ stdcall BCryptGenRandom(ptr ptr long long)
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 623ccb5..90af6aa 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -166,6 +166,12 @@ NTSTATUS WINAPI BCryptGenerateKeyPair(BCRYPT_ALG_HANDLE algorithm, BCRYPT_KEY_HA
return STATUS_SUCCESS;
}
+NTSTATUS WINAPI BCryptFinalizeKeyPair(BCRYPT_KEY_HANDLE key, ULONG dwflags)
+{
+ FIXME("%p, %08x - stub\n", key, dwflags);
+ return STATUS_SUCCESS;
+}
+
NTSTATUS WINAPI BCryptOpenAlgorithmProvider( BCRYPT_ALG_HANDLE *handle, LPCWSTR id, LPCWSTR implementation, DWORD flags )
{
const DWORD supported_flags = BCRYPT_ALG_HANDLE_HMAC_FLAG;
diff --git a/dlls/ncrypt/ncrypt.spec b/dlls/ncrypt/ncrypt.spec
index e667e75..c6e7f7f 100644
--- a/dlls/ncrypt/ncrypt.spec
+++ b/dlls/ncrypt/ncrypt.spec
@@ -23,7 +23,7 @@
@ stub BCryptEnumProviders
@ stub BCryptEnumRegisteredProviders
@ stdcall BCryptExportKey(ptr ptr wstr ptr long ptr long) bcrypt.BCryptExportKey
-@ stub BCryptFinalizeKeyPair
+@ stdcall BCryptFinalizeKeyPair(ptr long) bcrypt.BCryptFinalizeKeyPair
@ stdcall BCryptFinishHash(ptr ptr long long) bcrypt.BCryptFinishHash
@ stub BCryptFreeBuffer
@ stdcall BCryptGenRandom(ptr ptr long long) bcrypt.BCryptGenRandom
diff --git a/include/bcrypt.h b/include/bcrypt.h
index 2ef073b..6826c86 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -222,6 +222,7 @@ NTSTATUS WINAPI BCryptDestroyHash(BCRYPT_HASH_HANDLE);
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE);
NTSTATUS WINAPI BCryptEncrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
NTSTATUS WINAPI BCryptEnumAlgorithms(ULONG, ULONG *, BCRYPT_ALGORITHM_IDENTIFIER **, ULONG);
+NTSTATUS WINAPI BCryptFinalizeKeyPair(BCRYPT_KEY_HANDLE, ULONG);
NTSTATUS WINAPI BCryptFinishHash(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptGenerateKeyPair(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, ULONG, ULONG);
NTSTATUS WINAPI BCryptGenerateSymmetricKey(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG);
--
1.9.1

View File

@@ -1 +0,0 @@
Fixes: [45312] Fix issue for Assassin's Creed : Syndicate

View File

@@ -0,0 +1,91 @@
From 72d00367b9863fd84d47623b6811552e155fca84 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 5 Feb 2019 10:00:26 +1100
Subject: [PATCH] bcrypt: Add BCryptDestroySecret/BCryptSecretAgreement stubs
---
dlls/bcrypt/bcrypt.spec | 4 ++--
dlls/bcrypt/bcrypt_main.c | 16 ++++++++++++++++
include/bcrypt.h | 3 +++
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/bcrypt/bcrypt.spec b/dlls/bcrypt/bcrypt.spec
index 052a099..dfe08e7 100644
--- a/dlls/bcrypt/bcrypt.spec
+++ b/dlls/bcrypt/bcrypt.spec
@@ -11,7 +11,7 @@
@ stdcall BCryptDeriveKeyPBKDF2(ptr ptr long ptr long int64 ptr long long)
@ stdcall BCryptDestroyHash(ptr)
@ stdcall BCryptDestroyKey(ptr)
-@ stub BCryptDestroySecret
+@ stdcall BCryptDestroySecret(ptr)
@ stdcall BCryptDuplicateHash(ptr ptr ptr long long)
@ stdcall BCryptDuplicateKey(ptr ptr ptr long long)
@ stdcall BCryptEncrypt(ptr ptr long ptr ptr long ptr long ptr long)
@@ -44,7 +44,7 @@
@ stdcall BCryptRemoveContextFunction(long wstr long wstr)
@ stdcall BCryptRemoveContextFunctionProvider(long wstr long wstr wstr)
@ stub BCryptResolveProviders
-@ stub BCryptSecretAgreement
+@ stdcall BCryptSecretAgreement(ptr ptr ptr long)
@ stub BCryptSetAuditingInterface
@ stub BCryptSetContextFunctionProperty
@ stdcall BCryptSetProperty(ptr wstr ptr long long)
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 80bd14b..36451c9 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -1556,6 +1556,22 @@ NTSTATUS WINAPI BCryptDeriveKeyPBKDF2( BCRYPT_ALG_HANDLE handle,
return STATUS_SUCCESS;
}
+NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE handle, BCRYPT_KEY_HANDLE key, BCRYPT_SECRET_HANDLE *secret, ULONG flags)
+{
+ FIXME( "%p, %p, %p, %08x\n", handle, key, secret, flags );
+
+ if(secret)
+ *secret = (BCRYPT_SECRET_HANDLE *)0xDEADFEED;
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE secret)
+{
+ FIXME( "%p\n", secret );
+ return STATUS_SUCCESS;
+}
+
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
switch (reason)
diff --git a/include/bcrypt.h b/include/bcrypt.h
index ba78c1d..866914c 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -211,6 +211,7 @@ typedef PVOID BCRYPT_ALG_HANDLE;
typedef PVOID BCRYPT_KEY_HANDLE;
typedef PVOID BCRYPT_HANDLE;
typedef PVOID BCRYPT_HASH_HANDLE;
+typedef PVOID BCRYPT_SECRET_HANDLE;
/* Flags for BCryptGenRandom */
#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001
@@ -228,6 +229,7 @@ NTSTATUS WINAPI BCryptDecrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR,
NTSTATUS WINAPI BCryptDeriveKeyPBKDF2(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, ULONGLONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptDestroyHash(BCRYPT_HASH_HANDLE);
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE);
+NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE);
NTSTATUS WINAPI BCryptDuplicateHash(BCRYPT_HASH_HANDLE, BCRYPT_HASH_HANDLE *, UCHAR *, ULONG, ULONG);
NTSTATUS WINAPI BCryptEncrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
NTSTATUS WINAPI BCryptEnumAlgorithms(ULONG, ULONG *, BCRYPT_ALGORITHM_IDENTIFIER **, ULONG);
@@ -242,6 +244,7 @@ NTSTATUS WINAPI BCryptHash(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, PUCH
NTSTATUS WINAPI BCryptHashData(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptImportKeyPair(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, UCHAR *, ULONG, ULONG);
NTSTATUS WINAPI BCryptOpenAlgorithmProvider(BCRYPT_ALG_HANDLE *, LPCWSTR, LPCWSTR, ULONG);
+NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE, BCRYPT_KEY_HANDLE, BCRYPT_SECRET_HANDLE *, ULONG);
NTSTATUS WINAPI BCryptSetProperty(BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptVerifySignature(BCRYPT_KEY_HANDLE, void *, UCHAR *, ULONG, UCHAR *, ULONG, ULONG);
--
1.9.1

View File

@@ -0,0 +1,78 @@
From 315b52406fbddcaf9289b2a47e8498fba49f8278 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 5 Feb 2019 10:09:59 +1100
Subject: [PATCH] bcrypt: Add BCryptDeriveKey stub
---
dlls/bcrypt/bcrypt.spec | 2 +-
dlls/bcrypt/bcrypt_main.c | 7 +++++++
include/bcrypt.h | 15 +++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/dlls/bcrypt/bcrypt.spec b/dlls/bcrypt/bcrypt.spec
index dfe08e7..4946ee5 100644
--- a/dlls/bcrypt/bcrypt.spec
+++ b/dlls/bcrypt/bcrypt.spec
@@ -7,7 +7,7 @@
@ stdcall BCryptCreateHash(ptr ptr ptr long ptr long long)
@ stdcall BCryptDecrypt(ptr ptr long ptr ptr long ptr long ptr long)
@ stub BCryptDeleteContext
-@ stub BCryptDeriveKey
+@ stdcall BCryptDeriveKey(ptr wstr ptr ptr long ptr long)
@ stdcall BCryptDeriveKeyPBKDF2(ptr ptr long ptr long int64 ptr long long)
@ stdcall BCryptDestroyHash(ptr)
@ stdcall BCryptDestroyKey(ptr)
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 36451c9..ca2f274 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -1572,6 +1572,13 @@ NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE secret)
return STATUS_SUCCESS;
}
+NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE secret, LPCWSTR kdf, BCryptBufferDesc *parameter,
+ PUCHAR derived, ULONG derived_size, ULONG *result, ULONG flags)
+{
+ FIXME( "%p, %s, %p, %p, %d, %p, %08x\n", secret, debugstr_w(kdf), parameter, derived, derived_size, result, flags );
+ return STATUS_INTERNAL_ERROR;
+}
+
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
switch (reason)
diff --git a/include/bcrypt.h b/include/bcrypt.h
index 866914c..a5abf23 100644
--- a/include/bcrypt.h
+++ b/include/bcrypt.h
@@ -204,6 +204,20 @@ typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER
ULONG cbKeyData;
} BCRYPT_KEY_DATA_BLOB_HEADER, *PBCRYPT_KEY_DATA_BLOB_HEADER;
+typedef struct _BCryptBuffer
+{
+ ULONG cbBuffer;
+ ULONG BufferType;
+ void *pvBuffer;
+} BCryptBuffer, *PBCryptBuffer;
+
+typedef struct _BCryptBufferDesc
+{
+ ULONG ulVersion;
+ ULONG cBuffers;
+ PBCryptBuffer pBuffers;
+} BCryptBufferDesc, *PBCryptBufferDesc;
+
#define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b
#define BCRYPT_KEY_DATA_BLOB_VERSION1 1
@@ -226,6 +240,7 @@ typedef PVOID BCRYPT_SECRET_HANDLE;
NTSTATUS WINAPI BCryptCloseAlgorithmProvider(BCRYPT_ALG_HANDLE, ULONG);
NTSTATUS WINAPI BCryptCreateHash(BCRYPT_ALG_HANDLE, BCRYPT_HASH_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptDecrypt(BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG);
+NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE, LPCWSTR, BCryptBufferDesc*, PUCHAR, ULONG, ULONG *, ULONG);
NTSTATUS WINAPI BCryptDeriveKeyPBKDF2(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, ULONGLONG, PUCHAR, ULONG, ULONG);
NTSTATUS WINAPI BCryptDestroyHash(BCRYPT_HASH_HANDLE);
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE);
--
1.9.1

View File

@@ -0,0 +1 @@
Fixes: [46564] Add BCryptDestroySecret/BCryptSecretAgreement stubs.

View File

@@ -0,0 +1,35 @@
From 37c7da9a71e327dfe86c0c550cabc50968abd04d Mon Sep 17 00:00:00 2001
From: Andrew Shadura <bugzilla@tut.by>
Date: Fri, 1 Feb 2019 08:38:10 +1100
Subject: [PATCH] comctl32: Fixed rebar behaviour when there's capture and no
drag
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=14750
---
dlls/comctl32/rebar.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index aaa1047..29fc854 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -3119,7 +3119,15 @@ REBAR_MouseMove (REBAR_INFO *infoPtr, LPARAM lParam)
int yPtMove = (infoPtr->dwStyle & CCS_VERT ? ptMove.x : ptMove.y);
if (GetCapture() != infoPtr->hwndSelf)
- ERR("We are dragging but haven't got capture?!?\n");
+ {
+ if (infoPtr->fStatus & BEGIN_DRAG_ISSUED)
+ {
+ REBAR_Notify_NMREBAR (infoPtr, infoPtr->iGrabbedBand, RBN_ENDDRAG);
+ infoPtr->fStatus &= ~BEGIN_DRAG_ISSUED;
+ }
+ infoPtr->iGrabbedBand = -1;
+ return 0;
+ }
band = REBAR_GetBand(infoPtr, infoPtr->iGrabbedBand);
--
1.9.1

View File

@@ -0,0 +1 @@
Fixes: [14750] comctl32: Fixed rebar behaviour when there's capture and no drag.

View File

@@ -1,7 +1,7 @@
From 2af2d1c51ec73862a156850d702dcb4608d73558 Mon Sep 17 00:00:00 2001
From 30d0aa2712dbdfe8f532118f9829c7999c0326a7 Mon Sep 17 00:00:00 2001
From: Lucian Poston <lucian.poston@gmail.com>
Date: Thu, 3 May 2018 00:38:06 -0700
Subject: d2d1: Use ID2D1Factory1 in d2d_geometry
Subject: [PATCH] d2d1: Use ID2D1Factory1 in d2d_geometry
https://bugs.winehq.org/show_bug.cgi?id=44052
@@ -13,10 +13,10 @@ Signed-off-by: Lucian Poston <lucian.poston@gmail.com>
3 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 21e2b88..0bb0112 100644
index 70b841df8cb..85c56524de4 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -406,7 +406,7 @@ struct d2d_geometry
@@ -424,7 +424,7 @@ struct d2d_geometry
ID2D1Geometry ID2D1Geometry_iface;
LONG refcount;
@@ -25,7 +25,7 @@ index 21e2b88..0bb0112 100644
D2D_MATRIX_3X2_F transform;
@@ -470,10 +470,10 @@ struct d2d_geometry
@@ -494,10 +494,10 @@ struct d2d_geometry
} u;
};
@@ -37,13 +37,13 @@ index 21e2b88..0bb0112 100644
+ ID2D1Factory1 *factory, const D2D1_RECT_F *rect) DECLSPEC_HIDDEN;
+void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory,
ID2D1Geometry *src_geometry, const D2D_MATRIX_3X2_F *transform) DECLSPEC_HIDDEN;
struct d2d_geometry *unsafe_impl_from_ID2D1Geometry(ID2D1Geometry *iface) DECLSPEC_HIDDEN;
HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
D2D1_FILL_MODE fill_mode, ID2D1Geometry **src_geometries, unsigned int geometry_count) DECLSPEC_HIDDEN;
diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c
index 7810e95..2a1a536 100644
index c2a0405abdd..33c2d173596 100644
--- a/dlls/d2d1/factory.c
+++ b/dlls/d2d1/factory.c
@@ -140,7 +140,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
@@ -141,7 +141,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -52,7 +52,7 @@ index 7810e95..2a1a536 100644
{
WARN("Failed to initialize rectangle geometry, hr %#x.\n", hr);
heap_free(object);
@@ -190,7 +190,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
@@ -207,7 +207,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -61,7 +61,7 @@ index 7810e95..2a1a536 100644
TRACE("Created transformed geometry %p.\n", object);
*transformed_geometry = (ID2D1TransformedGeometry *)&object->ID2D1Geometry_iface;
@@ -207,7 +207,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory1 *i
@@ -224,7 +224,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory2 *i
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -71,7 +71,7 @@ index 7810e95..2a1a536 100644
TRACE("Created path geometry %p.\n", object);
*geometry = (ID2D1PathGeometry *)&object->ID2D1Geometry_iface;
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index d716fb1..5bf63f6 100644
index 250ff0c5535..7b67e247f7a 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2343,15 +2343,15 @@ static void d2d_geometry_cleanup(struct d2d_geometry *geometry)
@@ -134,7 +134,7 @@ index d716fb1..5bf63f6 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_GetBounds(ID2D1RectangleGeometry *iface,
@@ -3780,7 +3788,7 @@ static const struct ID2D1RectangleGeometryVtbl d2d_rectangle_geometry_vtbl =
@@ -3779,7 +3787,7 @@ static const struct ID2D1RectangleGeometryVtbl d2d_rectangle_geometry_vtbl =
d2d_rectangle_geometry_GetRect,
};
@@ -143,7 +143,7 @@ index d716fb1..5bf63f6 100644
{
struct d2d_face *f;
D2D1_POINT_2F *v;
@@ -3901,10 +3909,14 @@ static void STDMETHODCALLTYPE d2d_transformed_geometry_GetFactory(ID2D1Transform
@@ -3900,10 +3908,14 @@ static void STDMETHODCALLTYPE d2d_transformed_geometry_GetFactory(ID2D1Transform
ID2D1Factory **factory)
{
struct d2d_geometry *geometry = impl_from_ID2D1TransformedGeometry(iface);
@@ -159,7 +159,7 @@ index d716fb1..5bf63f6 100644
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_GetBounds(ID2D1TransformedGeometry *iface,
@@ -4098,7 +4110,7 @@ static const struct ID2D1TransformedGeometryVtbl d2d_transformed_geometry_vtbl =
@@ -4096,7 +4108,7 @@ static const struct ID2D1TransformedGeometryVtbl d2d_transformed_geometry_vtbl =
d2d_transformed_geometry_GetTransform,
};
@@ -169,5 +169,5 @@ index d716fb1..5bf63f6 100644
{
struct d2d_geometry *src_impl;
--
2.7.4
2.20.1

View File

@@ -1,156 +0,0 @@
From 3dc821fe683d1e17976ca9367465c1412e1140b4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 14 Jan 2017 07:50:36 +0100
Subject: d3d8: Improve ValidateVertexShader stub.
---
dlls/d3d8/d3d8_main.c | 43 ++++++++++++++++++++++---------------------
dlls/d3d8/tests/device.c | 40 +++++++++++++++++++++++++---------------
2 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 8ac704c364c..2ab0414b7f2 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -58,38 +58,39 @@ IDirect3D8 * WINAPI DECLSPEC_HOTPATCH Direct3DCreate8(UINT sdk_version)
/***********************************************************************
* ValidateVertexShader (D3D8.@)
- *
- * I've seen reserved1 and reserved2 always passed as 0's
- * bool seems always passed as 0 or 1, but other values work as well...
- * toto result?
*/
-HRESULT WINAPI ValidateVertexShader(DWORD* vertexshader, DWORD* reserved1, DWORD* reserved2, BOOL bool, DWORD* toto)
+HRESULT WINAPI ValidateVertexShader(DWORD *vertexshader, DWORD *reserved1, DWORD *reserved2,
+ BOOL return_error, char **errors)
{
- HRESULT ret;
- static BOOL warned;
-
- if (TRACE_ON(d3d8) || !warned) {
- FIXME("(%p %p %p %d %p): stub\n", vertexshader, reserved1, reserved2, bool, toto);
- warned = TRUE;
- }
+ const char *message = "";
+ HRESULT hr = E_FAIL;
- if (!vertexshader)
- return E_FAIL;
+ TRACE("(%p %p %p %d %p): semi-stub\n", vertexshader, reserved1, reserved2, return_error, errors);
- if (reserved1 || reserved2)
- return E_FAIL;
+ if (!vertexshader)
+ {
+ message = "(Global Validation Error) Version Token: Code pointer cannot be NULL.\n";
+ goto done;
+ }
- switch(*vertexshader) {
+ switch (*vertexshader)
+ {
case 0xFFFE0101:
case 0xFFFE0100:
- ret=S_OK;
+ hr = S_OK;
break;
+
default:
WARN("Invalid shader version token %#x.\n", *vertexshader);
- ret=E_FAIL;
- }
+ message = "(Global Validation Error) Version Token: Unsupported vertex shader version.\n";
+ }
- return ret;
+done:
+ if (!return_error) message = "";
+ if (errors && (*errors = HeapAlloc(GetProcessHeap(), 0, strlen(message) + 1)))
+ strcpy(*errors, message);
+
+ return hr;
}
/***********************************************************************
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 28c6af32e0c..1368ce3a2cf 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -50,7 +50,7 @@ struct device_desc
static DEVMODEW registry_mode;
-static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, int, DWORD *);
+static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, BOOL, char **);
static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, int, DWORD *);
static BOOL (WINAPI *pGetCursorInfo)(PCURSORINFO);
@@ -4238,18 +4238,31 @@ static void test_validate_vs(void)
0x00000009, 0xc0080000, 0x90e40000, 0xa0e40003, /* dp4 oPos.w, v0, c3 */
0x0000ffff, /* end */
};
+ char *errors;
HRESULT hr;
hr = ValidateVertexShader(0, 0, 0, 0, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
hr = ValidateVertexShader(0, 0, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidateVertexShader(0, 0, 0, 0, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidateVertexShader(0, 0, 0, 1, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
+
hr = ValidateVertexShader(vs, 0, 0, 0, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-
hr = ValidateVertexShader(vs, 0, 0, 1, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* Seems to do some version checking. */
+
*vs = 0xfffe0100; /* vs_1_0 */
hr = ValidateVertexShader(vs, 0, 0, 0, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
@@ -4257,21 +4270,18 @@ static void test_validate_vs(void)
*vs = 0xfffe0102; /* bogus version */
hr = ValidateVertexShader(vs, 0, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen that applications always pass the 2nd and 3rd parameter as 0.
- * Simple test with non-zero parameters. */
- *vs = 0xfffe0101; /* vs_1_1 */
- hr = ValidateVertexShader(vs, vs, 0, 1, 0);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidateVertexShader(vs, 0, 0, 0, &errors);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
- hr = ValidateVertexShader(vs, 0, vs, 1, 0);
+ errors = (void *)0xdeadbeef;
+ hr = ValidateVertexShader(vs, 0, 0, 1, &errors);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen the 4th parameter always passed as either 0 or 1, but passing
- * other values doesn't seem to hurt. */
- hr = ValidateVertexShader(vs, 0, 0, 12345, 0);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* What is the 5th parameter? The following seems to work ok. */
- hr = ValidateVertexShader(vs, 0, 0, 1, vs);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
}
static void test_validate_ps(void)
--
2.11.0

View File

@@ -1,140 +0,0 @@
From 29d2dd7606178f391c8802f8d5767a7bd83c4e30 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 14 Jan 2017 07:54:39 +0100
Subject: d3d8: Improve ValidatePixelShader stub.
---
dlls/d3d8/d3d8_main.c | 37 +++++++++++++++++--------------------
dlls/d3d8/tests/device.c | 34 ++++++++++++++++++++--------------
2 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index a562c1c7e30..41f411c30a8 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -101,39 +101,36 @@ done:
/***********************************************************************
* ValidatePixelShader (D3D8.@)
- *
- * PARAMS
- * toto result?
*/
-HRESULT WINAPI ValidatePixelShader(DWORD* pixelshader, DWORD* reserved1, BOOL bool, DWORD* toto)
+HRESULT WINAPI ValidatePixelShader(DWORD *pixelshader, DWORD *reserved1, BOOL return_error, char **errors)
{
- HRESULT ret;
- static BOOL warned;
-
- if (TRACE_ON(d3d8) || !warned) {
- FIXME("(%p %p %d %p): stub\n", pixelshader, reserved1, bool, toto);
- warned = TRUE;
- }
+ const char *message = "";
+ HRESULT hr = E_FAIL;
- if (!pixelshader)
- return E_FAIL;
+ TRACE("(%p %p %d %p): semi-stub\n", pixelshader, reserved1, return_error, errors);
- if (reserved1)
- return E_FAIL;
+ if (!pixelshader)
+ return E_FAIL;
- switch(*pixelshader) {
+ switch (*pixelshader)
+ {
case 0xFFFF0100:
case 0xFFFF0101:
case 0xFFFF0102:
case 0xFFFF0103:
case 0xFFFF0104:
- ret=S_OK;
+ hr = S_OK;
break;
default:
WARN("Invalid shader version token %#x.\n", *pixelshader);
- ret=E_FAIL;
- }
- return ret;
+ message = "(Global Validation Error) Version Token: Unsupported pixel shader version.\n";
+ }
+
+ if (!return_error) message = "";
+ if (errors && (*errors = HeapAlloc(GetProcessHeap(), 0, strlen(message) + 1)))
+ strcpy(*errors, message);
+
+ return hr;
}
void d3d8_resource_cleanup(struct d3d8_resource *resource)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 1368ce3a2cf..9ff3be71776 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -51,7 +51,7 @@ struct device_desc
static DEVMODEW registry_mode;
static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, BOOL, char **);
-static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, int, DWORD *);
+static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, BOOL, char **);
static BOOL (WINAPI *pGetCursorInfo)(PCURSORINFO);
@@ -4296,33 +4296,39 @@ static void test_validate_ps(void)
0x00000005, 0x800f0000, 0xb0e40000, 0x80e40000, /* mul r0, t0, r0 */
0x0000ffff, /* end */
};
+ char *errors;
HRESULT hr;
hr = ValidatePixelShader(0, 0, 0, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
hr = ValidatePixelShader(0, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(0, 0, 1, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(errors == (void *)0xdeadbeef, "Expected 0xdeadbeef, got %p.\n", errors);
+
hr = ValidatePixelShader(ps, 0, 0, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-
hr = ValidatePixelShader(ps, 0, 1, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* Seems to do some version checking. */
+
*ps = 0xffff0105; /* bogus version */
hr = ValidatePixelShader(ps, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen that applications always pass the 2nd parameter as 0.
- * Simple test with a non-zero parameter. */
- *ps = 0xffff0101; /* ps_1_1 */
- hr = ValidatePixelShader(ps, ps, 1, 0);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(ps, 0, 0, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(ps, 0, 1, &errors);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen the 3rd parameter always passed as either 0 or 1, but passing
- * other values doesn't seem to hurt. */
- hr = ValidatePixelShader(ps, 0, 12345, 0);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* What is the 4th parameter? The following seems to work ok. */
- hr = ValidatePixelShader(ps, 0, 1, ps);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
}
static void test_volume_get_container(void)
--
2.11.0

View File

@@ -1 +0,0 @@
Fixes: [40036] Improve stubs for Validate{Vertex,Pixel}Shader

Some files were not shown because too many files have changed in this diff Show More