m2crypto_test.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import sys
  2. import os
  3. import time
  4. import cgi
  5. # import urllib # urlparse
  6. import platform
  7. import keyring
  8. from M2Crypto import m2urllib2
  9. from M2Crypto import m2, SSL, Engine
  10. user_pin = keyring.get_password('sig', 'token')
  11. theurl = 'https://webserviced.anaf.ro/SPVWS2/rest/listaMesaje?zile=5'
  12. if platform.system() == 'Windows':
  13. pkcs_engine_path = 'C:/Windows/SysWOW64/pkcs11.dll'
  14. root_certs_path = 'C:/Users/Levi/git/m2Crypto_test/certsign/root2.crt'
  15. elif platform.system() == 'Linux':
  16. pkcs_engine_path = '/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so'
  17. root_certs_path = '/home/deeejas/git/m2Crypto_test/certsign/root2.crt'
  18. # load dynamic engine
  19. engine = Engine.load_dynamic_engine('pkcs11', pkcs_engine_path)
  20. pk = Engine.Engine('pkcs11')
  21. pk.ctrl_cmd_string('MODULE_PATH', os.getenv('PKCS11_MODULE'))
  22. # pk.ctrl_cmd_string('SO_PATH', os.getenv('PKCS11_MODULE'))
  23. # m2.lib_init()
  24. if len(user_pin) > 0:
  25. pk.ctrl_cmd_string('PIN', user_pin)
  26. m2.engine_init(m2.engine_by_id('pkcs11'))
  27. # grab pkey and cert from smartcard
  28. key = pk.load_private_key('slot_0')
  29. cert = pk.load_certificate('slot_0')
  30. # print(cert.get_issuer())
  31. # print(key)
  32. # create context
  33. ssl_context = SSL.Context('sslv23')
  34. ssl_context.set_cipher_list('HIGH:!aNULL:!eNULL:@STRENGTH')
  35. ssl_context.set_session_id_ctx(b'https://webserviced.anaf.ro/')
  36. m2.ssl_ctx_use_pkey_privkey(ssl_context.ctx, key.pkey)
  37. m2.ssl_ctx_use_x509(ssl_context.ctx, cert.x509)
  38. ssl_context.load_verify_locations(cafile=root_certs_path)
  39. opener = m2urllib2.build_opener(ssl_context)
  40. m2urllib2.install_opener(opener)
  41. req = m2urllib2.Request(theurl)
  42. res = m2urllib2.urlopen(req)
  43. print(res.read())