This commit is contained in:
EggMan20339 2024-05-10 03:23:40 -04:00
parent 51cdc8d4e2
commit bd6903b7a2
2 changed files with 35 additions and 22 deletions

View File

@ -49,6 +49,7 @@ import ctypes
from fido2.ctap2 import Ctap2
from fido2 import cbor
import nfc
from fido2.nfc import CtapNfcDevice
config = configparser.ConfigParser()

56
test.py
View File

@ -1,26 +1,38 @@
import nfc
import time
from fido2.pcsc import CtapPcscDevice
from fido2.utils import sha256
from fido2.ctap1 import Ctap1
import sys
def connected(tag):
print("Tag detected:", tag)
return True
def read_nfc():
try:
clf = nfc.ContactlessFrontend('usb') # Ensure this matches your connection
print("NFC reader initialized.")
except Exception as e:
print("Failed to initialize NFC reader:", e)
return
dev = next(CtapPcscDevice.list_devices(), None)
if not dev:
print("No NFC u2f device found")
sys.exit(1)
try:
while True:
print("Waiting for NFC tag...")
clf.connect(rdwr={'on-connect': connected})
time.sleep(1)
except Exception as e:
print("Error reading NFC tag:", e)
finally:
clf.close()
chal = sha256(b"AAA")
appid = sha256(b"BBB")
read_nfc()
ctap1 = Ctap1(dev)
print("version:", ctap1.get_version())
# True - make extended APDU and send it to key
# ISO 7816-3:2006. page 33, 12.1.3 Decoding conventions for command APDUs
# ISO 7816-3:2006. page 34, 12.2 Command-response pair transmission by T=0
# False - make group of short (less than 255 bytes length) APDU
# and send them to key. ISO 7816-3:2005, page 9, 5.1.1.1 Command chaining
dev.use_ext_apdu = False
reg = ctap1.register(chal, appid)
print("register:", reg)
reg.verify(appid, chal)
print("Register message verify OK")
auth = ctap1.authenticate(chal, appid, reg.key_handle)
print("authenticate result: ", auth)
res = auth.verify(appid, chal, reg.public_key)
print("Authenticate message verify OK")