berdav/greenpass

NHS: NameError: name 'hexkid' is not defined

st4nny opened this issue · 9 comments

Ciao, continuo i miei test con la v. 2.1

ottengo:
Traceback (most recent call last):
File "/home/gp/./test_gp", line 803, in
res = verify_certificate(txt, "txt", cachedir)
File "/home/gp/./test_gp", line 720, in verify_certificate
key = cup.get_key_coseobj(gpp.get_kid())
File "/home/gp/./test_gp", line 405, in get_key_coseobj
certificate = self.get_key(kid)
File "/home/gp/./test_gp", line 400, in get_key
pubkey = self.get_key_nhs(idx)
File "/home/gp/./test_gp", line 390, in get_key_nhs
if targetkid == hexkid:
NameError: name 'hexkid' is not defined

effettivamente in get_key_nhs hexkid non sembra essere definito.

Ciao, e' effettivamente un NHS?

quella parte e' molto abbozzata (c'e' anche un'altra issue a riguardo), non avendo accesso a certificati NHS.

Ho pushato su un branch issue-17-nhs-hexkid una nuova modifica per aiutare il debug, puoi provare con quella?

Grazie per l'interesse!

Ciao,
D.

Intanto ho aggiornato la mia versione alla 3.2
Sia su questo branch che sul master ottengo un NameError: name 'json' is not defined
ho aggiunto su data.py a riga 20 un import json e gira regolarmente.
Con questo branch su gp nhs ottengo:

DEBUG: Kid: 26YSc5g0nG8= TARGET: b'dba6127398349c6f'
DEBUG: Kid: S2V5MVJF TARGET: b'4b6579315245'
DEBUG: Kid: S2V5MlJF TARGET: b'4b6579325245'
DEBUG: Kid: S2V5M1JF TARGET: b'4b6579335245'
DEBUG: Kid: S2V5NFJF TARGET: b'4b6579345245'
DEBUG: Kid: S2V5NVJF TARGET: b'4b6579355245'
DEBUG: Kid: S2V5MVBSTw== TARGET: b'4b65793150524f'
DEBUG: Kid: S2V5MlBSTw== TARGET: b'4b65793250524f'
DEBUG: Kid: S2V5M1BSTw== TARGET: b'4b65793350524f'
DEBUG: Kid: S2V5NFBSTw== TARGET: b'4b65793450524f'
DEBUG: Kid: S2V5NVBSTw== TARGET: b'4b65793550524f'
DEBUG: Kid: 1J9pb87ndV0= TARGET: b'd49f696fcee7755d'
DEBUG: Kid: c3ByZGtleTE= TARGET: b'737072646b657931'
DEBUG: Kid: c3ByZGtleTI= TARGET: b'737072646b657932'
DEBUG: Kid: d3ByZGtleTE= TARGET: b'777072646b657931'
DEBUG: Kid: d3ByZGtleTI= TARGET: b'777072646b657932'
DEBUG: Kid: osFRFyFIWdU= TARGET: b'a2c15117214859d5'
DEBUG: Kid: I0+qkOLr2e0= TARGET: b'234faa90e2ebd9ed'
DEBUG: Kid: jeetFC69E6o= TARGET: b'8de7ad142ebd13aa'
DEBUG: Kid: lYkujLws7SE= TARGET: b'95892e8cbc2ced21'
DEBUG: Kid: 1PtilTAMiyk= TARGET: b'd4fb6295300c8b29'
Traceback (most recent call last):
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass.py", line 114, in
res = logic.verify_certificate(out, gpp, sm, cup)
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/logic.py", line 315, in verify_certificate
key = cup.get_key_coseobj(gpp.get_kid())
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/api.py", line 112, in get_key_coseobj
pubkey = self.loadpubkey(certificate)
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/api.py", line 84, in loadpubkey
x509 = crypto.load_certificate(crypto.FILETYPE_ASN1, certificate)
File "/usr/local/lib/python3.9/site-packages/OpenSSL/crypto.py", line 1973, in load_certificate
_raise_current_error()
File "/usr/local/lib/python3.9/site-packages/OpenSSL/_util.py", line 57, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.crypto.Error: [('asn1 encoding routines', 'asn1_d2i_read_bio', 'not enough data')]

Ciao, ho pushato (forced, dovrai probabilmente riscaricarlo o usare --force) sul branch, una prova di una fix.

Il problema e' che in questo caso non si deve passare da openssl, quindi ho inibito questa cosa con un try/catch per rendere la cosa piu' stabile (Altrimenti dovrei salvarmi il tipo di file nella cache).

Purtroppo non ho un NHS e non riesco a provare la momento, fammi sapere se hai dei problemi con questa soluzione

Ciao, ora ottengo questo:
DEBUG: Kid: S2V5MVJF TARGET: b'4b6579315245'
DEBUG: Kid: 26YSc5g0nG8= TARGET: b'dba6127398349c6f'
DEBUG: Kid: S2V5MlJF TARGET: b'4b6579325245'
DEBUG: Kid: S2V5M1JF TARGET: b'4b6579335245'
DEBUG: Kid: S2V5NFJF TARGET: b'4b6579345245'
DEBUG: Kid: S2V5NVJF TARGET: b'4b6579355245'
DEBUG: Kid: S2V5MVBSTw== TARGET: b'4b65793150524f'
DEBUG: Kid: S2V5MlBSTw== TARGET: b'4b65793250524f'
DEBUG: Kid: S2V5M1BSTw== TARGET: b'4b65793350524f'
DEBUG: Kid: S2V5NFBSTw== TARGET: b'4b65793450524f'
DEBUG: Kid: S2V5NVBSTw== TARGET: b'4b65793550524f'
DEBUG: Kid: 1J9pb87ndV0= TARGET: b'd49f696fcee7755d'
DEBUG: Kid: c3ByZGtleTE= TARGET: b'737072646b657931'
DEBUG: Kid: c3ByZGtleTI= TARGET: b'737072646b657932'
DEBUG: Kid: d3ByZGtleTE= TARGET: b'777072646b657931'
DEBUG: Kid: d3ByZGtleTI= TARGET: b'777072646b657932'
DEBUG: Kid: osFRFyFIWdU= TARGET: b'a2c15117214859d5'
DEBUG: Kid: I0+qkOLr2e0= TARGET: b'234faa90e2ebd9ed'
DEBUG: Kid: jeetFC69E6o= TARGET: b'8de7ad142ebd13aa'
DEBUG: Kid: lYkujLws7SE= TARGET: b'95892e8cbc2ced21'
DEBUG: Kid: 1PtilTAMiyk= TARGET: b'd4fb6295300c8b29'
Traceback (most recent call last):
File "./greenpass.py", line 114, in
res = logic.verify_certificate(out, gpp, sm, cup)
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/logic.py", line 314, in verify_certificate
key = cup.get_key_coseobj(gpp.get_kid())
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/api.py", line 118, in get_key_coseobj
return self.getcoseobj(pubkey)
File "/home/gp/greenpass-issue-17-nhs-hexkid/greenpass/api.py", line 123, in getcoseobj
x = pubkey[1:int(len(pubkey)/2) + 1]
TypeError: object of type 'NoneType' has no len()

Ciao, sto cercando un NHS d'esempio ma non sembrano esserci. Hai qualche NHS pubblico da linkare (ovviamente in privato) che posso integrare nei test?

Dovresti avercelo sulla mail

Ok, puoi provare con il master corrente?

Grazie mille.

Perfetto, direi che ci siamo.
Un saluto

Ottimo, grazie ancora, ci sentiamo per qualsiasi modifica.

Ciao,
D.