Orc.NuGetExplorer.Native.CredUi.CriticalCredentialHandle.GetCredential C# (CSharp) Method

GetCredential() private method

private GetCredential ( ) : Credential
return Credential
            internal Credential GetCredential()
            {
                if (IsInvalid)
                {
                    throw new InvalidOperationException("Invalid CriticalHandle!");
                }

                // Get the Credential from the mem location
                var ncred = (NativeCredential)Marshal.PtrToStructure(handle, typeof(NativeCredential));

                // Create a managed Credential type and fill it with data from the native counterpart.
                var cred = new Credential();
                cred.CredentialBlobSize = ncred.CredentialBlobSize;
                cred.UserName = Marshal.PtrToStringUni(ncred.UserName);
                cred.TargetName = Marshal.PtrToStringUni(ncred.TargetName);
                cred.TargetAlias = Marshal.PtrToStringUni(ncred.TargetAlias);
                cred.Type = ncred.Type;
                cred.Flags = ncred.Flags;
                cred.Persist = (CredPersistance)ncred.Persist;

                byte[] encryptedPassword = new byte[ncred.CredentialBlobSize];
                Marshal.Copy(ncred.CredentialBlob, encryptedPassword, 0, encryptedPassword.Length);
                cred.CredentialBlob = DecryptPassword(encryptedPassword);

                return cred;
            }

Usage Example

Exemplo n.º 1
0
        private static CredUi.SimpleCredentials ReadCredential(string key)
        {
            IntPtr nCredPtr;

            var read      = CredUi.CredRead(key, CredUi.CredTypes.CRED_TYPE_GENERIC, 0, out nCredPtr);
            var lastError = Marshal.GetLastWin32Error();

            if (!read)
            {
                if (lastError == (int)CredUi.CredUIReturnCodes.ERROR_NOT_FOUND)
                {
                    return(null);
                }
                else
                {
                    throw new CredentialException(lastError);
                }
            }

            var credential = new CredUi.SimpleCredentials();

            using (var criticalCredentialHandle = new CredUi.CriticalCredentialHandle(nCredPtr))
            {
                var cred = criticalCredentialHandle.GetCredential();

                credential.UserName = cred.UserName;
                credential.Password = cred.CredentialBlob;
            }

            return(credential);
        }
All Usage Examples Of Orc.NuGetExplorer.Native.CredUi.CriticalCredentialHandle::GetCredential