internal static extern int CredWrite(ref CREDENTIAL Credential, int Flags);
internal Credential(CREDENTIAL source) { RefreshFromCredential(source); }
private unsafe void RefreshFromCredential(CREDENTIAL source) { m_Name = source.TargetName; m_Comment = source.Comment; m_Persist = (PersistType)source.Persist; m_Contents = new byte[source.CredentialBlobSize]; if (source.CredentialBlobSize > 0) { for (int i = 0; i < source.CredentialBlobSize; i++) { m_Contents[i] = source.CredentialBlob[i]; } } m_Exists = true; }
private unsafe void InternalWrite(byte[] contents) { fixed (byte* blobPointer = contents) { CREDENTIAL cred = new CREDENTIAL(); cred.Flags = 0; cred.Type = NativeMethods.CRED_TYPE_GENERIC; cred.TargetName = m_Name; cred.Comment = m_Comment; cred.LastWritten = 0; cred.CredentialBlobSize = contents.Length; cred.CredentialBlob = blobPointer; cred.Persist = (int)m_Persist; cred.AttributeCount = 0; cred.Attributes = IntPtr.Zero; cred.TargetAlias = null; cred.UserName = null; if (NativeMethods.CredWrite(ref cred, 0) == 0) { int err = Marshal.GetLastWin32Error(); throw new CredentialException(ResourceController.GetString("Error_CredentialWrite"), err); } } m_Contents = (byte[])contents.Clone(); m_Exists = true; }
internal static extern int CredWrite(ref CREDENTIAL Credential, int Flags);