Microsoft.Alm.Authentication.NativeMethods.CredRead C# (CSharp) Method

CredRead() private method

private CredRead ( string targetName, CredentialType type, uint flags, IntPtr &credential ) : bool
targetName string
type CredentialType
flags uint
credential System.IntPtr
return bool
        internal static extern bool CredRead(string targetName, CredentialType type, uint flags, out IntPtr credential);

Usage Example

Esempio n. 1
0
        protected Token ReadToken(string targetName)
        {
            Token  token   = null;
            IntPtr credPtr = IntPtr.Zero;

            try
            {
                if (NativeMethods.CredRead(targetName, NativeMethods.CredentialType.Generic, 0, out credPtr))
                {
                    NativeMethods.Credential credStruct = (NativeMethods.Credential)Marshal.PtrToStructure(credPtr, typeof(NativeMethods.Credential));
                    if (credStruct.CredentialBlob != null && credStruct.CredentialBlobSize > 0)
                    {
                        int    size  = (int)credStruct.CredentialBlobSize;
                        byte[] bytes = new byte[size];
                        Marshal.Copy(credStruct.CredentialBlob, bytes, 0, size);

                        TokenType type;
                        if (Token.GetTypeFromFriendlyName(credStruct.UserName, out type))
                        {
                            Token.Deserialize(bytes, type, out token);
                        }

                        Git.Trace.WriteLine($"token for '{targetName}' read from store.");
                    }
                }
            }
            finally
            {
                if (credPtr != IntPtr.Zero)
                {
                    NativeMethods.CredFree(credPtr);
                }
            }

            return(token);
        }