mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-03-25 10:03:17 -04:00
Persist passkey GUIDs during export/import (#773)
This commit is contained in:
@@ -7,14 +7,14 @@
|
||||
|
||||
namespace AliasVault.ImportExport.Importers;
|
||||
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using AliasClientDb;
|
||||
using AliasClientDb.Models;
|
||||
using AliasVault.ImportExport.Models;
|
||||
using AliasVault.TotpGenerator;
|
||||
using CsvHelper;
|
||||
using CsvHelper.Configuration;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
/// <summary>
|
||||
/// Generic import logic.
|
||||
@@ -259,9 +259,12 @@ public static class BaseImporter
|
||||
{
|
||||
foreach (var passkey in importedCredential.Passkeys)
|
||||
{
|
||||
// Use the GUID from the import if available, otherwise generate a new one
|
||||
var passkeyId = passkey.Id ?? Guid.NewGuid();
|
||||
|
||||
item.Passkeys.Add(new Passkey
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Id = passkeyId,
|
||||
RpId = passkey.RpId,
|
||||
UserHandle = passkey.UserHandle ?? Array.Empty<byte>(),
|
||||
PublicKey = passkey.PublicKey,
|
||||
|
||||
@@ -13,7 +13,8 @@ namespace AliasVault.ImportExport.Models.Exports;
|
||||
public class AvuxPasskey
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the passkey ID.
|
||||
/// Gets or sets the passkey ID (GUID).
|
||||
/// The WebAuthn credential ID is derived from this GUID at runtime using base64url encoding.
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
|
||||
@@ -12,6 +12,12 @@ namespace AliasVault.ImportExport.Models;
|
||||
/// </summary>
|
||||
public class ImportedPasskey
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the passkey ID (GUID from the original database record).
|
||||
/// This is used to preserve the credential ID during import/export.
|
||||
/// </summary>
|
||||
public Guid? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the relying party ID.
|
||||
/// </summary>
|
||||
|
||||
@@ -247,6 +247,7 @@ public static class VaultImportService
|
||||
{
|
||||
return new ImportedPasskey
|
||||
{
|
||||
Id = avuxPasskey.Id,
|
||||
RpId = avuxPasskey.RpId,
|
||||
UserHandle = !string.IsNullOrEmpty(avuxPasskey.UserHandle)
|
||||
? Convert.FromBase64String(avuxPasskey.UserHandle)
|
||||
|
||||
Reference in New Issue
Block a user