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

TypeError: make_credential() takes 2 positional arguments but 4 were given #52

Closed patvdleer closed 4 years ago

patvdleer commented 4 years ago
$ solo key verify
Please press the button on your Solo key
Traceback (most recent call last):
  File "/usr/local/bin/solo", line 8, in <module>
    sys.exit(solo_cli())
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/solo/cli/key.py", line 322, in verify
    cert = solo.client.find(serial, udp=udp).make_credential(pin=pin)
  File "/usr/local/lib/python3.7/dist-packages/solo/client.py", line 233, in make_credential
    rp, user, challenge, exclude_list=[], pin=pin
TypeError: make_credential() takes 2 positional arguments but 4 were given
patvdleer commented 4 years ago
$ solo key make-credential
Touch your authenticator to generate a credential...
Traceback (most recent call last):
  File "/usr/local/bin/solo", line 8, in <module>
    sys.exit(solo_cli())
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/solo/cli/key.py", line 135, in make_credential
    host=host, user_id=user, serial=serial, output=True, prompt=prompt, udp=udp
  File "/usr/local/lib/python3.7/dist-packages/solo/hmac_secret.py", line 44, in make_credential
    rp, user, challenge, extensions=hmac_ext.create_dict(), pin=pin
TypeError: make_credential() takes 2 positional arguments but 4 were given
nickray commented 4 years ago

I'll fix this.

nickray commented 4 years ago

I can't reproduce. What versions of solo-python and Yubico/python-fido2 do you have installed @patvdleer?

s00500 commented 4 years ago

Having the same issue, solo version output: 0.0.21

patvdleer commented 4 years ago

Im on latest master

nickray commented 4 years ago

I'm asking about the fido2 dependency, can you tell?

mporrato commented 4 years ago

Same issue here with a freshly created venv:

$ python3 --version
Python 3.7.6
$ pip list
Package      Version   
------------ ----------
certifi      2019.11.28
cffi         1.13.2    
chardet      3.0.4     
Click        7.0       
cryptography 2.8       
ecdsa        0.15      
fido2        0.8.1     
idna         2.8       
intelhex     2.2.1     
pip          19.3.1    
pycparser    2.19      
pyserial     3.4       
pyusb        1.0.2     
requests     2.22.0    
setuptools   41.2.0    
six          1.13.0    
solo-python  0.0.21    
urllib3      1.25.7    
s00500 commented 4 years ago
 ~ pip3 list | grep fido2
fido2                                   0.8.1    
nickray commented 4 years ago

I see now. Can you try v0.0.22 please?

mporrato commented 4 years ago

@nickray 0.0.22 works for me. Thanks!

nickray commented 4 years ago

Thank heavens...

s00500 commented 4 years ago

Confirming, thanks for the super fast fix

mporrato commented 4 years ago

@nickray not sure if this is related, but some commands that used to work before are now raising an AttributeError:

$ solo key version
Traceback (most recent call last):
  File "/home/guru/rumenta/solo-python/venv/bin/solo", line 4, in <module>
    solo_cli()
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/solo/cli/key.py", line 409, in version
    res = solo.client.find(serial, udp=udp).solo_version()
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/solo/client.py", line 193, in solo_version
    return self.send_data_hid(0x61, b"")
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/solo/client.py", line 142, in send_data_hid
    return self.dev.call(cmd, data, event)
  File "/home/guru/rumenta/solo-python/venv/lib64/python3.7/site-packages/fido2/hid.py", line 88, in call
    while not event.is_set():
AttributeError: 'float' object has no attribute 'is_set'
nickray commented 4 years ago

Oh jeez, this is utterly annoying. Pulling in the fido2 breaking changes in 0.8 did in fact break things :/

New round, new luck, v0.0.23 is out.

mporrato commented 4 years ago

Tried a few operations with v0.0.23: looks fine now.

nickray commented 4 years ago

@patvdleer can you check and close if appropriate? Thanks.