[CREDUI] Sync with Wine Staging 1.9.16. CORE-11866
authorAmine Khaldi <amine.khaldi@reactos.org>
Thu, 18 Aug 2016 10:00:07 +0000 (10:00 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Thu, 18 Aug 2016 10:00:07 +0000 (10:00 +0000)
svn path=/trunk/; revision=72275

reactos/dll/win32/credui/credui.spec
reactos/dll/win32/credui/credui_main.c
reactos/media/doc/README.WINE

index c9fc162..ca8ff91 100644 (file)
@@ -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
index 00ab84f..0a34761 100644 (file)
@@ -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;
+}
index 5a57d6f..1efcb6c 100644 (file)
@@ -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