public void Put(string key, byte[] buffer) { using (var keychainItem = KeyChainItem.FindGenericPassword(key)) { var status = keychainItem.ItemRef == IntPtr.Zero ? Security.SecKeychainAddGenericPassword( IntPtr.Zero, (uint)key.Length, key, (uint)RuntimeEnvironmentHelper.AccountName.Length, RuntimeEnvironmentHelper.AccountName, (uint)buffer.Length, buffer, ref keychainItem.ItemRef) : Security.SecKeychainItemModifyAttributesAndData( keychainItem.ItemRef, IntPtr.Zero, (uint)buffer.Length, buffer); if (status != SecStatusCode.Success) { throw new SecurityException(status.ToString()); } } }
public bool Exists(string key) { using (var keychainItem = KeyChainItem.FindGenericPassword(key)) { return(keychainItem.ItemRef != IntPtr.Zero); } }
public byte[] Get(string key) { using (var keychainItem = KeyChainItem.FindGenericPassword(key)) { if (keychainItem.ItemRef == IntPtr.Zero) { throw new KeyNotFoundException(); } var buffer = new byte[keychainItem.PasswordLength]; Marshal.Copy(keychainItem.PasswordData, buffer, 0, buffer.Length); return(buffer); } }
public void Delete(string key) { using (var keychainItem = KeyChainItem.FindGenericPassword(key)) { if (keychainItem.ItemRef == IntPtr.Zero) { throw new KeyNotFoundException(); } var status = Security.SecKeychainItemDelete(keychainItem.ItemRef); if (status != SecStatusCode.Success) { throw new SecurityException(status.ToString()); } } }