Funzione CredUnPackAuthenticationBufferA (wincred.h)
La funzione CredUnPackAuthenticationBuffer
Sintassi
CREDUIAPI BOOL CredUnPackAuthenticationBufferA(
[in] DWORD dwFlags,
[in] PVOID pAuthBuffer,
[in] DWORD cbAuthBuffer,
[out] LPSTR pszUserName,
[in, out] DWORD *pcchlMaxUserName,
[out] LPSTR pszDomainName,
[in, out] DWORD *pcchMaxDomainName,
[out] LPSTR pszPassword,
[in, out] DWORD *pcchMaxPassword
);
Parametri
[in] dwFlags
L'impostazione del valore di questo parametro su CRED_PACK_PROTECTED_CREDENTIALS specifica che la funzione tenta di decrittografare le credenziali nel buffer di autenticazione. Se la credenziale non può essere decrittografata, la funzione restituisce FALSEe una chiamata alla funzione GetLastError restituirà il valore ERROR_NOT_CAPABLE.
La modalità di decrittografia dipende dal formato del buffer di autenticazione.
Se il buffer di autenticazione è una struttura di SEC_WINNT_AUTH_IDENTITY_EX2, la funzione può decrittografare il buffer se è crittografato usando SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.
Se il buffer di autenticazione è una delle strutture di KERB_*_LOGON di marshalling, la funzione decrittografa la password prima di restituirla nel buffer pszPassword.
[in] pAuthBuffer
Puntatore al buffer di autenticazione da convertire.
Questo buffer è in genere l'output della funzione CredUIPromptForWindowsCredentials o CredPackAuthenticationBuffer. Deve essere uno dei tipi seguenti:
- Struttura SEC_WINNT_AUTH_IDENTITY_EX2 per le credenziali di identità. La funzione non accetta altre strutture SEC_WINNT_AUTH_IDENTITY.
- Struttura KERB_INTERACTIVE_LOGON o KERB_INTERACTIVE_UNLOCK_LOGON per le credenziali della password.
- Struttura KERB_CERTIFICATE_LOGON o KERB_CERTIFICATE_UNLOCK_LOGON per le credenziali del certificato della smart card.
- GENERIC_CRED per le credenziali generice.
[in] cbAuthBuffer
Dimensioni, in byte, del buffer
[out] pszUserName
Puntatore a una stringa con terminazione Null che riceve il nome utente.
Questa stringa può essere una credenziale con marshalling. Vedere la sezione Osservazioni.
[in, out] pcchlMaxUserName
Puntatore a un valore DWORD
[out] pszDomainName
Puntatore a una stringa con terminazione Null che riceve il nome del dominio dell'utente.
[in, out] pcchMaxDomainName
Puntatore a un valore DWORD che specifica le dimensioni, in caratteri, del buffer pszDomainName. Nell'output, se il buffer non è di dimensioni sufficienti, specifica le dimensioni necessarie, in caratteri, del buffer pszDomainName
[out] pszPassword
Puntatore a una stringa con terminazione Null che riceve la password.
[in, out] pcchMaxPassword
Puntatore a un valore
Questa stringa può essere una credenziale con marshalling. Vedere la sezione Osservazioni.
Valore restituito
TRUE se la funzione ha esito positivo; in caso contrario, FALSE.
Per informazioni estese sull'errore, chiamare la funzione GetLastError
Codice/valore restituito | Descrizione |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS è stato passato come valore del parametro dwFlags, ma questa funzione non può decrittografare le credenziali perché il contesto di sicurezza usato per proteggere la password è diverso dal contesto di sicurezza del chiamante. |
|
Uno dei buffer di output, pszUserName, pszDomainNameo pszPassword, era di dimensioni insufficienti. |
|
Il buffer di autenticazione non è di un tipo supportato. |
Osservazioni
A partire da Windows 8 e Windows Server 2012, il buffer di autenticazione può essere una struttura SEC_WINNT_AUTH_IDENTITY_EX2, che può essere crittografata facoltativamente usando la funzione SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Questo formato di credenziali viene restituito da un provider di credenziali di un provider di identità usando la funzione CredUIPromptForWindowsCredentials o SspiPromptForCredentials. Questa struttura può essere costruita anche usando la funzione credPackAuthenticationBuffer
Nota
L'intestazione wincred.h definisce CredUnPackAuthenticationBuffer come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista [solo app desktop] |
server minimo supportato | Windows Server 2008 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
wincred.h |
libreria |
Credui.lib |
dll | Credui.dll |