summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/backup
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-10-15 16:03:48 +0200
committerFlorian Dold <florian@dold.me>2022-10-15 16:03:48 +0200
commita41d1ee53e1dc6af0b54f085053278e039cda8dc (patch)
tree5b6200a0cfa067c0d27743b9c6c94ceaa2efcd10 /packages/taler-wallet-core/src/operations/backup
parentbd88dcebbcf90414c790a86ee13740eaf20e3334 (diff)
downloadwallet-core-a41d1ee53e1dc6af0b54f085053278e039cda8dc.tar.gz
wallet-core-a41d1ee53e1dc6af0b54f085053278e039cda8dc.tar.bz2
wallet-core-a41d1ee53e1dc6af0b54f085053278e039cda8dc.zip
wallet-core: put signing keys in separate object store
Diffstat (limited to 'packages/taler-wallet-core/src/operations/backup')
-rw-r--r--packages/taler-wallet-core/src/operations/backup/export.ts23
-rw-r--r--packages/taler-wallet-core/src/operations/backup/import.ts30
2 files changed, 32 insertions, 21 deletions
diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts
index 1472b1b90..b0f1d6ce1 100644
--- a/packages/taler-wallet-core/src/operations/backup/export.ts
+++ b/packages/taler-wallet-core/src/operations/backup/export.ts
@@ -35,6 +35,7 @@ import {
BackupDenomination,
BackupExchange,
BackupExchangeDetails,
+ BackupExchangeSignKey,
BackupExchangeWireFee,
BackupOperationStatus,
BackupPayInfo,
@@ -74,6 +75,7 @@ import {
} from "../../db.js";
import { InternalWalletState } from "../../internal-wallet-state.js";
import { assertUnreachable } from "../../util/assertUnreachable.js";
+import { checkDbInvariant } from "../../util/invariants.js";
import { getWalletBackupState, provideBackupState } from "./state.js";
const logger = new Logger("backup/export.ts");
@@ -87,6 +89,7 @@ export async function exportBackup(
x.config,
x.exchanges,
x.exchangeDetails,
+ x.exchangeSignkeys,
x.coins,
x.contractTerms,
x.denominations,
@@ -324,6 +327,18 @@ export async function exportBackup(
});
}
});
+ checkDbInvariant(ex.rowId != null);
+ const exchangeSk =
+ await tx.exchangeSignKeys.indexes.byExchangeDetailsRowId.getAll(
+ ex.rowId,
+ );
+ let signingKeys: BackupExchangeSignKey[] = exchangeSk.map((x) => ({
+ key: x.signkeyPub,
+ master_sig: x.masterSig,
+ stamp_end: x.stampEnd,
+ stamp_expire: x.stampExpire,
+ stamp_start: x.stampStart,
+ }));
backupExchangeDetails.push({
base_url: ex.exchangeBaseUrl,
@@ -341,13 +356,7 @@ export async function exportBackup(
currency: ex.currency,
protocol_version: ex.protocolVersionRange,
wire_fees: wireFees,
- signing_keys: ex.signingKeys.map((x) => ({
- key: x.key,
- master_sig: x.master_sig,
- stamp_end: x.stamp_end,
- stamp_expire: x.stamp_expire,
- stamp_start: x.stamp_start,
- })),
+ signing_keys: signingKeys,
global_fees: ex.globalFees.map((x) => ({
accountFee: Amounts.stringify(x.accountFee),
historyFee: Amounts.stringify(x.historyFee),
diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts
index 9c5eea9af..f08d152a5 100644
--- a/packages/taler-wallet-core/src/operations/backup/import.ts
+++ b/packages/taler-wallet-core/src/operations/backup/import.ts
@@ -62,7 +62,12 @@ import { InternalWalletState } from "../../internal-wallet-state.js";
import { assertUnreachable } from "../../util/assertUnreachable.js";
import { checkLogicInvariant } from "../../util/invariants.js";
import { GetReadOnlyAccess, GetReadWriteAccess } from "../../util/query.js";
-import { makeCoinAvailable, makeTombstoneId, makeTransactionId, TombstoneTag } from "../common.js";
+import {
+ makeCoinAvailable,
+ makeTombstoneId,
+ makeTransactionId,
+ TombstoneTag,
+} from "../common.js";
import { getExchangeDetails } from "../exchanges.js";
import { extractContractData } from "../pay-merchant.js";
import { provideBackupState } from "./state.js";
@@ -360,11 +365,12 @@ export async function importBackup(
}
for (const backupExchangeDetails of backupBlob.exchange_details) {
- const existingExchangeDetails = await tx.exchangeDetails.get([
- backupExchangeDetails.base_url,
- backupExchangeDetails.currency,
- backupExchangeDetails.master_public_key,
- ]);
+ const existingExchangeDetails =
+ await tx.exchangeDetails.indexes.byPointer.get([
+ backupExchangeDetails.base_url,
+ backupExchangeDetails.currency,
+ backupExchangeDetails.master_public_key,
+ ]);
if (!existingExchangeDetails) {
const wireInfo: WireInfo = {
@@ -422,13 +428,6 @@ export async function importBackup(
purseTimeout: x.purseTimeout,
startDate: x.startDate,
})),
- signingKeys: backupExchangeDetails.signing_keys.map((x) => ({
- key: x.key,
- master_sig: x.master_sig,
- stamp_end: x.stamp_end,
- stamp_expire: x.stamp_expire,
- stamp_start: x.stamp_start,
- })),
});
}
@@ -789,7 +788,10 @@ export async function importBackup(
}
for (const backupTip of backupBlob.tips) {
- const ts = makeTombstoneId(TombstoneTag.DeleteTip, backupTip.wallet_tip_id);
+ const ts = makeTombstoneId(
+ TombstoneTag.DeleteTip,
+ backupTip.wallet_tip_id,
+ );
if (tombstoneSet.has(ts)) {
continue;
}