Yubico / python-fido2

Provides library functionality for FIDO 2.0, including communication with a device over USB.
BSD 2-Clause "Simplified" License
432 stars 109 forks source link

WindowsClient implementation of native Webauthn API not working in 32-bit Windows 10 #120

Open tr-ccc opened 3 years ago

tr-ccc commented 3 years ago

Microsoft Windows [Version 10.0.19043.1023] (c) Microsoft Corporation. All rights reserved.

E:\WebAuthN\python-fido2\examples>py resident_key.py Traceback (most recent call last): File "E:\Users\C C C\AppData\Local\Programs\Python\Python39-32\lib\site-packages\fido2\client.py", line 798, in make_credential result = self.api.make_credential( File "E:\Users\C C C\AppData\Local\Programs\Python\Python39-32\lib\site-packages\fido2\win_api.py", line 726, in make_credential WEBAUTHN.WebAuthNAuthenticatorMakeCredential( File "_ctypes/callproc.c", line 997, in GetResult OSError: [WinError -2147023170] The remote procedure call failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "E:\WebAuthN\python-fido2\examples\resident_key.py", line 102, in result = client.make_credential(create_options["publicKey"], pin=pin) File "E:\Users\C C C\AppData\Local\Programs\Python\Python39-32\lib\site-packages\fido2\client.py", line 819, in make_credential raise ClientError.ERR.OTHER_ERROR(e) fido2.client.ClientError: (<ERR.OTHER_ERROR: 1>, OSError(22, 'The remote procedure call failed', None, -2147023170, None))

E:\WebAuthN\python-fido2\examples>

How to reproduce: 1) Fresh or existing installation of Windows 10 21H1 32-bit (tested on Pro edition) 2) Install latest python 3.9.5 32-bit from python.org 3) pip install fido2 4) run examples that implemented WindowsClient e.g. py resident_key.py that is supposed to not require running as admin

If running as admin, Fido2Client is used and working in 32-bit Windows.

If running as non-admin, WindowsClient is used and not working in 32-bit Windows.

Same error is faced with other examples that uses WindowsClient (credential.py and verify_attestation.py) when running as non-admin in 32-bit Windows.