diff --git a/apps/chrome-extension/src/components/WalletTab.tsx b/apps/chrome-extension/src/components/WalletTab.tsx index 36f66736..c1b882ad 100644 --- a/apps/chrome-extension/src/components/WalletTab.tsx +++ b/apps/chrome-extension/src/components/WalletTab.tsx @@ -7,6 +7,7 @@ import { useWalletContext } from "../contexts/WalletProvider"; import { useSnackbar } from "../contexts/SnackbarProvider"; import WarningModal from "../modals/WarningModal"; import MnemonicModal from "../modals/MnemonicModal"; +import PassphraseModal from "../modals/PassphraseModal"; import WalletChrome from "@didcid/keymaster/wallet/chrome"; const WalletTab = () => { @@ -17,6 +18,8 @@ const WalletTab = () => { const [checkingWallet, setCheckingWallet] = useState(false); const [showFixModal, setShowFixModal] = useState(false); const [checkResultMessage, setCheckResultMessage] = useState(""); + const [showChangePassphrase, setShowChangePassphrase] = useState(false); + const [changePassError, setChangePassError] = useState(""); const { keymaster, initialiseWallet, @@ -215,6 +218,21 @@ const WalletTab = () => { } } + async function handleChangePassphrase(newPassphrase: string) { + if (!keymaster) { + return; + } + try { + await keymaster.changePassphrase(newPassphrase); + await chrome.runtime.sendMessage({ action: "STORE_PASSPHRASE", passphrase: newPassphrase }); + setShowChangePassphrase(false); + setChangePassError(""); + setSuccess("Passphrase changed"); + } catch (error: any) { + setChangePassError(error?.message || "Failed to change passphrase"); + } + } + return ( { onClose={handleMnemonicModalClose} /> + { setShowChangePassphrase(false); setChangePassError(""); }} + encrypt={true} + showCancel={true} + /> )} + + )} + + +

diff --git a/services/keymaster/client/src/KeymasterUI.js b/services/keymaster/client/src/KeymasterUI.js index 497ea2fc..3f2c336a 100644 --- a/services/keymaster/client/src/KeymasterUI.js +++ b/services/keymaster/client/src/KeymasterUI.js @@ -1885,6 +1885,24 @@ function KeymasterUI({ keymaster, title, challengeDID, onWalletUpload }) { } } + async function changePassphrase() { + try { + const newPass = window.prompt("Enter new passphrase:"); + if (!newPass) { + return; + } + const confirmPassphrase = window.prompt("Confirm new passphrase:"); + if (newPass !== confirmPassphrase) { + showError("Passphrases do not match"); + return; + } + await keymaster.changePassphrase(newPass); + showSuccess('Passphrase changed'); + } catch (error) { + showError(error); + } + } + async function uploadImage(event) { try { const fileInput = event.target; // Reference to the input element @@ -5361,6 +5379,11 @@ function KeymasterUI({ keymaster, title, challengeDID, onWalletUpload }) { Upload... + + +