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

WSAA Python3 UTF-8 Encoding #46

Open
wants to merge 5 commits into
base: py3k
Choose a base branch
from
Open

Conversation

urbinacity
Copy link

Para corregir excepciones de Python3 por encodings (TypeError y AttributeError) se les añadio encode('utf8') o decode('utf8') a las llamadas a funciones:

  • BIO.MemoryBuffer
  • email.message_from_string

Además el archivo wsaa.py ahora tiene codificación utf8 y los espacios en blancos fueron removidos

@reingart
Copy link
Owner

Gracias por el aporte @urbina05 !

Consultas:

  • Al cambiar el método SignTRA, no está fallando el tema de encoding en sing_tra cuando no está instalado M2Crypto? (BIO = False)
  • ¿Que paquete / repo / branch estarías usando para M2Crypto en python 3?
  • ¿El código comentado en WebClient.__call__ funciona en todos los casos?

Si puedo mañana lo pruebo (y recorro los tests para ver en que estado están); sería útil si alguien más puede revisarlo antes del merge.

@urbinacity
Copy link
Author

De nada, estos cambios me salvaron de una.

Te respondo en orden:

  • Seguramente sí, no probé desinstalar M2Crypto: es uno de los requisitos.

  • M2Cryto ya está compatible con Python 3, asegurate de instalar usando pip3 https://pypi.org/project/M2Crypto/

  • No comenté/utilicé ese código, ¿a cual te referís?

bio = BIO.MemoryBuffer(cert)
x509 = X509.load_cert_bio(bio, X509.FORMAT_DER)
bio = BIO.MemoryBuffer(cert.encode('utf8'))
x509 = X511.load_cert_bio(bio, X509.FORMAT_DER)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sin entender mucho esto es lo único que me llama la atención, el cambio de 509 a 511

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Buena observación, posiblemente es un error de tipeo, debería ser X509, que es el nombre que está importado (y debería estar funcionando en otra linea más abajo para los casos normales).

Para probarlo, habría que pasar un certificado en binario, llamando al método AnalizarCertificado(crt, binary=True)

@jjscarafia
Copy link
Contributor

Lo probé en local y me funcionó perfecto con este PR e instalando M2Crypto con "pip3 install M2Crypto".
No estoy muy seguro de como probarlo sin el M2Crypto, por lo cual esa prueba estaría pendiente

@reingart
Copy link
Owner

@jjscarafia para probarlo sin M2Crypto habría que desinstalar ese paquete o saltear el import en wsaa.py:30

raise ImportError
from M2Crypto import BIO, Rand, SMIME, SSL

@urbina05 ahi hice el comentario en la parte que está comentada en WebClient (punto 3)

Habría que revisar la cobertura de los tests, porque puede haber algunas partes del código que no se usen frecuentemente, dependan del sistema operativo, etc..

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

Successfully merging this pull request may close these issues.

3 participants