solokeys / solo1-cli

Solo 1 library and CLI in Python
https://pypi.org/project/solo-python
Apache License 2.0
185 stars 69 forks source link

Feed Solo entropy to Linux kernel #18

Closed nickray closed 5 years ago

nickray commented 5 years ago

Thanks for the idea, @manuel-domke!

Example usage: sudo ALLOW_ROOT= venv/bin/solo key rng feedkernel --count 123

emansih commented 5 years ago

@nickray how do I use this? I tried this in CLI and it fails.

solo key rng feedkernel --count 123
Entropy before: 0x2037
Traceback (most recent call last):
  File "/home/daniel/.local/bin/solo", line 10, in <module>
    sys.exit(solo_cli())
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/daniel/.local/lib/python3.7/site-packages/solo/cli/key.py", line 106, in feedkernel
    _ = fcntl.ioctl(fh, RNDADDENTROPY, t)
PermissionError: [Errno 1] Operation not permitted

This is my udev rules

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a2ca", TAG+="uaccess", MODE="0660", GROUP="plugdev"

# Notify ModemManager this device should be ignored
ACTION!="add|change|move", GOTO="mm_usb_device_blacklist_end"
SUBSYSTEM!="usb", GOTO="mm_usb_device_blacklist_end"
ENV{DEVTYPE}!="usb_device",  GOTO="mm_usb_device_blacklist_end"

ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a2ca", ENV{ID_MM_DEVICE_IGNORE}="1"

LABEL="mm_usb_device_blacklist_end"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a2ca", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
szszszsz commented 5 years ago

Have you used sudo, as in description? https://github.com/solokeys/solo-python/pull/18#issue-266620008

emansih commented 5 years ago

I assume we can't use sudo? https://github.com/solokeys/solo-python/blob/f46dfcdeb89fd660c558af5b10b4ff0b27cadff5/solo/cli/__init__.py#L30

nickray commented 5 years ago

I just warn in recent versions.