From 1411ae357afae605b169d596480dfe8488f872da Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 21:55:57 -0800 Subject: [PATCH] better EncString handling --- .../common/src/models/export/cipher.export.ts | 2 +- .../src/models/export/collection.export.ts | 2 +- .../models/export/fido2-credential.export.ts | 26 ++++++++++--------- libs/common/src/models/export/field.export.ts | 7 ++--- .../models/export/password-history.export.ts | 7 ++--- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/libs/common/src/models/export/cipher.export.ts b/libs/common/src/models/export/cipher.export.ts index 67a1c2a6d3d..1114d99e7bd 100644 --- a/libs/common/src/models/export/cipher.export.ts +++ b/libs/common/src/models/export/cipher.export.ts @@ -96,7 +96,7 @@ export class CipherExport { if (domain.organizationId == null) { domain.organizationId = req.organizationId; } - domain.name = new EncString(req.name ?? ""); + domain.name = new EncString(req.name); domain.notes = conditionalEncString(req.notes); domain.favorite = req.favorite; domain.reprompt = req.reprompt ?? CipherRepromptType.None; diff --git a/libs/common/src/models/export/collection.export.ts b/libs/common/src/models/export/collection.export.ts index f21555c6b7a..6e7ea51a2f4 100644 --- a/libs/common/src/models/export/collection.export.ts +++ b/libs/common/src/models/export/collection.export.ts @@ -33,7 +33,7 @@ export class CollectionExport { } static toDomain(req: CollectionExport, domain: CollectionDomain) { - domain.name = new EncString(req.name ?? ""); + domain.name = new EncString(req.name); domain.externalId = req.externalId; if (domain.organizationId == null) { domain.organizationId = req.organizationId; diff --git a/libs/common/src/models/export/fido2-credential.export.ts b/libs/common/src/models/export/fido2-credential.export.ts index 402fa025599..38cf0eb36bc 100644 --- a/libs/common/src/models/export/fido2-credential.export.ts +++ b/libs/common/src/models/export/fido2-credential.export.ts @@ -1,3 +1,5 @@ +import { conditionalEncString } from "@bitwarden/common/vault/utils/domain-utils"; + import { EncString } from "../../key-management/crypto/models/enc-string"; import { Fido2Credential } from "../../vault/models/domain/fido2-credential"; import { Fido2CredentialView } from "../../vault/models/view/fido2-credential.view"; @@ -60,18 +62,18 @@ export class Fido2CredentialExport { * @returns Fido2Credential - The populated domain, or a new instance if none was provided. */ static toDomain(req: Fido2CredentialExport, domain = new Fido2Credential()) { - domain.credentialId = new EncString(req.credentialId ?? ""); - domain.keyType = new EncString(req.keyType ?? ""); - domain.keyAlgorithm = new EncString(req.keyAlgorithm ?? ""); - domain.keyCurve = new EncString(req.keyCurve ?? ""); - domain.keyValue = new EncString(req.keyValue ?? ""); - domain.rpId = new EncString(req.rpId ?? ""); - domain.userHandle = new EncString(req.userHandle ?? ""); - domain.userName = new EncString(req.userName ?? ""); - domain.counter = new EncString(req.counter ?? ""); - domain.rpName = new EncString(req.rpName ?? ""); - domain.userDisplayName = new EncString(req.userDisplayName ?? ""); - domain.discoverable = new EncString(req.discoverable ?? ""); + domain.credentialId = new EncString(req.credentialId); + domain.keyType = new EncString(req.keyType); + domain.keyAlgorithm = new EncString(req.keyAlgorithm); + domain.keyCurve = new EncString(req.keyCurve); + domain.keyValue = new EncString(req.keyValue); + domain.rpId = new EncString(req.rpId); + domain.userHandle = conditionalEncString(req.userHandle); + domain.userName = conditionalEncString(req.userName); + domain.counter = new EncString(req.counter); + domain.rpName = conditionalEncString(req.rpName); + domain.userDisplayName = conditionalEncString(req.userDisplayName); + domain.discoverable = new EncString(req.discoverable); domain.creationDate = req.creationDate; return domain; } diff --git a/libs/common/src/models/export/field.export.ts b/libs/common/src/models/export/field.export.ts index 182080ac31b..92d199668f8 100644 --- a/libs/common/src/models/export/field.export.ts +++ b/libs/common/src/models/export/field.export.ts @@ -1,4 +1,5 @@ -import { EncString } from "../../key-management/crypto/models/enc-string"; +import { conditionalEncString } from "@bitwarden/common/vault/utils/domain-utils"; + import { FieldType, LinkedIdType } from "../../vault/enums"; import { Field as FieldDomain } from "../../vault/models/domain/field"; import { FieldView } from "../../vault/models/view/field.view"; @@ -24,8 +25,8 @@ export class FieldExport { static toDomain(req: FieldExport, domain = new FieldDomain()) { domain.type = req.type; - domain.value = new EncString(req.value ?? ""); - domain.name = new EncString(req.name ?? ""); + domain.value = conditionalEncString(req.value); + domain.name = conditionalEncString(req.name); domain.linkedId = req.linkedId; return domain; } diff --git a/libs/common/src/models/export/password-history.export.ts b/libs/common/src/models/export/password-history.export.ts index c1a0d25499b..2deaf7a9c66 100644 --- a/libs/common/src/models/export/password-history.export.ts +++ b/libs/common/src/models/export/password-history.export.ts @@ -14,21 +14,22 @@ export class PasswordHistoryExport { static toView(req: PasswordHistoryExport, view = new PasswordHistoryView()) { view.password = req.password; - view.lastUsedDate = req.lastUsedDate ? new Date(req.lastUsedDate) : new Date(); + view.lastUsedDate = req.lastUsedDate ?? new Date(); return view; } static toDomain(req: PasswordHistoryExport, domain = new Password()) { - domain.password = new EncString(req.password ?? ""); + domain.password = new EncString(req.password); domain.lastUsedDate = req.lastUsedDate ?? new Date(); return domain; } password: string = ""; - lastUsedDate: Date = new Date(); + lastUsedDate: Date; constructor(o?: PasswordHistoryView | Password) { if (o == null) { + this.lastUsedDate = new Date(); return; }