Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suporte para certificados A3 #11

Open
jdahlin opened this issue Jun 25, 2013 · 7 comments
Open

Suporte para certificados A3 #11

jdahlin opened this issue Jun 25, 2013 · 7 comments

Comments

@jdahlin
Copy link

jdahlin commented Jun 25, 2013

Para poder substituir o emissor da receita, precisa ter suporte para certificados A3.

A3 não tem acesso direto para chave particular, ele fica gravado num smart-card que normalmente é protegido com uma senha/PIN.

Tem duas funcionalidades que precisam ser modificadas para suportar A3:

  1. Criar assinatura, e colocar dentro do NFe mesmo
  2. Usando um stack http/ssl que permite uso de smartcard (pkcs11)

Para o primeiro item tem um começo aqui, ele depende do PyKCS11, que é o interface padrão para acessar smart-cards no linux.
Para o segundo tem esse arquivo que depende do nss/python-nss que é mesmo stack que o navigador firefox usa. Ele aproveita a configuração feita no browser mesmo. Que é bem simples.

Ainda tem bastante trabalho para acabar isso, mas é um bom começo.

@jdahlin
Copy link
Author

jdahlin commented Jun 26, 2013

A situação para Windows/Mac não é super-claro. Disposotivo de serasa tem drivers para PKCS11 (firefox) e MS-CAPI (microsoft), mas não conheço nenhum stack https/ssl que funciona em python.

Pode ser que wininet funciona, e tem um cliente de exemplo aqui: http://chrisjohnriley-metasploit-modules.googlecode.com/svn/trunk/misc/Python/simpleurl.py

No Mac parece que pkcs11 vai funcionar, igual linux, mas alguem teria que verificar se tem como compilar PyPKCS11 e python-nss lá.

@alanjds
Copy link
Collaborator

alanjds commented Jun 26, 2013

Eu consegui instalar o pykcs11 via pip no MacOSX 10.6.8, mas não sei se é a mesma PyPKCS11 que vc está falando, e ele (pip) não achou esse python-nss pra instalar.

Se me der instruções, eu tento mais.

@jdahlin
Copy link
Author

jdahlin commented Jun 26, 2013

É a mesmo PyKCS11, instalei do https://pypi.python.org/pypi/pykcs11
python-nss é http://www.mozilla.org/projects/security/pki/python-nss/ e https://pypi.python.org/pypi/python-nss

python-nss depende do https://developer.mozilla.org/en/docs/NSS que também é incluído dentro do firefox

@alanjds
Copy link
Collaborator

alanjds commented Jun 27, 2013

Não estou conseguindo instalar o python-nss:

$ pip install ftp://ftp.mozilla.org/pub/mozilla.org/security/python-nss/releases/PYNSS_RELEASE_0_14_0/src/python-nss-0.14.0.tar.bz2
(...)
ValueError: unable to locate include directory containing header files ['nss.h', 'pk11pub.h']

Ok, instalar dependências:

$ brew install nspr
$ brew install nss
==> Downloading http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_14_1_RTM/src/nss-3.14.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/nss-3.14.1.tar.gz
==> make build_coreconf build_dbm all -C mozilla/security/nss BUILD_OPT=1 NSS_ENABLE_ECC=1 NS_USE_GCC=1 NO_MDUPDATE=1 NSS_USE_SYSTEM_SQLITE=1 NSPR_INCLUDE_DIR=/usr/local/includ
  Reason: image not found
/private/tmp/nss-9H6F/nss-3.14.1/mozilla/security/nss/cmd/shlibsign/./sign.sh: line 6: 28625 Trace/BPT trap          "${2}"/shlibsign -v -i "${5}"
make[2]: *** [../../../../dist/Darwin10.8.0_OPT.OBJ/lib/libsoftokn3.chk] Error 133
make[1]: *** [libs] Error 2
make: *** [libs] Error 2

Muro.

@jdahlin
Copy link
Author

jdahlin commented Jun 27, 2013

Vendo os problemas compilando ele aqui:
http://stackoverflow.com/questions/4733108/how-do-i-build-python-nss-and-nss-for-mac-os-x

Parece que ninguém nunca realmente tentou.

A outra possibilidade de usar o stack nativo de http do mac, junto com OpenSC:

http://stackoverflow.com/questions/7221699/how-to-load-user-css-in-a-webkit-webview-using-pyobjc

Bom, alguém com muita paciência e acesso para um certificado A3 teria que testar :)

@alanjds
Copy link
Collaborator

alanjds commented Jun 27, 2013

Tecnicamente, meu Mac não é melhor para fazer esses testes, já que ele é i386 apenas, e a maioria ou é x86_64 ou x86_64/i386. Como tem uma "receita" no brew pra esse pacote, estou supondo que o problema sou eu, não a receita, já que foi assim das últimas vezes.

Alguém que tenha um Mac um pouco mais novo teria que tentar instalar o pacote, via brew mesmo.

danimaribeiro added a commit to Trust-Code/PySPED that referenced this issue Dec 7, 2015
…g_pysped

[FIX] Correção de problema com unicode ao valida NF-e
@lucasm310
Copy link

Pensando em aplicação web, rodando no browser ninguém testou acessar o repositório de certificados do próprio browser ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants