public bool Save(byte[] passwordBytes) { CheckNotDisposed(); _unmanagedCodePermission.Demand(); ValidatePasswordLength(passwordBytes); var blob = Marshal.AllocCoTaskMem(passwordBytes.Length); Marshal.Copy(passwordBytes, 0, blob, passwordBytes.Length); var credential = new NativeMethods.CREDENTIAL { TargetName = Target, UserName = Username, CredentialBlob = blob, CredentialBlobSize = passwordBytes.Length, Comment = Description, Type = (int)Type, Persist = (int)PersistenceType }; bool result = NativeMethods.CredWrite(ref credential, 0); Marshal.FreeCoTaskMem(blob); if (!result) { return false; } LastWriteTimeUtc = DateTime.UtcNow; return true; }
public bool Save() { CheckNotDisposed(); _unmanagedCodePermission.Demand(); byte[] passwordBytes = Encoding.Unicode.GetBytes(Password); ValidatePasswordLength(passwordBytes); var credential = new NativeMethods.CREDENTIAL { TargetName = Target, UserName = Username, CredentialBlob = Marshal.StringToCoTaskMemUni(Password), CredentialBlobSize = passwordBytes.Length, Comment = Description, Type = (int)Type, Persist = (int)PersistenceType }; bool result = NativeMethods.CredWrite(ref credential, 0); if (!result) { return false; } LastWriteTimeUtc = DateTime.UtcNow; return true; }