[Cryptech-Commits] [user/ft/bootstrap] 03/06: add --timeout
git at cryptech.is
git at cryptech.is
Mon Aug 15 13:38:26 UTC 2016
This is an automated email from the git hooks/post-receive script.
fredrik at thulin.net pushed a commit to branch master
in repository user/ft/bootstrap.
commit 2a9a41b399cfd76943cc221a78f80313157b7331
Author: Fredrik Thulin <fredrik at thulin.net>
AuthorDate: Thu Aug 11 11:27:02 2016 +0200
add --timeout
---
bin/cryptech_runcmd | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/bin/cryptech_runcmd b/bin/cryptech_runcmd
index 6407043..61f277a 100755
--- a/bin/cryptech_runcmd
+++ b/bin/cryptech_runcmd
@@ -46,6 +46,7 @@ FPGA_CHUNK_SIZE = 4096
default_pins = {'wheel': 'YouReallyNeedToChangeThisPINRightNowWeAreNotKidding',
'ct': 'ct',
}
+default_timeout = 2
def parse_args():
"""
@@ -68,6 +69,13 @@ def parse_args():
help = "Username to use when logging into the HSM",
)
+ parser.add_argument("--timeout",
+ metavar = 'SECONDS',
+ type = int,
+ default = default_timeout,
+ help = "Timeout of commands (seconds)",
+ )
+
parser.add_argument('commands', metavar='CMD', type=str, nargs='+',
help='commands to execute')
return parser.parse_args()
@@ -83,45 +91,45 @@ def _write(dst, data, debug=False):
print("Wrote {!r}".format(data))
-def _read(dst, verbose=True):
+def _read(dst, args, verbose=True):
res = ''
- x = dst.read(1)
+ x = dst.read(args.timeout)
while not x:
- x = dst.read(1)
+ x = dst.read(args.timeout)
while x:
res += x
- x = dst.read(1)
+ x = dst.read(args.timeout)
#print ("Read {!r}".format(res))
if verbose:
sys.stdout.write(res)
return res
-def _execute(dst, cmd):
+def _execute(dst, cmd, args):
global default_pins
_write(dst, '\r')
- prompt = _read(dst)
+ prompt = _read(dst, args)
if prompt.endswith('Username: '):
_write(dst, args.username + "\r")
- prompt = _read(dst)
+ prompt = _read(dst, args)
if prompt.endswith('Password: '):
pin = default_pins.get(args.username)
if not pin:
pin = getpass.getpass("{} PIN: ".format(args.username))
_write(dst, pin + '\r')
- prompt = _read(dst)
+ prompt = _read(dst, args)
if not prompt.endswith('> '):
#sys.stderr.write('Device does not seem to be ready for a file transfer (got {!r})\n'.format(prompt))
return prompt
_write(dst, cmd + '\r')
- response = _read(dst)
+ response = _read(dst, args)
return response
def main(args):
global pin
- dst = serial.Serial(args.device, 921600, timeout=2)
+ dst = serial.Serial(args.device, 921600, timeout=args.timeout)
for this in args.commands:
- _execute(dst, this)
+ _execute(dst, this, args)
dst.close()
return True
More information about the Commits
mailing list