joinmarket: fix wallet creation
- Fix jm-wallet-seed being globally readable. - Handle seed extraction failures. If seed extraction fails, remove the newly created wallet. This guarantees that wallets always have an accompanying seed.
This commit is contained in:
parent
7458350108
commit
d9c87b6a8f
@ -185,18 +185,19 @@ in {
|
|||||||
# Generating wallets (jmclient/wallet.py) is only supported for mainnet or testnet
|
# Generating wallets (jmclient/wallet.py) is only supported for mainnet or testnet
|
||||||
ExecStartPost = mkIf (bitcoind.network == "mainnet") (nbLib.privileged ''
|
ExecStartPost = mkIf (bitcoind.network == "mainnet") (nbLib.privileged ''
|
||||||
walletname=wallet.jmdat
|
walletname=wallet.jmdat
|
||||||
pw=$(cat "${secretsDir}"/jm-wallet-password)
|
wallet=${cfg.dataDir}/wallets/$walletname
|
||||||
mnemonic=${secretsDir}/jm-wallet-seed
|
if [[ ! -f $wallet ]]; then
|
||||||
if [[ ! -f ${cfg.dataDir}/wallets/$walletname ]]; then
|
echo "Create wallet"
|
||||||
echo Create joinmarket wallet
|
pw=$(cat "${secretsDir}"/jm-wallet-password)
|
||||||
# Use bash variables so commands don't proceed on previous failures
|
cd ${cfg.dataDir}
|
||||||
# (like with pipes)
|
if ! sudo -u ${cfg.user} ${nbPkgs.joinmarket}/bin/jm-genwallet --datadir=${cfg.dataDir} $walletname $pw \
|
||||||
cd ${cfg.dataDir} && \
|
| grep 'recovery_seed' \
|
||||||
out=$(sudo -u ${cfg.user} \
|
| cut -d ':' -f2 \
|
||||||
${nbPkgs.joinmarket}/bin/jm-genwallet \
|
| (umask u=r,go=; cat > "${secretsDir}/jm-wallet-seed"); then
|
||||||
--datadir=${cfg.dataDir} $walletname $pw)
|
echo "wallet creation failed"
|
||||||
recoveryseed=$(echo "$out" | grep 'recovery_seed')
|
rm -f "$wallet" "${secretsDir}/jm-wallet-seed"
|
||||||
echo "$recoveryseed" | cut -d ':' -f2 > $mnemonic
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
'');
|
'');
|
||||||
ExecStart = "${nbPkgs.joinmarket}/bin/joinmarketd";
|
ExecStart = "${nbPkgs.joinmarket}/bin/joinmarketd";
|
||||||
|
Loading…
Reference in New Issue
Block a user