Skip to content
This repository has been archived by the owner on Dec 19, 2023. It is now read-only.

Commit

Permalink
Fix "make init" and "pip install" after upstream fido2 library change
Browse files Browse the repository at this point in the history
  • Loading branch information
wuxxin committed Jul 18, 2022
1 parent cadb00c commit 6d5ed30
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 4 deletions.
4 changes: 3 additions & 1 deletion .SRCINFO
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pkgbase = solo1
pkgdesc = Python tool and library for SoloKeys Solo 1
pkgver = 0.1.1
pkgrel = 2
pkgrel = 3
url = https://github.com/solokeys/solo1-cli
arch = any
license = Apache
Expand All @@ -21,6 +21,8 @@ pkgbase = solo1
conflicts = solo-python
replaces = solo-python
source = solo1-cli-0.1.1.tar.gz::https://github.com/solokeys/solo1-cli/archive/refs/tags/0.1.1.tar.gz
source = 152.patch
sha256sums = 377f0c244ee0efc741f18b3370cc0e5dcaff852db90102eeb258201128643c84
sha256sums = SKIP

pkgname = solo1
101 changes: 101 additions & 0 deletions 152.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
From 02bb791f3c32c8f93a3f5bc4d256a5a6c77d7528 Mon Sep 17 00:00:00 2001
From: Kendrick Shaw <[email protected]>
Date: Thu, 9 Jun 2022 23:16:43 +0000
Subject: [PATCH] Update to fido2 library 1.0 API

The fido2 library has changed the names of the CTAP1 class to Ctap1 and
the CTAP2 class to Ctap2; this commit updates the solo1-cli code to use
the new names.
---
solo/devices/base.py | 10 +++++-----
solo/devices/solo_v1.py | 8 ++++----
solo/solotool.py | 4 ++--
3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/solo/devices/base.py b/solo/devices/base.py
index 2e030f4..6afe01a 100644
--- a/solo/devices/base.py
+++ b/solo/devices/base.py
@@ -3,7 +3,7 @@
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from fido2.attestation import Attestation
-from fido2.ctap2 import CTAP2, CredentialManagement
+from fido2.ctap2 import Ctap2, CredentialManagement
from fido2.hid import CTAPHID
from fido2.utils import hmac_sha256
from fido2.webauthn import PublicKeyCredentialCreationOptions
@@ -76,7 +76,7 @@ def ping(self, data="pong"):
def reset(
self,
):
- CTAP2(self.get_current_hid_device()).reset()
+ Ctap2(self.get_current_hid_device()).reset()

def change_pin(self, old_pin, new_pin):
client = self.get_current_fido_client()
@@ -114,7 +114,7 @@ def make_credential(self, pin=None):
def cred_mgmt(self, pin):
client = self.get_current_fido_client()
token = client.client_pin.get_pin_token(pin)
- ctap2 = CTAP2(self.get_current_hid_device())
+ ctap2 = Ctap2(self.get_current_hid_device())
return CredentialManagement(ctap2, client.client_pin.protocol, token)

def enter_solo_bootloader(
@@ -137,11 +137,11 @@ def is_solo_bootloader(
pass

def program_kbd(self, cmd):
- ctap2 = CTAP2(self.get_current_hid_device())
+ ctap2 = Ctap2(self.get_current_hid_device())
return ctap2.send_cbor(0x51, cmd)

def sign_hash(self, credential_id, dgst, pin):
- ctap2 = CTAP2(self.get_current_hid_device())
+ ctap2 = Ctap2(self.get_current_hid_device())
client = self.get_current_fido_client()
if pin:
pin_token = client.client_pin.get_pin_token(pin)
diff --git a/solo/devices/solo_v1.py b/solo/devices/solo_v1.py
index 0c4328f..fd64c22 100644
--- a/solo/devices/solo_v1.py
+++ b/solo/devices/solo_v1.py
@@ -8,8 +8,8 @@

from fido2.client import Fido2Client
from fido2.ctap import CtapError
-from fido2.ctap1 import CTAP1
-from fido2.ctap2 import CTAP2
+from fido2.ctap1 import Ctap1
+from fido2.ctap2 import Ctap2
from fido2.hid import CTAPHID, CtapHidDevice
from intelhex import IntelHex

@@ -64,9 +64,9 @@ def find_device(self, dev=None, solo_serial=None):
dev = devices[0]
self.dev = dev

- self.ctap1 = CTAP1(dev)
+ self.ctap1 = Ctap1(dev)
try:
- self.ctap2 = CTAP2(dev)
+ self.ctap2 = Ctap2(dev)
except CtapError:
self.ctap2 = None

diff --git a/solo/solotool.py b/solo/solotool.py
index ca01454..9c4cddb 100644
--- a/solo/solotool.py
+++ b/solo/solotool.py
@@ -32,8 +32,8 @@
from fido2.attestation import Attestation
from fido2.client import ClientError, Fido2Client
from fido2.ctap import CtapError
-from fido2.ctap1 import CTAP1, ApduError
-from fido2.ctap2 import CTAP2
+from fido2.ctap1 import Ctap1, ApduError
+from fido2.ctap2 import Ctap2
from fido2.hid import CTAPHID, CtapHidDevice
from intelhex import IntelHex

15 changes: 12 additions & 3 deletions PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
pkgname=solo1
_pkgname=solo1-cli
pkgver=0.1.1
pkgrel=2
pkgrel=3
pkgdesc="Python tool and library for SoloKeys Solo 1"
arch=('any')
url="https://github.com/solokeys/${_pkgname}"
Expand All @@ -17,8 +17,17 @@ makedepends=('python-pip' 'python-flit')
replaces=('solo-python')
conflicts=('solo-python')
provides=('solo-python')
source=("${_pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/${pkgver}.tar.gz")
sha256sums=('377f0c244ee0efc741f18b3370cc0e5dcaff852db90102eeb258201128643c84')
source=("${_pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/${pkgver}.tar.gz"
'152.patch')
sha256sums=('377f0c244ee0efc741f18b3370cc0e5dcaff852db90102eeb258201128643c84'
'SKIP')

prepare() {
cd "${srcdir}/${_pkgname}-${pkgver}"
# patch api change in python-fido2 > 0.9
# https://github.com/solokeys/solo1-cli/pull/152
patch -Np1 -i "${srcdir}/152.patch"
}

build() {
cd "${srcdir}/${_pkgname}-${pkgver}"
Expand Down

0 comments on commit 6d5ed30

Please sign in to comment.