private SecStatusCode Save(IiOSKey key, string payload) { var recordToSave = new SecRecord(SecKind.GenericPassword) { Account = key.iOSAccount, Service = key.iOSService, Generic = key.iOSGeneric, CreatorType = key.iOSType, ValueData = NSData.FromString(payload, NSStringEncoding.UTF8), AccessGroup = _keychainGroup, Accessible = _defaultAccessiblityPolicy, Synchronizable = _defaultSyncSetting, }; var secStatusCode = Update(recordToSave); if (secStatusCode == SecStatusCode.ItemNotFound) { secStatusCode = SecKeyChain.Add(recordToSave); } if (secStatusCode == SecStatusCode.MissingEntitlement) { throw new MsalClientException( MsalError.MissingEntitlements, string.Format( CultureInfo.InvariantCulture, MsalErrorMessage.MissingEntitlements, recordToSave.AccessGroup)); } return(secStatusCode); }
private SecStatusCode Remove(IiOSKey key) { var record = new SecRecord(SecKind.GenericPassword) { Account = key.iOSAccount, Service = key.iOSService, CreatorType = key.iOSType, AccessGroup = _keychainGroup }; return(SecKeyChain.Remove(record)); }
private string GetPayload(IiOSKey key) { var queryRecord = new SecRecord(SecKind.GenericPassword) { Account = key.iOSAccount, Service = key.iOSService, CreatorType = key.iOSType, AccessGroup = _keychainGroup }; var match = SecKeyChain.QueryAsRecord(queryRecord, out SecStatusCode resultCode); return((resultCode == SecStatusCode.Success) ? match.ValueData.ToString(NSStringEncoding.UTF8) : string.Empty); }
public void SaveAccessToken(MsalAccessTokenCacheItem item) { IiOSKey key = item.GetKey(); Save(key, item.ToJsonString()); }