From 317d74d96edb1c92a2331856b15e829f123b19e5 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 26 Nov 2025 11:57:45 +0100 Subject: [PATCH] Ensure corrupt private key still works for initialization --- libs/key-management/src/key.service.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/libs/key-management/src/key.service.ts b/libs/key-management/src/key.service.ts index 6aee9e18240..5c2ce62c419 100644 --- a/libs/key-management/src/key.service.ts +++ b/libs/key-management/src/key.service.ts @@ -2,6 +2,7 @@ import * as bigInt from "big-integer"; import { NEVER, Observable, + catchError, combineLatest, concatMap, distinctUntilChanged, @@ -588,8 +589,17 @@ export class DefaultKeyService implements KeyServiceAbstraction { } // Can successfully derive public key - await SdkLoadService.Ready; - const publicKey = PureCrypto.rsa_extract_public_key(encPrivateKey, key.toEncoded()); + let publicKey: Uint8Array; + try { + await SdkLoadService.Ready; + publicKey = PureCrypto.rsa_extract_public_key(encPrivateKey, key.toEncoded()); + } catch (e) { + this.logService.error( + "[KeyService] Failed to extract public key: " + e, + "encrypted private key size: " + encPrivateKey.length, + ); + return false; + } if (publicKey == null) { // failed to decrypt @@ -768,6 +778,10 @@ export class DefaultKeyService implements KeyServiceAbstraction { ) as UserPublicKey, }; }), + catchError((e: unknown) => { + this.logService.error("[KeyService] Failed to extract public key: " + e); + return of(null); + }), ); }