MCPcopy Create free account
hub / github.com/ElementsProject/lightning / test_hsmtool_generatehsm

Function test_hsmtool_generatehsm

tests/test_wallet.py:1255–1322  ·  view source on GitHub ↗
(node_factory)

Source from the content-addressed store, hash-verified

1253
1254
1255def test_hsmtool_generatehsm(node_factory):
1256 l1 = node_factory.get_node(start=False)
1257 hsm_path = os.path.join(l1.daemon.lightning_dir, TEST_NETWORK,
1258 "hsm_secret")
1259
1260 hsmtool = HsmTool(node_factory.directory, "generatehsm", hsm_path)
1261
1262 # You cannot re-generate an already existing hsm_secret
1263 master_fd, slave_fd = os.openpty()
1264 hsmtool.start(stdin=slave_fd)
1265 assert hsmtool.proc.wait(WAIT_TIMEOUT) == 2
1266 os.remove(hsm_path)
1267
1268 # We can generate a valid hsm_secret from a wordlist and a "passphrase"
1269 master_fd, slave_fd = os.openpty()
1270 hsmtool.start(stdin=slave_fd)
1271 hsmtool.wait_for_log(r"Select your language:")
1272 write_all(master_fd, "0\n".encode("utf-8"))
1273 hsmtool.wait_for_log(r"Introduce your BIP39 word list")
1274 write_all(master_fd, "ritual idle hat sunny universe pluck key alpha wing "
1275 "cake have wedding\n".encode("utf-8"))
1276 hsmtool.wait_for_log(r"Enter your passphrase:")
1277 write_all(master_fd, "This is actually not a passphrase\n".encode("utf-8"))
1278 assert hsmtool.proc.wait(WAIT_TIMEOUT) == 0
1279 hsmtool.is_in_log(r"New hsm_secret file created")
1280
1281 # Check should pass.
1282 hsmtool = HsmTool(node_factory.directory, "checkhsm", hsm_path)
1283 master_fd, slave_fd = os.openpty()
1284 hsmtool.start(stdin=slave_fd)
1285 hsmtool.wait_for_log(r"Enter your passphrase:")
1286 write_all(master_fd, "This is actually not a passphrase\n".encode("utf-8"))
1287 hsmtool.wait_for_log(r"Select your language:")
1288 write_all(master_fd, "0\n".encode("utf-8"))
1289 hsmtool.wait_for_log(r"Introduce your BIP39 word list")
1290 write_all(master_fd, "ritual idle hat sunny universe pluck key alpha wing "
1291 "cake have wedding\n".encode("utf-8"))
1292 assert hsmtool.proc.wait(WAIT_TIMEOUT) == 0
1293 hsmtool.is_in_log(r"OK")
1294
1295 # Wrong mnemonic will fail.
1296 master_fd, slave_fd = os.openpty()
1297 hsmtool.start(stdin=slave_fd)
1298 hsmtool.wait_for_log(r"Enter your passphrase:")
1299 write_all(master_fd, "This is actually not a passphrase\n".encode("utf-8"))
1300 hsmtool.wait_for_log(r"Select your language:")
1301 write_all(master_fd, "0\n".encode("utf-8"))
1302 hsmtool.wait_for_log(r"Introduce your BIP39 word list")
1303 write_all(master_fd, "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about\n".encode("utf-8"))
1304 assert hsmtool.proc.wait(WAIT_TIMEOUT) == 5
1305 hsmtool.is_in_log(r"resulting hsm_secret did not match")
1306
1307 # Wrong passphrase will fail.
1308 master_fd, slave_fd = os.openpty()
1309 hsmtool.start(stdin=slave_fd)
1310 hsmtool.wait_for_log(r"Enter your passphrase:")
1311 write_all(master_fd, "This is actually not a passphrase \n".encode("utf-8"))
1312 hsmtool.wait_for_log(r"Select your language:")

Callers

nothing calls this directly

Calls 9

HsmToolClass · 0.85
joinMethod · 0.80
wait_for_logMethod · 0.80
is_in_logMethod · 0.80
write_allFunction · 0.70
get_nodeMethod · 0.45
startMethod · 0.45
waitMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected