Refactory upload certificates

This commit is contained in:
Mauricio Baeza 2020-12-31 00:01:41 -06:00
parent 85c5a37798
commit d8ecae2c8f
5 changed files with 43 additions and 96 deletions

View File

@ -35,6 +35,7 @@ class SATCertificate(object):
self._is_fiel = False
self._are_couple = False
self._is_valid_time = False
self._cer = b''
self._cer_pem = ''
self._cer_txt = ''
self._key_enc = b''
@ -64,6 +65,7 @@ class SATCertificate(object):
return digest.finalize()
def _get_data_cer(self, cer):
self._cer = cer
obj = x509.load_der_x509_certificate(cer, default_backend())
self._rfc = obj.subject.get_attributes_for_oid(
NameOID.X500_UNIQUE_IDENTIFIER)[0].value.split(' ')[0]
@ -182,6 +184,10 @@ class SATCertificate(object):
def is_valid_time(self):
return self._is_valid_time
@property
def cer(self):
return self._cer
@property
def cer_pem(self):
return self._cer_pem.encode()

View File

@ -619,17 +619,9 @@ def get_client_balance(auth):
def get_cert(args):
p1 = '/home/mau/Desktop/Pruebas_EKU9003173C9/file.cer'
cer = args['cer']
# ~ cer = cer.encode()
# ~ cer = base64.b64decode(args['cer'].encode())
with open(p1, 'w') as f:
f.write(cer)
# ~ cer = base64.b64decode(args['cer'].encode())
print('TYPE', type(cer))
# ~ print(cer)
# ~ key = base64.b64decode(args['key'].encode())
# ~ cert = SATCertificate(cer, key, args['contra'])
return
cer = base64.b64decode(args['cer'].split(',')[1])
key = base64.b64decode(args['key'].split(',')[1])
cert = SATCertificate(cer, key, args['contra'])
return cert

View File

@ -1181,10 +1181,36 @@ class Certificado(BaseModel):
return getattr(cls, f'_get_{opt}')(values)
@classmethod
def _validate(cls, args):
def _validate_cert(cls, args):
msg = 'Certificado guardado correctamente'
result = {'ok': True, 'msg': msg, 'data': {}}
cert = utils.get_cert(args)
print(cert)
return {'ok': False, 'msg': 'error', 'data': {}}
if not cert.is_valid:
result['ok'] = False
result['msg'] = cert.error
return result
obj = Certificado.get(Certificado.es_fiel==False)
if obj.rfc != cert.rfc:
result['ok'] = False
result['msg'] = 'El RFC del certificado no corresponde.'
return result
obj.key_enc = cert.key_enc
obj.cer = cert.cer
obj.serie = cert.serial_number
obj.desde = cert.not_before
obj.hasta = cert.not_after
obj.save()
data = {
'cert_rfc': obj.rfc,
'cert_serie': obj.serie,
'cert_desde': obj.desde,
'cert_hasta': obj.hasta,
}
result['data'] = data
return result
@classmethod
def post(cls, values):
@ -1198,16 +1224,6 @@ class Certificado(BaseModel):
def get_(cls):
return Certificado.select()[0]
@classmethod
def add(cls, file_obj):
if file_obj.filename.endswith('key'):
path_key = util.save_temp(file_obj.file.read())
Configuracion.add({'path_key': path_key})
elif file_obj.filename.endswith('cer'):
path_cer = util.save_temp(file_obj.file.read())
Configuracion.add({'path_cer': path_cer})
return {'status': 'server'}
@classmethod
def validate(cls, values, session):
row = {}

View File

@ -2651,34 +2651,6 @@ function cmd_subir_certificado_click(){
return
}
//~ if($$('lst_cert').count() < 2){
//~ msg = 'Selecciona al menos dos archivos: CER y KEY del certificado.'
//~ msg_error(msg)
//~ return
//~ }
//~ if($$('lst_cert').count() > 2){
//~ msg = 'Selecciona solo dos archivos: CER y KEY del certificado.'
//~ msg_error(msg)
//~ return
//~ }
//~ var fo1 = $$('up_cert').files.getItem($$('up_cert').files.getFirstId())
//~ var fo2 = $$('up_cert').files.getItem($$('up_cert').files.getLastId())
//~ var ext = ['key', 'cer']
//~ if(ext.indexOf(fo1.type.toLowerCase()) == -1 || ext.indexOf(fo2.type.toLowerCase()) == -1){
//~ msg = 'Archivos inválidos, se requiere un archivo CER y un KEY.'
//~ msg_error(msg)
//~ return
//~ }
//~ if(fo1.type == fo2.type && fo1.size == fo2.size){
//~ msg = 'Selecciona archivos diferentes: un archivo CER y un KEY.'
//~ msg_error(msg)
//~ return
//~ }
var serie = $$('form_cert').getValues()['cert_serie']
if(serie){
@ -2697,13 +2669,6 @@ function cmd_subir_certificado_click(){
})
}
//~ if (fo1.type.toLowerCase()=='cer'){
//~ values['cer'] = fo1.file
//~ values['key'] = fo2.file
//~ } else {
//~ values['key'] = fo1.file
//~ values['cer'] = fo2.file
//~ }
$$('form_upload').setValues({})
$$('up_cert').files.data.clearAll()
@ -2740,12 +2705,12 @@ function up_cert_before_file_add(file){
reader.addEventListener('load', (event) => {
file_cer = event.target.result;
});
reader.readAsBinaryString(file.file);
reader.readAsDataURL(file.file);
} else {
reader.addEventListener('load', (event) => {
file_key = event.target.result;
});
reader.readAsBinaryString(file.file);
reader.readAsDataURL(file.file);
}
}
@ -2754,7 +2719,7 @@ function validate_cert(values){
msg = 'Archivos recibidos correctamente. Esperando validación'
msg_ok(msg)
values['opt'] = 'validate'
values['opt'] = 'validate_cert'
webix.ajax().post('/cert', values, {
error:function(text, data, XmlHttpRequest){
msg = 'Ocurrio un error, consulta a soporte técnico'
@ -2772,35 +2737,3 @@ function validate_cert(values){
})
}
//~ function up_cert_upload_complete(response){
//~ if(response.status != 'server'){
//~ msg = 'Ocurrio un error al subir los archivos'
//~ msg_error(msg)
//~ return
//~ }
//~ msg = 'Archivos subidos correctamente. Esperando validación'
//~ msg_ok(msg)
//~ var values = $$('form_upload').getValues()
//~ $$('form_upload').setValues({})
//~ $$('up_cert').files.data.clearAll()
//~ values['opt'] = 'validate'
//~ webix.ajax().post('/cert', values, {
//~ error:function(text, data, XmlHttpRequest){
//~ msg = 'Ocurrio un error, consulta a soporte técnico'
//~ msg_error(msg)
//~ },
//~ success:function(text, data, XmlHttpRequest){
//~ var values = data.json()
//~ if(values.ok){
//~ $$('form_cert').setValues(values.data)
//~ msg_ok(values.msg)
//~ }else{
//~ msg_error(values.msg)
//~ }
//~ }
//~ })
//~ }

View File

@ -292,7 +292,7 @@ var emisor_certificado = [
{view: 'list', id: 'lst_cert', name: 'certificado',
type: 'uploader', autoheight:true, borderless: true}, {}]},
{cols: [{},
{view: 'text', id: 'txt_contra', name: 'contra', value: '12345678a',
{view: 'text', id: 'txt_contra', name: 'contra',
label: 'Contraseña KEY', labelPosition: 'top',
labelAlign: 'center', type: 'password', required: true}, {}]},
{cols: [{}, {view: 'button', id: 'cmd_subir_certificado',