[PM-4054] Rename Fido2Key to Fido2Credential (#2821)
* PM-4054 Renamed Fido2Key to Fido2Credential on the entire codebase * PM-4054 Renamed file Fido2KeyApi to Fido2CredentialApi
This commit is contained in:
parent
bb2f1f0f5f
commit
f2936c95fa
@ -308,7 +308,7 @@ namespace Bit.App.Pages
|
||||
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
||||
public bool HasTotpValue => IsLogin && !string.IsNullOrEmpty(Cipher?.Login?.Totp);
|
||||
public string SetupTotpText => $"{BitwardenIcons.Camera} {AppResources.SetupTotp}";
|
||||
public bool ShowPasskeyInfo => Cipher?.HasFido2Key == true && !CloneMode;
|
||||
public bool ShowPasskeyInfo => Cipher?.HasFido2Credential == true && !CloneMode;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
@ -370,7 +370,7 @@ namespace Bit.App.Pages
|
||||
if (Cipher.Type == CipherType.Login)
|
||||
{
|
||||
// passkeys can't be cloned
|
||||
Cipher.Login.Fido2Keys = null;
|
||||
Cipher.Login.Fido2Credentials = null;
|
||||
}
|
||||
}
|
||||
if (appOptions?.OtpData != null && Cipher.Type == CipherType.Login)
|
||||
|
@ -199,12 +199,12 @@
|
||||
Text="{u:I18n Passkey}"
|
||||
StyleClass="box-label"
|
||||
Margin="0,10,0,0"
|
||||
IsVisible="{Binding Cipher.Login.MainFido2Key, Converter={StaticResource notNull}}"/>
|
||||
IsVisible="{Binding Cipher.Login.MainFido2Credential, Converter={StaticResource notNull}}"/>
|
||||
<Entry
|
||||
Text="{Binding CreationDate}"
|
||||
IsEnabled="False"
|
||||
StyleClass="box-value,text-muted"
|
||||
IsVisible="{Binding Cipher.Login.MainFido2Key, Converter={StaticResource notNull}}" />
|
||||
IsVisible="{Binding Cipher.Login.MainFido2Credential, Converter={StaticResource notNull}}" />
|
||||
<Grid StyleClass="box-row"
|
||||
IsVisible="{Binding ShowTotp}"
|
||||
AutomationId="ItemRow">
|
||||
|
@ -702,7 +702,7 @@ namespace Bit.App.Pages
|
||||
|
||||
private async Task<bool> CanCloneAsync()
|
||||
{
|
||||
if (!Cipher.HasFido2Key)
|
||||
if (!Cipher.HasFido2Credential)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -69,9 +69,9 @@ namespace Bit.Core
|
||||
public const int MasterPasswordMinimumChars = 12;
|
||||
public const int CipherKeyRandomBytesLength = 64;
|
||||
public const string CipherKeyEncryptionMinServerVersion = "2023.9.1";
|
||||
public const string DefaultFido2KeyType = "public-key";
|
||||
public const string DefaultFido2KeyAlgorithm = "ECDSA";
|
||||
public const string DefaultFido2KeyCurve = "P-256";
|
||||
public const string DefaultFido2CredentialType = "public-key";
|
||||
public const string DefaultFido2CredentialAlgorithm = "ECDSA";
|
||||
public const string DefaultFido2CredentialCurve = "P-256";
|
||||
|
||||
public static readonly string[] AndroidAllClearCipherCacheKeys =
|
||||
{
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
namespace Bit.Core.Models.Api
|
||||
{
|
||||
public class Fido2KeyApi
|
||||
public class Fido2CredentialApi
|
||||
{
|
||||
public Fido2KeyApi()
|
||||
public Fido2CredentialApi()
|
||||
{
|
||||
}
|
||||
|
||||
public Fido2KeyApi(Fido2Key fido2Key)
|
||||
public Fido2CredentialApi(Fido2Credential fido2Key)
|
||||
{
|
||||
CredentialId = fido2Key.CredentialId?.EncryptedString;
|
||||
Discoverable = fido2Key.Discoverable?.EncryptedString;
|
||||
@ -25,9 +25,9 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
public string CredentialId { get; set; }
|
||||
public string Discoverable { get; set; }
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2CredentialType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2CredentialAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2CredentialCurve;
|
||||
public string KeyValue { get; set; }
|
||||
public string RpId { get; set; }
|
||||
public string RpName { get; set; }
|
@ -10,6 +10,6 @@ namespace Bit.Core.Models.Api
|
||||
public string Password { get; set; }
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public string Totp { get; set; }
|
||||
public List<Fido2KeyApi> Fido2Keys { get; set; }
|
||||
public List<Fido2CredentialApi> Fido2Credentials { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace Bit.Core.Models.Data
|
||||
{
|
||||
public class Fido2KeyData : Data
|
||||
public class Fido2CredentialData : Data
|
||||
{
|
||||
public Fido2KeyData() { }
|
||||
public Fido2CredentialData() { }
|
||||
|
||||
public Fido2KeyData(Fido2KeyApi apiData)
|
||||
public Fido2CredentialData(Fido2CredentialApi apiData)
|
||||
{
|
||||
CredentialId = apiData.CredentialId;
|
||||
Discoverable = apiData.Discoverable;
|
||||
@ -23,9 +23,9 @@ namespace Bit.Core.Models.Data
|
||||
|
||||
public string CredentialId { get; set; }
|
||||
public string Discoverable { get; set; }
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2CredentialType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2CredentialAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2CredentialCurve;
|
||||
public string KeyValue { get; set; }
|
||||
public string RpId { get; set; }
|
||||
public string RpName { get; set; }
|
@ -16,7 +16,7 @@ namespace Bit.Core.Models.Data
|
||||
PasswordRevisionDate = data.PasswordRevisionDate;
|
||||
Totp = data.Totp;
|
||||
Uris = data.Uris?.Select(u => new LoginUriData(u)).ToList();
|
||||
Fido2Keys = data.Fido2Keys?.Select(f => new Fido2KeyData(f)).ToList();
|
||||
Fido2Credentials = data.Fido2Credentials?.Select(f => new Fido2CredentialData(f)).ToList();
|
||||
}
|
||||
|
||||
public List<LoginUriData> Uris { get; set; }
|
||||
@ -24,6 +24,6 @@ namespace Bit.Core.Models.Data
|
||||
public string Password { get; set; }
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public string Totp { get; set; }
|
||||
public List<Fido2KeyData> Fido2Keys { get; set; }
|
||||
public List<Fido2CredentialData> Fido2Credentials { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using Bit.Core.Models.View;
|
||||
|
||||
namespace Bit.Core.Models.Domain
|
||||
{
|
||||
public class Fido2Key : Domain
|
||||
public class Fido2Credential : Domain
|
||||
{
|
||||
public static HashSet<string> EncryptableProperties => new HashSet<string>
|
||||
{
|
||||
@ -22,9 +22,9 @@ namespace Bit.Core.Models.Domain
|
||||
nameof(Counter)
|
||||
};
|
||||
|
||||
public Fido2Key() { }
|
||||
public Fido2Credential() { }
|
||||
|
||||
public Fido2Key(Fido2KeyData data, bool alreadyEncrypted = false)
|
||||
public Fido2Credential(Fido2CredentialData data, bool alreadyEncrypted = false)
|
||||
{
|
||||
BuildDomainModel(this, data, EncryptableProperties, alreadyEncrypted);
|
||||
}
|
||||
@ -41,14 +41,14 @@ namespace Bit.Core.Models.Domain
|
||||
public EncString UserName { get; set; }
|
||||
public EncString Counter { get; set; }
|
||||
|
||||
public async Task<Fido2KeyView> DecryptAsync(string orgId, SymmetricCryptoKey key = null)
|
||||
public async Task<Fido2CredentialView> DecryptAsync(string orgId, SymmetricCryptoKey key = null)
|
||||
{
|
||||
return await DecryptObjAsync(new Fido2KeyView(), this, EncryptableProperties, orgId, key);
|
||||
return await DecryptObjAsync(new Fido2CredentialView(), this, EncryptableProperties, orgId, key);
|
||||
}
|
||||
|
||||
public Fido2KeyData ToFido2KeyData()
|
||||
public Fido2CredentialData ToFido2CredentialData()
|
||||
{
|
||||
var data = new Fido2KeyData();
|
||||
var data = new Fido2CredentialData();
|
||||
BuildDataModel(this, data, EncryptableProperties);
|
||||
return data;
|
||||
}
|
@ -15,7 +15,7 @@ namespace Bit.Core.Models.Domain
|
||||
{
|
||||
PasswordRevisionDate = obj.PasswordRevisionDate;
|
||||
Uris = obj.Uris?.Select(u => new LoginUri(u, alreadyEncrypted)).ToList();
|
||||
Fido2Keys = obj.Fido2Keys?.Select(f => new Fido2Key(f, alreadyEncrypted)).ToList();
|
||||
Fido2Credentials = obj.Fido2Credentials?.Select(f => new Fido2Credential(f, alreadyEncrypted)).ToList();
|
||||
BuildDomainModel(this, obj, new HashSet<string>
|
||||
{
|
||||
"Username",
|
||||
@ -29,7 +29,7 @@ namespace Bit.Core.Models.Domain
|
||||
public EncString Password { get; set; }
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public EncString Totp { get; set; }
|
||||
public List<Fido2Key> Fido2Keys { get; set; }
|
||||
public List<Fido2Credential> Fido2Credentials { get; set; }
|
||||
|
||||
public async Task<LoginView> DecryptAsync(string orgId, SymmetricCryptoKey key = null)
|
||||
{
|
||||
@ -47,12 +47,12 @@ namespace Bit.Core.Models.Domain
|
||||
view.Uris.Add(await uri.DecryptAsync(orgId, key));
|
||||
}
|
||||
}
|
||||
if (Fido2Keys != null)
|
||||
if (Fido2Credentials != null)
|
||||
{
|
||||
view.Fido2Keys = new List<Fido2KeyView>();
|
||||
foreach (var fido2Key in Fido2Keys)
|
||||
view.Fido2Credentials = new List<Fido2CredentialView>();
|
||||
foreach (var fido2Credential in Fido2Credentials)
|
||||
{
|
||||
view.Fido2Keys.Add(await fido2Key.DecryptAsync(orgId, key));
|
||||
view.Fido2Credentials.Add(await fido2Credential.DecryptAsync(orgId, key));
|
||||
}
|
||||
}
|
||||
return view;
|
||||
@ -72,9 +72,9 @@ namespace Bit.Core.Models.Domain
|
||||
{
|
||||
l.Uris = Uris.Select(u => u.ToLoginUriData()).ToList();
|
||||
}
|
||||
if (Fido2Keys != null)
|
||||
if (Fido2Credentials != null)
|
||||
{
|
||||
l.Fido2Keys = Fido2Keys.Select(f => f.ToFido2KeyData()).ToList();
|
||||
l.Fido2Credentials = Fido2Credentials.Select(f => f.ToFido2CredentialData()).ToList();
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ namespace Bit.Core.Models.Request
|
||||
Password = cipher.Login.Password?.EncryptedString,
|
||||
PasswordRevisionDate = cipher.Login.PasswordRevisionDate,
|
||||
Totp = cipher.Login.Totp?.EncryptedString,
|
||||
Fido2Keys = cipher.Login.Fido2Keys?.Select(f => new Fido2KeyApi(f)).ToList()
|
||||
Fido2Credentials = cipher.Login.Fido2Credentials?.Select(f => new Fido2CredentialApi(f)).ToList()
|
||||
};
|
||||
break;
|
||||
case CipherType.Card:
|
||||
|
@ -121,6 +121,6 @@ namespace Bit.Core.Models.View
|
||||
|
||||
public bool IsClonable => OrganizationId is null;
|
||||
|
||||
public bool HasFido2Key => Type == CipherType.Login && Login?.HasFido2Keys == true;
|
||||
public bool HasFido2Credential => Type == CipherType.Login && Login?.HasFido2Credentials == true;
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,13 @@ using Bit.Core.Enums;
|
||||
|
||||
namespace Bit.Core.Models.View
|
||||
{
|
||||
public class Fido2KeyView : ItemView, ILaunchableView
|
||||
public class Fido2CredentialView : ItemView, ILaunchableView
|
||||
{
|
||||
public string CredentialId { get; set; }
|
||||
public string Discoverable { get; set; }
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||
public string KeyType { get; set; } = Constants.DefaultFido2CredentialType;
|
||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2CredentialAlgorithm;
|
||||
public string KeyCurve { get; set; } = Constants.DefaultFido2CredentialCurve;
|
||||
public string KeyValue { get; set; }
|
||||
public string RpId { get; set; }
|
||||
public string RpName { get; set; }
|
||||
@ -23,6 +23,6 @@ namespace Bit.Core.Models.View
|
||||
public bool CanLaunch => !string.IsNullOrEmpty(RpId);
|
||||
public string LaunchUri => $"https://{RpId}";
|
||||
|
||||
public bool IsUniqueAgainst(Fido2KeyView fido2View) => fido2View?.RpId != RpId || fido2View?.UserName != UserName;
|
||||
public bool IsUniqueAgainst(Fido2CredentialView fido2View) => fido2View?.RpId != RpId || fido2View?.UserName != UserName;
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ namespace Bit.Core.Models.View
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public string Totp { get; set; }
|
||||
public List<LoginUriView> Uris { get; set; }
|
||||
public List<Fido2KeyView> Fido2Keys { get; set; }
|
||||
public List<Fido2CredentialView> Fido2Credentials { get; set; }
|
||||
|
||||
public string Uri => HasUris ? Uris[0].Uri : null;
|
||||
public string MaskedPassword => Password != null ? "••••••••" : null;
|
||||
@ -28,8 +28,8 @@ namespace Bit.Core.Models.View
|
||||
public bool CanLaunch => HasUris && Uris.Any(u => u.CanLaunch);
|
||||
public string LaunchUri => HasUris ? Uris.FirstOrDefault(u => u.CanLaunch)?.LaunchUri : null;
|
||||
public bool HasUris => (Uris?.Count ?? 0) > 0;
|
||||
public bool HasFido2Keys => Fido2Keys?.Any() == true;
|
||||
public Fido2KeyView MainFido2Key => HasFido2Keys ? Fido2Keys[0] : null;
|
||||
public bool HasFido2Credentials => Fido2Credentials?.Any() == true;
|
||||
public Fido2CredentialView MainFido2Credential => HasFido2Credentials ? Fido2Credentials[0] : null;
|
||||
|
||||
public override List<KeyValuePair<string, LinkedIdType>> LinkedFieldOptions
|
||||
{
|
||||
|
@ -597,7 +597,7 @@ namespace Bit.Core.Services
|
||||
|
||||
private async Task<bool> ValidateCanBeSharedWithOrgAsync(CipherView cipher, string organizationId)
|
||||
{
|
||||
if (!cipher.HasFido2Key)
|
||||
if (!cipher.HasFido2Credential)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -605,7 +605,7 @@ namespace Bit.Core.Services
|
||||
var decCiphers = await GetAllDecryptedAsync();
|
||||
return !decCiphers
|
||||
.Where(c => c.OrganizationId == organizationId)
|
||||
.Any(c => !cipher.Login.MainFido2Key.IsUniqueAgainst(c.Login?.MainFido2Key));
|
||||
.Any(c => !cipher.Login.MainFido2Credential.IsUniqueAgainst(c.Login?.MainFido2Credential));
|
||||
}
|
||||
|
||||
public async Task<Cipher> SaveAttachmentRawWithServerAsync(Cipher cipher, CipherView cipherView, string filename, byte[] data)
|
||||
@ -1176,14 +1176,14 @@ namespace Bit.Core.Services
|
||||
cipher.Login.Uris.Add(loginUri);
|
||||
}
|
||||
}
|
||||
if (model.Login.HasFido2Keys)
|
||||
if (model.Login.HasFido2Credentials)
|
||||
{
|
||||
cipher.Login.Fido2Keys = new List<Fido2Key>();
|
||||
foreach (var fido2Key in model.Login.Fido2Keys)
|
||||
cipher.Login.Fido2Credentials = new List<Fido2Credential>();
|
||||
foreach (var fido2Credential in model.Login.Fido2Credentials)
|
||||
{
|
||||
var fido2KeyDomain = new Fido2Key();
|
||||
await EncryptObjPropertyAsync(fido2Key, fido2KeyDomain, Fido2Key.EncryptableProperties, key);
|
||||
cipher.Login.Fido2Keys.Add(fido2KeyDomain);
|
||||
var fido2CredentialDomain = new Fido2Credential();
|
||||
await EncryptObjPropertyAsync(fido2Credential, fido2CredentialDomain, Fido2Credential.EncryptableProperties, key);
|
||||
cipher.Login.Fido2Credentials.Add(fido2CredentialDomain);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user