Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit c1815b7

Browse files
committed
show in the JSON export whether a passphrase is empty or not
```json $ export-wallets --mainnet --keyfile state-wallet-mainnet/secret.key [ { "encrypted_root_private_key": "18b952a968ccbac047f9c227dd05fced84ba85a1f83daf54f0a3c0de3e5664502678b1ba34a0b44ce22a2b54f39830570bdfeeed0a2f8586aa988fa5399987252b81f30b3c1e4c39e1edb16a4c7975eea106fc5d12d3b4fa516b9332f777defba949a42ef709a2d2f5c64057e99987c545b6e014f8cd9502bd5b800ddc6e10b7", "is_passphrase_empty": true, "name": null, "id": "f1aaaf1e1e6db1255ec2d59d50c5db892ff20330", "passphrase_hash": "31347c387c317c5743424875746242496c6a66734d764934314a30727a79663076657375724954796376766a793150554e377452673d3d7c54753434596d6e547957546c5759674a3164494f7974474a7842632b432f7862507657382b5135356a38303d" }, { "encrypted_root_private_key": "6d9e6a5135d373fb62eadaf02bc8f5ecf35148806721c704c6dbfcf818ff958f1fc4a933542c423f5b8621cfe6404c4b208f2c96f6246082dffbc9fb1029a79ed33651377731e0e59e0233425a55257782c5adaa768da0567f43c1c6c0c18766ed0a547bb34eb472c120b170a8640279832ddf18002887f03c15dea59705422d", "is_passphrase_empty": false, "name": null, "id": "05377e480bd68a2da04f00c39ce5886e4746ed1f", "passphrase_hash": "31347c387c317c574342652b796362417576356c2b4258676a344a314c6343675375414c2f5653393661364e576a2b7550766655513d3d7c2f376738486c59723174734e394f6e4e753253302b6a65515a6b5437316b45414941366a515867386539493d" } ] ```
1 parent 13f5729 commit c1815b7

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

wallet/export-wallets/Main.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import Pos.Core.NetworkMagic (makeNetworkMagic)
2424
import Pos.Crypto (EncryptedPass (..), EncryptedSecretKey (..))
2525
import Pos.Crypto.Configuration (ProtocolMagic (..),
2626
ProtocolMagicId (..), RequiresNetworkMagic (..))
27+
import Pos.Crypto.Signing (checkPassMatches, emptyPassphrase)
2728
import Pos.Infra.InjectFail (mkFInjects)
2829
import Pos.Util.Trace (Trace (..))
2930
import Pos.Util.UserSecret (readUserSecret)
@@ -97,11 +98,14 @@ extractWallet pw = do
9798
newtype Export a = Export a deriving (Show)
9899

99100
instance ToJSON (Export (Maybe WalletName, EncryptedSecretKey)) where
100-
toJSON (Export (name, EncryptedSecretKey{eskPayload, eskHash})) = Json.object
101+
toJSON (Export (name, esk@EncryptedSecretKey{eskPayload, eskHash})) = Json.object
101102
[ "id" .= base16 (mkWalletId eskPayload)
102103
, "name" .= (getWalletName <$> name)
103104
, "encrypted_root_private_key" .= base16 (unXPrv eskPayload)
104105
, "passphrase_hash" .= base16 (getEncryptedPass eskHash)
106+
, "is_passphrase_empty" .= case checkPassMatches emptyPassphrase esk of
107+
Nothing -> False
108+
Just{} -> True
105109
]
106110
where
107111
base16 = T.decodeUtf8 . convertToBase @ByteString @ByteString Base16

0 commit comments

Comments
 (0)