('ip-bytes-in', xlate_bytes),
('ip-bytes-out', xlate_bytes)]
+def format_stat(format, dict):
+ if callable(format): return format(dict)
+ else: return format % dict
+
## How to lay out the stats dialog. Format is (LABEL, FORMAT): LABEL is
## the label to give the entry box; FORMAT is the format string to write into
## the entry.
'%(kx-group)s '
'(%(kx-group-order-bits)s-bit order, '
'%(kx-group-elt-bits)s-bit elements)'),
- ('Cipher',
- '%(cipher)s (%(cipher-keysz)s-bit key, %(cipher-blksz)s-bit block)'),
- ('Mac', '%(mac)s (%(mac-keysz)s-bit key, %(mac-tagsz)s-bit tag)'),
- ('Hash', '%(hash)s (%(hash-sz)s-bit output)')]
+ ('Bulk crypto transform',
+ '%(bulk-transform)s (%(bulk-overhead)s byte overhead)'),
+ ('Data encryption', lambda d: '%s (%s; %s)' % (
+ d['cipher'],
+ '%d-bit key' % (8*int(d['cipher-keysz'])),
+ d.get('cipher-blksz', '0') == '0'
+ and 'stream cipher'
+ or '%d-bit block' % (8*int(d['cipher-blksz'])))),
+ ('Message authentication', lambda d: '%s (%s; %s)' % (
+ d['mac'],
+ d.get('mac-keysz') is None
+ and 'one-time MAC'
+ or '%d-bit key' % (8*int(d['mac-keysz'])),
+ '%d-bit tag' % (8*int(d['mac-tagsz'])))),
+ ('Hash', lambda d: '%s (%d-bit output)' %
+ (d['hash'], 8*int(d['hash-sz'])))]
statslayout = \
[('Start time', '%(start-time)s'),
stat[s] = trans(stat[s])
stat.update(me.peer.__dict__)
for label, format in statslayout:
- me.e[label].set_text(format % stat)
+ me.e[label].set_text(format_stat(format, stat))
GL.timeout_add(1000, lambda: me.cr.switch() and False)
me.cr.parent.switch()
me.cr = None
(crypto['kx-group'],
int(crypto['kx-group-order-bits']),
int(crypto['kx-group-elt-bits'])),
- len = 32)
+ len = 42)
table.info('Data encryption',
'%s (%d-bit key; %s)' %
(crypto['cipher'],