Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2010
osmuar_exp osmuar_exp is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
osmuar_exp Va por buen camino
Error en key:=ReadPrivateKey(llaveprivada);

Buenas tardes, andamos en la mismas con la factura electrónica, ya pasé la validación de la factura en el validador de hacienda factura estilo
Cita:
"uamero"
, el problema que se me presenta es el siguiente:

Tengo una cadena original "grande" y me marca el error en la funcion
Código:
ReadPrivateKey
, Funcion:
Código PHP:
function ReadPrivateKey(AFileNamestring): pEVP_PKEY
  var 
keyfilepBIO;     
  
mx pEVP_PKey;  
 
begin     
   keyfile 
:= BIO_new(BIO_s_file());   
   
mx := nil;       
   
BIO_read_filename(keyfile,PChar(AFilename));     
   
result := PEM_read_bio_PrivateKey(keyfile,mx,nil,nil); 
end
Error:
Cita:
error:00000000:lib(0):func(0):reason(0)
me marca error en el begin antes de acceder al la primera linea de la funcion...
les dejo la cadena por si alguien quiere hacer la prueba y si ya encontrarón una solución me harian un gran favor si la postean...
Nota: Ya descargue la nueva version de la libreria OpenSSL junto con el Microsoft Visual C++ 2008 Redistributable y ni asi.
Nota: Si a la siguiente cadena le quito nose algunos 7 u 8 conceptos no me marca el error, entonces por ahi viene el error en la longitud de la cadena :S.
Gracias...

Cadena Original: Es de prueba
Cita:
||2.0|FE|313|2010-04-22T16:45:42|38843|2008|ingreso|Pago en una sola exhibicion|760.00|881.60|EXP010829R48|MI EMPRESA SA DE CV|AV. MEXICO|30|NUEVO PROGRESO|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|64000|MEXICO|AGA152156DD5|AGROPECUARIA EL AVION|AV. CONSTITUCION|626|CD INDUSTRIAL|GUADALAJARA|JALISCO|MEXICO|64000|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|IVA|16|121.60|121.60||
Responder Con Cita
  #2  
Antiguo 23-04-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Smile Agradecimiento

Muchas Gracias.

Última edición por nejamube fecha: 03-05-2010 a las 20:02:42. Razón: Agradecimiento
Responder Con Cita
  #3  
Antiguo 23-04-2010
osmuar_exp osmuar_exp is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
osmuar_exp Va por buen camino
RE: Sello digital alterado

Cita:
Empezado por nejamube Ver Mensaje
Hola, el validador siempre me marca que el sello digital es invalido, que pudo ser alterado.


Adjunto la cadena original y el CFD en formato XML.

Los estoy validando en :



¿La cadena original esta correcta ?

Es lo unico que creo que puede alterar el sello esperado por el SAT.

Gracias.

Hola, fijate que ami me pasaba lo mismo, el sello digital era invalido, intenta buscar dentro de tu cadena de sello saltos de linea, etc,,,aparte debes estar seguro de que el certificado (no autorizacion, año de autorizacion y no certificado) sean los correctos., con eso ami me soluciono el problema, saludos...

Código Delphi [-]
memo.Lines.clear;
memo.lines.add(SelloDigital(ruta_llave,CalculaCadenaOriginal(1)));
memo.Text := AnsiReplaceStr(memo.Text,#8,'');          
memo.Text := AnsiReplaceStr(memo.Text,#10,'');
memo.Text := AnsiReplaceStr(memo.Text,#13,'');
memo.Text := AnsiReplaceStr(memo.Text,'  ','');
sello:=memo.text;

Última edición por osmuar_exp fecha: 23-04-2010 a las 02:59:50. Razón: Formato de código
Responder Con Cita
  #4  
Antiguo 14-05-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 22
jourdan Va por buen camino
Cita:
Empezado por osmuar_exp Ver Mensaje
Hola, fijate que ami me pasaba lo mismo, el sello digital era invalido, intenta buscar dentro de tu cadena de sello saltos de linea, etc,,,aparte debes estar seguro de que el certificado (no autorizacion, año de autorizacion y no certificado) sean los correctos., con eso ami me soluciono el problema, saludos...
Hola, una pregunta, estoy casi seguro que estoy haciendo todo bien ya que el revisado la cadena original muchas veces, etc. estoy usando el active x de chilkat pero no logo validar el archivo en la ágina del sat, la pregunta es: tu pediste al sat folios reales y con esos archivos pudiste pasar las pruebas.
Con la llave privada, el certificado y la constraseña que da el sat para hacer pruebas no he logrado validar y no se si sea porque no cuento con el numero de autorización, ya que en año de autorizacion puese 2008 y el No. de certificado lo saque del mismo resultado del validador, alguien me puede ayudar. Muchas gracias
__________________
Alejandro Jourdan
Responder Con Cita
  #5  
Antiguo 23-04-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Red face Agradecimiento

Muchas gracias.

Última edición por nejamube fecha: 03-05-2010 a las 20:03:24. Razón: Duplicado.
Responder Con Cita
  #6  
Antiguo 23-04-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Wink Agradecimiento

Muchas gracias.

Última edición por nejamube fecha: 03-05-2010 a las 20:03:52. Razón: Agradecimiento
Responder Con Cita
  #7  
Antiguo 23-04-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Lightbulb

Corregido.

Última edición por nejamube fecha: 25-04-2010 a las 20:19:01.
Responder Con Cita
  #8  
Antiguo 23-04-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Muchas gracias.

Última edición por nejamube fecha: 03-05-2010 a las 19:59:43.
Responder Con Cita
  #9  
Antiguo 23-04-2010
mesquivelh mesquivelh is offline
Registrado
 
Registrado: may 2006
Posts: 7
Poder: 0
mesquivelh Va por buen camino
Muchas Gracias felipep, quité el UTF8Encode y ya sale bien mi cadena original.

Por otro lado, me puedes indicar la sintaxis en delphi para los comandos:

openssl pkcs8 -inform DER -in AAA010101AAA_Test.key -out AAA010101AAA.key.pem
openssl x509 -inform DER -in AAA010101AAA_Test.cer -out AAA010101AAA.cer.pem

Quiero incluir la conversion a PEM en la unidad que subiste (Sello.pas) que estoy usando en mi proyecto

Nuevamente muchas gracias me has ayudado mucho.
Responder Con Cita
  #10  
Antiguo 25-04-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
yo ya me perdi

¡¿son diferentes la FEA. Firma Electronica Avanzada, existe ya no existe?
¿Comprobante digital.?
como n estoy dado de alta, no se como comprobar que mi factura este bien.
quiero hacer un software para hacer facturas electronicas.

sigo revisando.
Responder Con Cita
  #11  
Antiguo 26-04-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 22
jourdan Va por buen camino
La FEA y Firma electronica avanzada es lo mismo y te sirve entre otras cosas para solicitar los folios que vas a usar para elaborar tus comprobantes fiscales digitales
Saludos
__________________
Alejandro Jourdan
Responder Con Cita
  #12  
Antiguo 06-05-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por JXJ Ver Mensaje
yo ya me perdi

¡¿son diferentes la FEA. Firma Electronica Avanzada, existe ya no existe?
¿Comprobante digital.?
como n estoy dado de alta, no se como comprobar que mi factura este bien.
quiero hacer un software para hacer facturas electronicas.

sigo revisando.
La FEA y la FIEL son lo mismo, solo le cambiaron de nombre, como cuando cambiaron la "CIE" (Clave de identificacion electronica) por la "CIEF" (clave de identificacion electronica fuerte)

No es necesario estar dado de alta para programar la factura electronica, el SAT ofrece certificados de prueba con sus respectivas llaves para que los desarrolladores puedan hacer pruebas.
Responder Con Cita
  #13  
Antiguo 05-05-2010
joaquin123 joaquin123 is offline
Registrado
 
Registrado: dic 2004
Posts: 2
Poder: 0
joaquin123 Va por buen camino
Obtener Datos de Certificado

Espero no estar violando las reglas he obtenido nucha ayuda aqui, fui un usuario del foro en la epoca 1993-1997 ....

En esta unidad viene como obtener los datos del certificado.. usando como base unidad sello.pas y esta de aqui. (gettime esta en OpenSSLUtils.pas)
( No puedo subir el enlace, buscarla en google )
function GetInicioVigencia(const AFileName: string): TdateTime;
var
bp: pBIO;
fn: PAnsiChar;
x: pX509;
x509: pX509;
Fecha:TDateTime;
begin
InitOpenSSL;
fn := PAnsiChar(ansistring(AFileName));
bp := BIO_new(BIO_s_file());
BIO_read_filename(bp, fn);
x := X509_new;
x509 := PEM_read_bio_X509(bp, x, nil, nil);
Fecha:=getTime(X509_get_notBefore(x509));
X509_free(x509);
BIO_free(bp);
Result := Fecha;
EVP_cleanup;
end;

Gracias, Saludos desde Tijuana B.C. Mexico
Responder Con Cita
  #14  
Antiguo 05-05-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por joaquin123 Ver Mensaje
Espero no estar violando las reglas he obtenido nucha ayuda aqui, fui un usuario del foro en la epoca 1993-1997 ....
Pues así, a primera vista, no parece que incumplas nada. De todas formas, te lees la Guía de estilo y Santas Pascuas.

Y re-bienvenido, Joaquín.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #15  
Antiguo 05-05-2010
ifarias ifarias is offline
Miembro
 
Registrado: sep 2004
Posts: 23
Poder: 0
ifarias Va por buen camino
Alguien de ustedes save para que sirve el password que proporciona el SAT junto con el Certificado y la Llave ???
Responder Con Cita
  #16  
Antiguo 05-05-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Pues así, a bulto, diría que para autentificar el producto o el servicio...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #17  
Antiguo 06-05-2010
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Cita:
Empezado por ifarias Ver Mensaje
Alguien de ustedes save para que sirve el password que proporciona el SAT junto con el Certificado y la Llave ???
Así a grandes rasgos, el password te sirve para desencriptar la llave... y la llave te sirve para abrir el certificado.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #18  
Antiguo 06-05-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por nuk3zito Ver Mensaje
Así a grandes rasgos, el password te sirve para desencriptar la llave... y la llave te sirve para abrir el certificado.
Solo quisiera aclarar este dato y es que considero que tratandose de SISTEMAS DE SEGURIDAD hay que saber bien que es que.

Es correcto, la clave (de 8 digitos o mas) que uno proporciona sirve para abrir la llave privada (esto es, el archivo que tiene extension *.key).

Esta llave privada (*.key) es la que se usa para sellar cualquier documento digase factura electronica o cualquier otra cosa. Este archivo DEBEN GUARDARLO MUY BIEN, es super privado.

El Certificado (archivo con extension *.cer) SE ABRE SIN NECESIDAD DE CLAVES NI NADA, es mas, si le dan doble clic podran ver que Windows abre el certificado y les muestra mucha informacion interesante.

El CERTIFICADO ES PUBLICO, pueden darselo a quien lo solicite, lo unico que viene dentro del certificado son : fechas de vigencia, el emisor, la empresa a la que se le otorgo y la LLAVE PUBLICA.

Dentro del CERTIFICADO PUBLICO esta la LLAVE PUBLICA, esta SOLO SIRVE para verificar que la cadena origial y el sello "empaten".

Espero no haberlos hecho mas bolas.....
Responder Con Cita
  #19  
Antiguo 06-05-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por osmuar_exp Ver Mensaje
Buenas tardes, andamos en la mismas con la factura electrónica, ya pasé la validación de la factura en el validador de hacienda factura estilo , el problema que se me presenta es el siguiente:

Tengo una cadena original "grande" y me marca el error en la funcion
Código:
ReadPrivateKey
, Funcion:
Código PHP:
function ReadPrivateKey(AFileNamestring): pEVP_PKEY
  var 
keyfilepBIO;     
  
mx pEVP_PKey;  
 
begin     
   keyfile 
:= BIO_new(BIO_s_file());   
   
mx := nil;       
   
BIO_read_filename(keyfile,PChar(AFilename));     
   
result := PEM_read_bio_PrivateKey(keyfile,mx,nil,nil); 
end
Error:
me marca error en el begin antes de acceder al la primera linea de la funcion...
les dejo la cadena por si alguien quiere hacer la prueba y si ya encontrarón una solución me harian un gran favor si la postean...
Nota: Ya descargue la nueva version de la libreria OpenSSL junto con el Microsoft Visual C++ 2008 Redistributable y ni asi.
Nota: Si a la siguiente cadena le quito nose algunos 7 u 8 conceptos no me marca el error, entonces por ahi viene el error en la longitud de la cadena :S.
Gracias...

Cadena Original: Es de prueba
Si hay un bug en la rutina del sello. Solo tienes que hacer el buffer mas grande, quedaria asi :

Código Delphi [-]
function CalculaSello(llaveprivada,cadenaoriginal: string): string;
var inbuf: array [0..8192] of char; //AQUI AUMENTAMOS EL BUFFER PARA PASAR CADENAS MAS GRANDES
 outbuf: array [0..1024] of char;
 key: pEVP_PKEY;
 mdctx: EVP_MD_CTX;
 Len: cardinal;
begin
 StrPCopy(inbuf,cadenaoriginal);
 key := ReadPrivateKey(llaveprivada);
 EVP_SignInit(@mdctx,EVP_md5());
 EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
 EVP_SignFinal(@mdctx,@outbuf,Len,key);
 result := BinToBase64(@outbuf,Len);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico - Como crear sellos en FACTURA ELECTRONICA.. pcicom API de Windows 12 10-11-2012 18:46:55
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15


La franja horaria es GMT +2. Ahora son las 20:41:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi