diff --git a/reactos/dll/win32/credui/credui.spec b/reactos/dll/win32/credui/credui.spec index c9fc1628998..ca8ff9117eb 100644 --- a/reactos/dll/win32/credui/credui.spec +++ b/reactos/dll/win32/credui/credui.spec @@ -1,3 +1,4 @@ +@ stdcall CredPackAuthenticationBufferW(long wstr ptr ptr ptr) @ stub CredUICmdLinePromptForCredentialsA @ stub CredUICmdLinePromptForCredentialsW @ stub CredUIConfirmCredentialsA @@ -7,10 +8,12 @@ @ stdcall CredUIParseUserNameW(wstr ptr long ptr long) @ stub CredUIPromptForCredentialsA @ stdcall CredUIPromptForCredentialsW(ptr wstr ptr long ptr long ptr long ptr long) +@ stdcall CredUIPromptForWindowsCredentialsW(ptr long ptr ptr long ptr ptr ptr long) @ stdcall CredUIReadSSOCredA(str ptr) @ stdcall CredUIReadSSOCredW(wstr ptr) @ stdcall CredUIStoreSSOCredA(str str str long) @ stdcall CredUIStoreSSOCredW(wstr wstr wstr long) +@ stdcall CredUnPackAuthenticationBufferW(long ptr long ptr ptr ptr ptr ptr ptr) @ stub -private DllCanUnloadNow @ stub -private DllGetClassObject @ stub -private DllRegisterServer diff --git a/reactos/dll/win32/credui/credui_main.c b/reactos/dll/win32/credui/credui_main.c index 00ab84f2dd4..0a3476154bc 100644 --- a/reactos/dll/win32/credui/credui_main.c +++ b/reactos/dll/win32/credui/credui_main.c @@ -872,6 +872,7 @@ ULONG SEC_ENTRY SspiPromptForCredentialsW( PCWSTR target, void *info, DWORD len_password = sizeof(password) / sizeof(password[0]); DWORD ret, flags; CREDUI_INFOW *cred_info = info; + SEC_WINNT_AUTH_IDENTITY_W *id = input_id; FIXME( "(%s, %p, %u, %s, %p, %p, %p, %x) stub\n", debugstr_w(target), info, error, debugstr_w(package), input_id, output_id, save, sspi_flags ); @@ -883,11 +884,6 @@ ULONG SEC_ENTRY SspiPromptForCredentialsW( PCWSTR target, void *info, FIXME( "package %s not supported\n", debugstr_w(package) ); return ERROR_NO_SUCH_PACKAGE; } - if (input_id) - { - FIXME( "input identity not supported\n" ); - return ERROR_CALL_NOT_IMPLEMENTED; - } flags = CREDUI_FLAGS_ALWAYS_SHOW_UI | CREDUI_FLAGS_GENERIC_CREDENTIALS; @@ -897,12 +893,24 @@ ULONG SEC_ENTRY SspiPromptForCredentialsW( PCWSTR target, void *info, if (!(sspi_flags & SSPIPFC_NO_CHECKBOX)) flags |= CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX; - find_existing_credential( target, username, len_username, password, len_password ); + if (!id) find_existing_credential( target, username, len_username, password, len_password ); + else + { + if (id->User && id->UserLength > 0 && id->UserLength <= CREDUI_MAX_USERNAME_LENGTH) + { + memcpy( username, id->User, id->UserLength * sizeof(WCHAR) ); + username[id->UserLength] = 0; + } + if (id->Password && id->PasswordLength > 0 && id->PasswordLength <= CREDUI_MAX_PASSWORD_LENGTH) + { + memcpy( password, id->Password, id->PasswordLength * sizeof(WCHAR) ); + password[id->PasswordLength] = 0; + } + } if (!(ret = CredUIPromptForCredentialsW( cred_info, target, NULL, error, username, len_username, password, len_password, save, flags ))) { - SEC_WINNT_AUTH_IDENTITY_W *id; DWORD size = sizeof(*id); WCHAR *ptr; @@ -930,3 +938,37 @@ ULONG SEC_ENTRY SspiPromptForCredentialsW( PCWSTR target, void *info, return ret; } + +/****************************************************************************** + * CredUIPromptForWindowsCredentialsW [CREDUI.@] + */ +DWORD WINAPI CredUIPromptForWindowsCredentialsW( CREDUI_INFOW *info, DWORD error, ULONG *package, + const void *in_buf, ULONG in_buf_size, void **out_buf, + ULONG *out_buf_size, BOOL *save, DWORD flags ) +{ + FIXME( "(%p, %u, %p, %p, %u, %p, %p, %p, %08x) stub\n", info, error, package, in_buf, in_buf_size, + out_buf, out_buf_size, save, flags ); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/****************************************************************************** + * CredPackAuthenticationBufferW [CREDUI.@] + */ +BOOL WINAPI CredPackAuthenticationBufferW( DWORD flags, WCHAR *username, WCHAR *password, BYTE *buf, + DWORD *size ) +{ + FIXME( "(%08x, %s, %p, %p, %p) stub\n", flags, debugstr_w(username), password, buf, size ); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/****************************************************************************** + * CredUnPackAuthenticationBufferW [CREDUI.@] + */ +BOOL WINAPI CredUnPackAuthenticationBufferW( DWORD flags, void *buf, DWORD size, WCHAR *username, + DWORD *len_username, WCHAR *domain, DWORD *len_domain, + WCHAR *password, DWORD *len_password ) +{ + FIXME( "(%08x, %p, %u, %p, %p, %p, %p, %p, %p) stub\n", flags, buf, size, username, len_username, + domain, len_domain, password, len_password ); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 5a57d6f535a..1efcb6c9e90 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -57,7 +57,7 @@ reactos/dll/win32/comcat # Synced to WineStaging-1.9.11 reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.11 reactos/dll/win32/comdlg32 # Synced to WineStaging-1.9.11 reactos/dll/win32/compstui # Synced to WineStaging-1.9.11 -reactos/dll/win32/credui # Synced to WineStaging-1.9.11 +reactos/dll/win32/credui # Synced to WineStaging-1.9.16 reactos/dll/win32/crypt32 # Synced to WineStaging-1.9.11 reactos/dll/win32/cryptdlg # Synced to WineStaging-1.9.11 reactos/dll/win32/cryptdll # Synced to WineStaging-1.9.11