mirror of
https://github.com/bitwarden/server
synced 2025-12-19 01:33:20 +00:00
[PM-1222] Passkeys in the Bitwarden vault (#2679)
* [EC-598] feat: add support for saving fido2 keys * [EC-598] feat: add additional data * [EC-598] feat: add counter, nonDiscoverableId; remove origin * [EC-598] fix: previous incomplete commit * [EC-598] fix: previous incomplete commit.. again * [EC-598] fix: failed merge * [EC-598] fix: move files around to match new structure * [EC-598] feat: add implementation for non-discoverable credentials * [EC-598] chore: remove some changes introduced by vs * [EC-598] fix: linting issues * [PM-1500] Add feature flag to enable pass keys (#2916) * Added feature flag to enable pass keys * Renamed enable pass keys to fido2 vault credentials * only sync fido2key ciphers on clients >=2023.9.0 (#3244) * Renamed fido2key property username to userDisplayName (#3172) * [PM-1859] Renamed NonDiscoverableId to credentialId (#3198) * PM-1859 Refactor to credentialId * PM-1859 Removed unnecessary import --------- Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com> * [PM-3807] Store all passkeys as login cipher type (#3261) * [PM-3807] feat: add discoverable property to fido2key * [PM-3807] feat: remove standalone Fido2Key * [PM-3807] chore: clean up unusued constant * [PM-3807] fix: remove standadlone Fido2Key property that I missed * [PM-3807] Store passkeys in array (#3268) * [PM-3807] feat: store passkeys in array * [PM-3807] amazing adventures with the c# linter * [PM-3980] Added creationDate property to the Fido2Key object (#3279) * Added creationDate property to the Fido2Key object * Fixed lint issues * fixed comments * made createionDate required * [PM-3808] [Storage v2] Add old client/new server backward compatibility (#3262) * [PM-3807] feat: add discoverable property to fido2key * [PM-3807] feat: remove standalone Fido2Key * [PM-3807] chore: clean up unusued constant * [PM-3808] feat: add fido2 compatibility check before saving ciphers * Resolved merge conflicts. * Setting minimum version for QA. --------- Co-authored-by: Todd Martin <tmartin@bitwarden.com> * [PM-4054] Rename Fido2Key to Fido2Credential (#3306) * Add server version compatibility check for Fido2Credentials on sharing with org (#3328) * Added compatibility checks. * Refactored into separate methods for easier removal. * Added check on ShareMany * Updated method order to be consistent. * Linting * Updated minimum server version for release, as well as defaulting the feature on for self-hosted. * Added trailing space. * Removed extra assignment --------- Co-authored-by: gbubemismith <gsmithwalter@gmail.com> Co-authored-by: SmithThe4th <gsmith@bitwarden.com> Co-authored-by: Todd Martin <tmartin@bitwarden.com> Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com> Co-authored-by: Carlos Gonçalves <carlosmaccam@gmail.com> Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
This commit is contained in:
89
src/Api/Vault/Models/CipherFido2CredentialModel.cs
Normal file
89
src/Api/Vault/Models/CipherFido2CredentialModel.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Bit.Core.Utilities;
|
||||
using Bit.Core.Vault.Models.Data;
|
||||
|
||||
namespace Bit.Api.Vault.Models;
|
||||
|
||||
public class CipherFido2CredentialModel
|
||||
{
|
||||
public CipherFido2CredentialModel() { }
|
||||
|
||||
public CipherFido2CredentialModel(CipherLoginFido2CredentialData data)
|
||||
{
|
||||
CredentialId = data.CredentialId;
|
||||
KeyType = data.KeyType;
|
||||
KeyAlgorithm = data.KeyAlgorithm;
|
||||
KeyCurve = data.KeyCurve;
|
||||
KeyValue = data.KeyValue;
|
||||
RpId = data.RpId;
|
||||
RpName = data.RpName;
|
||||
UserHandle = data.UserHandle;
|
||||
UserDisplayName = data.UserDisplayName;
|
||||
Counter = data.Counter;
|
||||
Discoverable = data.Discoverable;
|
||||
CreationDate = data.CreationDate;
|
||||
}
|
||||
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string CredentialId { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string KeyType { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string KeyAlgorithm { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string KeyCurve { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string KeyValue { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string RpId { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string RpName { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string UserHandle { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string UserDisplayName { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string Counter { get; set; }
|
||||
[EncryptedString]
|
||||
[EncryptedStringLength(1000)]
|
||||
public string Discoverable { get; set; }
|
||||
[Required]
|
||||
public DateTime CreationDate { get; set; }
|
||||
|
||||
public CipherLoginFido2CredentialData ToCipherLoginFido2CredentialData()
|
||||
{
|
||||
return new CipherLoginFido2CredentialData
|
||||
{
|
||||
CredentialId = CredentialId,
|
||||
KeyType = KeyType,
|
||||
KeyAlgorithm = KeyAlgorithm,
|
||||
KeyCurve = KeyCurve,
|
||||
KeyValue = KeyValue,
|
||||
RpId = RpId,
|
||||
RpName = RpName,
|
||||
UserHandle = UserHandle,
|
||||
UserDisplayName = UserDisplayName,
|
||||
Counter = Counter,
|
||||
Discoverable = Discoverable,
|
||||
CreationDate = CreationDate
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
static class CipherFido2CredentialModelExtensions
|
||||
{
|
||||
public static CipherLoginFido2CredentialData[] ToCipherLoginFido2CredentialData(this CipherFido2CredentialModel[] models)
|
||||
{
|
||||
return models.Select(m => m.ToCipherLoginFido2CredentialData()).ToArray();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user