public Credentials(SerializationInfo info, StreamingContext context) { int version = 0; try { version = info.GetInt32("version"); } catch { } if (version == 0) { Host = info.GetString("m_Host"); Port = info.GetInt32("m_Port"); WorkspaceID = info.GetUInt64("m_ID"); WorkspaceName = info.GetString("m_Name"); UserName = info.GetString("m_UserName"); UserSmtp = info.GetString("m_UserSmtp"); Nonce = (byte[])info.GetValue("m_Nonce", (new byte[] { }).GetType()); Type = (Credentials.CredType)Enum.Parse(typeof(CredType), info.GetString("m_type")); Password = info.GetString("m_pwd"); Ticket = (byte[])info.GetValue("m_ticket", (new byte[] { }).GetType()); IsAdmin = info.GetBoolean("m_IsAdmin"); UserID = info.GetUInt32("m_UserId"); } else { Host = info.GetString("Host"); Port = info.GetInt32("Port"); WorkspaceID = info.GetUInt64("ID"); WorkspaceName = info.GetString("Name"); UserName = info.GetString("UserName"); UserSmtp = info.GetString("UserSmtp"); Nonce = (byte[])info.GetValue("Nonce", (new byte[] { }).GetType()); Type = (Credentials.CredType)Enum.Parse(typeof(CredType), info.GetString("Type")); Password = info.GetString("Password"); Ticket = (byte[])info.GetValue("Ticket", (new byte[] { }).GetType()); IsAdmin = info.GetBoolean("IsAdmin"); UserID = info.GetUInt32("UserID"); if (version == 2) IsPublic = info.GetBoolean("IsPublic"); } newCreds.KasID = new KasIdentifier(Host, (UInt16)Port); newCreds.ExternalID = WorkspaceID; newCreds.KwsName = WorkspaceName; newCreds.UserName = UserName; newCreds.UserEmailAddress = UserSmtp; newCreds.AdminFlag = IsAdmin; newCreds.PublicFlag = IsPublic; newCreds.UserID = UserID; newCreds.Ticket = Ticket; newCreds.Pwd = Password; }
// I Hate Warnings so this gets rid of them Credential( CredType type ) { Flags = 0; Type = type; aLastWritten = 0; bLastWritten = 0; CredentialBlobSize = 0; CredentialBlob = IntPtr.Zero; Persist = 0; Username = null; }
static extern bool CredDelete( string targetName, CredType type, int flags );
static extern void CredRead( string targetName, CredType type, int flags, out IntPtr credential );
public static extern bool CredGetSessionTypes(CredType MaximumPersistCount, out IntPtr MaximumPersist);
public static extern bool CredRead(string targetName, CredType type, CredReadFlags flags, out IntPtr pCredential);
/// <summary> /// Pops up dialog asking users which type of credential they expect to provide. The behavior aligns with job submission. /// </summary> internal static CredType PromptForCredentialType(bool console, IntPtr hwndParent, CredType originalType) { string[] dialogTexts = new string[] { SR.CredentialTypeDialog_LabelString, SR.CredentialTypeDialog_PwdCheckBoxString, SR.CredentialTypeDialog_CertCheckBoxString, SR.CredentialTypeDialog_OkButtonString, SR.CredentialTypeDialog_CancelButtonString }; int choice = CredentialType.NoChoice; CredentialType.PromptForCredentialType(console, hwndParent, ref choice, dialogTexts); if (choice == CredentialType.CertChoice) { return(CredType.Certificate); } else { Debug.Assert(originalType == CredType.Either || originalType == CredType.Either_CredUnreusable); if (originalType == CredType.Either) { return(CredType.Password); } else { return(CredType.Password_CredUnreusable); } } }
internal static extern bool CredDelete(string target, CredType type, int reservedFlag);
internal static extern bool CredRead(string target, CredType type, int reservedFlag, out IntPtr credentialPtr);