summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/backup
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/backup')
-rw-r--r--packages/taler-wallet-core/src/operations/backup/export.ts54
-rw-r--r--packages/taler-wallet-core/src/operations/backup/import.ts39
-rw-r--r--packages/taler-wallet-core/src/operations/backup/index.ts18
3 files changed, 92 insertions, 19 deletions
diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts
index c6e24289f..07c7b9ece 100644
--- a/packages/taler-wallet-core/src/operations/backup/export.ts
+++ b/packages/taler-wallet-core/src/operations/backup/export.ts
@@ -14,15 +14,6 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { hash } from "../../crypto/primitives/nacl-fast";
-import { WalletBackupContentV1, BackupExchange, BackupCoin, BackupDenomination, BackupReserve, BackupPurchase, BackupProposal, BackupRefreshGroup, BackupBackupProvider, BackupTip, BackupRecoupGroup, BackupWithdrawalGroup, BackupBackupProviderTerms, BackupCoinSource, BackupCoinSourceType, BackupExchangeWireFee, BackupRefundItem, BackupRefundState, BackupProposalStatus, BackupRefreshOldCoin, BackupRefreshSession } from "@gnu-taler/taler-util";
-import { canonicalizeBaseUrl, canonicalJson } from "../../util/helpers";
-import { InternalWalletState } from "../state";
-import { provideBackupState, getWalletBackupState, WALLET_BACKUP_STATE_KEY } from "./state";
-import { Amounts, getTimestampNow } from "@gnu-taler/taler-util";
-import { Stores, CoinSourceType, CoinStatus, RefundState, AbortStatus, ProposalStatus } from "../../db.js";
-import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js";
-
/**
* Implementation of wallet backups (export/import/upload) and sync
* server management.
@@ -30,6 +21,51 @@ import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js";
* @author Florian Dold <dold@taler.net>
*/
+/**
+ * Imports.
+ */
+import { hash } from "../../crypto/primitives/nacl-fast";
+import {
+ WalletBackupContentV1,
+ BackupExchange,
+ BackupCoin,
+ BackupDenomination,
+ BackupReserve,
+ BackupPurchase,
+ BackupProposal,
+ BackupRefreshGroup,
+ BackupBackupProvider,
+ BackupTip,
+ BackupRecoupGroup,
+ BackupWithdrawalGroup,
+ BackupBackupProviderTerms,
+ BackupCoinSource,
+ BackupCoinSourceType,
+ BackupExchangeWireFee,
+ BackupRefundItem,
+ BackupRefundState,
+ BackupProposalStatus,
+ BackupRefreshOldCoin,
+ BackupRefreshSession,
+} from "@gnu-taler/taler-util";
+import { InternalWalletState } from "../state";
+import {
+ provideBackupState,
+ getWalletBackupState,
+ WALLET_BACKUP_STATE_KEY,
+} from "./state";
+import { Amounts, getTimestampNow } from "@gnu-taler/taler-util";
+import {
+ Stores,
+ CoinSourceType,
+ CoinStatus,
+ RefundState,
+ AbortStatus,
+ ProposalStatus,
+} from "../../db.js";
+import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js";
+import { canonicalizeBaseUrl, canonicalJson } from "@gnu-taler/taler-util";
+
export async function exportBackup(
ws: InternalWalletState,
): Promise<WalletBackupContentV1> {
diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts
index 05b6da084..e0ae379ab 100644
--- a/packages/taler-wallet-core/src/operations/backup/import.ts
+++ b/packages/taler-wallet-core/src/operations/backup/import.ts
@@ -14,11 +14,42 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { BackupPurchase, AmountJson, Amounts, BackupDenomSel, WalletBackupContentV1, getTimestampNow, BackupCoinSourceType, BackupProposalStatus, codecForContractTerms, BackupRefundState, RefreshReason, BackupRefreshReason } from "@gnu-taler/taler-util";
-import { Stores, WalletContractData, DenomSelectionState, ExchangeWireInfo, ExchangeUpdateStatus, DenominationStatus, CoinSource, CoinSourceType, CoinStatus, ReserveBankInfo, ReserveRecordStatus, ProposalDownload, ProposalStatus, WalletRefundItem, RefundState, AbortStatus, RefreshSessionRecord } from "../../db.js";
+import {
+ BackupPurchase,
+ AmountJson,
+ Amounts,
+ BackupDenomSel,
+ WalletBackupContentV1,
+ getTimestampNow,
+ BackupCoinSourceType,
+ BackupProposalStatus,
+ codecForContractTerms,
+ BackupRefundState,
+ RefreshReason,
+ BackupRefreshReason,
+} from "@gnu-taler/taler-util";
+import {
+ Stores,
+ WalletContractData,
+ DenomSelectionState,
+ ExchangeWireInfo,
+ ExchangeUpdateStatus,
+ DenominationStatus,
+ CoinSource,
+ CoinSourceType,
+ CoinStatus,
+ ReserveBankInfo,
+ ReserveRecordStatus,
+ ProposalDownload,
+ ProposalStatus,
+ WalletRefundItem,
+ RefundState,
+ AbortStatus,
+ RefreshSessionRecord,
+} from "../../db.js";
import { TransactionHandle } from "../../index.js";
import { PayCoinSelection } from "../../util/coinSelection";
-import { j2s } from "../../util/helpers";
+import { j2s } from "@gnu-taler/taler-util";
import { checkDbInvariant, checkLogicInvariant } from "../../util/invariants";
import { Logger } from "../../util/logging";
import { initRetryInfo } from "../../util/retries";
@@ -271,6 +302,8 @@ export async function importBackup(
denomPubHash,
]);
if (!existingDenom) {
+ logger.info(`importing backup denomination: ${j2s(backupDenomination)}`);
+
await tx.put(Stores.denominations, {
denomPub: backupDenomination.denom_pub,
denomPubHash: denomPubHash,
diff --git a/packages/taler-wallet-core/src/operations/backup/index.ts b/packages/taler-wallet-core/src/operations/backup/index.ts
index 77a3219a5..49129d7de 100644
--- a/packages/taler-wallet-core/src/operations/backup/index.ts
+++ b/packages/taler-wallet-core/src/operations/backup/index.ts
@@ -25,13 +25,14 @@
* Imports.
*/
import { InternalWalletState } from "../state";
-import { AmountString, BackupRecovery, codecForAmountString, WalletBackupContentV1 } from "@gnu-taler/taler-util";
-import { TransactionHandle } from "../../util/query";
import {
- BackupProviderRecord,
- ConfigRecord,
- Stores,
-} from "../../db.js";
+ AmountString,
+ BackupRecovery,
+ codecForAmountString,
+ WalletBackupContentV1,
+} from "@gnu-taler/taler-util";
+import { TransactionHandle } from "../../util/query";
+import { BackupProviderRecord, ConfigRecord, Stores } from "../../db.js";
import { checkDbInvariant, checkLogicInvariant } from "../../util/invariants";
import {
bytesToString,
@@ -43,7 +44,7 @@ import {
rsaBlind,
stringToBytes,
} from "../../crypto/talerCrypto";
-import { canonicalizeBaseUrl, canonicalJson, j2s } from "../../util/helpers";
+import { canonicalizeBaseUrl, canonicalJson, j2s } from "@gnu-taler/taler-util";
import {
durationAdd,
durationFromSpec,
@@ -408,6 +409,9 @@ export async function runBackupCycle(ws: InternalWalletState): Promise<void> {
const providers = await ws.db.iter(Stores.backupProviders).toArray();
logger.trace("got backup providers", providers);
const backupJson = await exportBackup(ws);
+
+ logger.trace(`running backup cycle with backup JSON: ${j2s(backupJson)}`);
+
const backupConfig = await provideBackupState(ws);
const encBackup = await encryptBackup(backupConfig, backupJson);