diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 76a007d..39a54e9 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -331,7 +331,8 @@ class Certificado(object): result = _call(args.format(self._path_cer, 'serial')) serie = result.split('=')[1].split('\n')[0][1::2] result = _call(args.format(self._path_cer, 'subject')) - rfc = result.split('=')[5].split('/')[0].strip() + #~ rfc = result.split('=')[5].split('/')[0].strip() + rfc = result.split('x500UniqueIdentifier = ')[1][:13].strip() if not DEBUG: if not rfc == session_rfc: @@ -359,14 +360,12 @@ class Certificado(object): args = 'openssl x509 -inform DER -in "{}" -out "{}"' _call(args.format(self._path_cer, tmp_cer)) - args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:{} -out "{}"' + args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:"{}" -out "{}"' _call(args.format(self._path_key, password, tmp_key)) - args = 'openssl pkcs12 -export -in "{}" -inkey "{}" -name "{}" -passout ' \ - 'pass:"{}" -out "{}"' - _call(args.format(tmp_cer, tmp_key, rfc, - hashlib.md5(rfc.encode()).hexdigest(), tmp_p12)) - #~ data = open(tmp_p12, 'rb').read() + args = 'openssl pkcs12 -export -in "{}" -inkey "{}" -name "{}" ' \ + '-passout pass:"{}" -out "{}"' + _call(args.format(tmp_cer, tmp_key, rfc, _get_md5(rfc), tmp_p12)) data = read_file(tmp_p12) self._kill(tmp_cer) @@ -378,14 +377,14 @@ class Certificado(object): def _get_info_key(self, password, rfc): data = {} - args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:{}' + args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:"{}"' try: result = _call(args.format(self._path_key, password)) except Exception as e: self.error = 'ContraseƱa incorrecta' return data - args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:{} | ' \ + args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:"{}" | ' \ 'openssl rsa -noout -modulus' mod_key = _call(args.format(self._path_key, password)) @@ -393,8 +392,8 @@ class Certificado(object): self.error = 'Los archivos no son pareja' return data - args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:{} | ' \ - 'openssl rsa -des3 -passout pass:{}'.format( + args = 'openssl pkcs8 -inform DER -in "{}" -passin pass:"{}" | ' \ + 'openssl rsa -des3 -passout pass:"{}"'.format( self._path_key, password, _get_md5(rfc)) key_enc = _call(args) @@ -442,7 +441,7 @@ def make_xml(data, certificado): 'pass': _get_md5(certificado.rfc) } args = '"{xsltproc}" "{xslt}" "{xml}" | ' \ - '"{openssl}" dgst -sha256 -sign "{key}" -passin pass:{pass} | ' \ + '"{openssl}" dgst -sha256 -sign "{key}" -passin pass:"{pass}" | ' \ '"{openssl}" enc -base64 -A'.format(**data) sello = _call(args)