Permalink
Browse files

BUGFIX: Se corrigio bug que impedia lanzar las excepciones correctas …

…segun el tipo de falla. Closes GH-6
  • Loading branch information...
1 parent 20e1d1c commit 70b1ee6f43615afc3bb7f188c722a9f59b23fdf2 @lcarrasco lcarrasco committed Dec 8, 2010
Showing with 23 additions and 23 deletions.
  1. +15 −15 ClaseOpenSSL.pas
  2. +6 −6 ComprobanteFiscal.pas
  3. +1 −1 Pruebas/TestClaseOpenSSL.pas
  4. +1 −1 Pruebas/TestComprobanteFiscal.pas
View
@@ -26,12 +26,12 @@ interface
{$IFEND}
TTipoDigestionOpenSSL = (tdMD5, tdSHA1);
- TNoExisteArchivoException = Exception;
- TCertificadoLlaveEsFiel = Exception;
- TLlaveFormatoIncorrectoException = Exception;
- TLlaveLecturaException = Exception;
- TLlavePrivadaClaveIncorrectaException = Exception;
- TLlavePareceSerFiel = Exception;
+ ENoExisteArchivoException = class(Exception);
+ ECertificadoLlaveEsFiel = class(Exception);
+ ELlaveFormatoIncorrectoException = class(Exception);
+ ELlaveLecturaException = class(Exception);
+ ELlavePrivadaClaveIncorrectaException = class(Exception);
+ ELlavePareceSerFiel = class(Exception);
///<summary>Clase que representa a la liberia OpenSSL y que tiene
/// metodos usados para generar el sello digital (digestion md5) y
@@ -162,11 +162,11 @@ function TOpenSSL.AbrirLlavePrivada(Ruta, ClaveLlavePrivada : String) : pPKCS8_P
bioArchivoLlave := BIO_new(BIO_s_file());
if Not FileExists(Ruta) then
- Raise TNoExisteArchivoException.Create('El archivo de llave privada no existe.');
+ Raise ENoExisteArchivoException.Create('El archivo de llave privada no existe.');
// Checamos que la extension de la llave privada sea la correcta
if AnsiPos('.PEM', Uppercase(Ruta)) > 0 then
- Raise TLlaveFormatoIncorrectoException.Create('La llave privada debe de ser el archivo binario (.key, .cer) y ' +
+ Raise ELlaveFormatoIncorrectoException.Create('La llave privada debe de ser el archivo binario (.key, .cer) y ' +
'no el formato base64 .pem');
// Leemos el archivo de llave binario en el objeto creado en memoria
@@ -176,12 +176,12 @@ function TOpenSSL.AbrirLlavePrivada(Ruta, ClaveLlavePrivada : String) : pPKCS8_P
{$ELSE}
if BIO_read_filename(bioArchivoLlave, PChar(AnsiString(Ruta))) = 0 then
{$IFEND}
- raise TLlaveLecturaException.Create('Error al leer llave privada. Error reportado: '+
+ raise ELlaveLecturaException.Create('Error al leer llave privada. Error reportado: '+
ObtenerUltimoMensajeDeError);
// Checamos que la clave no esté vacia
if Trim(ClaveLlavePrivada) = '' then
- raise TLlavePrivadaClaveIncorrectaException.Create('La clave de la llave privada esta vacia');
+ raise ELlavePrivadaClaveIncorrectaException.Create('La clave de la llave privada esta vacia');
// Convertimos al tipo adecuado de acuerdo a la version de Delphi...
{$IF CompilerVersion >= 20}
@@ -198,7 +198,7 @@ function TOpenSSL.AbrirLlavePrivada(Ruta, ClaveLlavePrivada : String) : pPKCS8_P
// Leemos la llave en formato binario (PKCS8)
p8 := d2i_PKCS8_bio(bioArchivoLlave, nil);
if not Assigned(p8) then
- raise TLlaveLecturaException.Create('Error al leer llave privada. Error reportado: '+
+ raise ELlaveLecturaException.Create('Error al leer llave privada. Error reportado: '+
ObtenerUltimoMensajeDeError);
// Des encriptamos la llave en memoria usando la clave proporcionada
@@ -212,12 +212,12 @@ function TOpenSSL.AbrirLlavePrivada(Ruta, ClaveLlavePrivada : String) : pPKCS8_P
if ((AnsiPos('cipherfinal error', sMsgErr) > 0) or // clave incorrecta
(AnsiPos('bad decrypt', sMsgErr) > 0)) // clave incorrecta
then
- raise TLlavePrivadaClaveIncorrectaException.Create('La clave de la llave privada fue incorrecta')
+ raise ELlavePrivadaClaveIncorrectaException.Create('La clave de la llave privada fue incorrecta')
else
if (AnsiPos('unknown pbe algorithm', sMsgErr) > 0) then // Clave vacia o pertenece a la FIEL
- Raise TLlavePareceSerFiel.Create('Al parecer la llave privada pertenece a la FIEL')
+ Raise ELlavePareceSerFiel.Create('Al parecer la llave privada pertenece a la FIEL')
else
- raise TLlaveLecturaException.Create('Error desconocido al desencriptar llave privada. Error reportado: '+
+ raise ELlaveLecturaException.Create('Error desconocido al desencriptar llave privada. Error reportado: '+
ObtenerUltimoMensajeDeError);
// Nos estan dando un certificado de la FIEL??
@@ -309,7 +309,7 @@ function TOpenSSL.HacerDigestion(ArchivoLlavePrivada, ClaveLlavePrivada: String;
StrPLCopy(inbuf, sCadena, Tam); // Copiamos la cadena original al buffer de entrada
if not Assigned(ekLlavePrivada) then
- Raise TLlaveLecturaException.Create('No fue posible leer la llave privada');
+ Raise ELlaveLecturaException.Create('No fue posible leer la llave privada');
// Establecemos el tipo de digestion a realizar
case trTipo of
View
@@ -26,9 +26,9 @@ interface
type
// Excepciones que pueden ser generadas
- TFECertificadoNoExisteException = Exception;
- TFECertificadoNoVigente = Exception;
- TFEFolioFueraDeRango = Exception;
+ EFECertificadoNoExisteException = class(Exception);
+ EFECertificadoNoVigente = class(Exception);
+ EFEFolioFueraDeRango = class(Exception);
/// <summary>Representa la estructura de comprobante fiscal digital (ver2.0) y sus elementos
/// definidos de acuerdo al XSD del SAT. Esta pensado para ser extendido en las versiones
@@ -613,7 +613,7 @@ procedure TFEComprobanteFiscal.setCertificado(Certificado: TFECertificado);
x509Certificado := TX509Certificate.Create;
try
if Not FileExists(Certificado.Ruta) then
- raise TFECertificadoNoExisteException.Create('No existe el archivo del certificado')
+ raise EFECertificadoNoExisteException.Create('No existe el archivo del certificado')
else
x509Certificado.LoadFromFile(Certificado.Ruta);
@@ -623,7 +623,7 @@ procedure TFEComprobanteFiscal.setCertificado(Certificado: TFECertificado);
// Checamos que el certificado este dentro de la vigencia
if Not((Now >= fCertificado.VigenciaInicio) and (Now <= fCertificado.VigenciaFin)) then
- raise TFECertificadoNoVigente.Create('El certificado no tiene vigencia actual');
+ raise EFECertificadoNoVigente.Create('El certificado no tiene vigencia actual');
fCertificado.NumeroSerie := x509Certificado.SerialNumber;
@@ -709,7 +709,7 @@ procedure TFEComprobanteFiscal.ValidarQueFolioEsteEnRango;
if ((fBloqueFolios.FolioInicial > -1) And (fFolio > -1)) then
begin
if Not((Folio >= fBloqueFolios.FolioInicial) And (Folio <= fBloqueFolios.FolioFinal)) then
- raise TFEFolioFueraDeRango.Create('El folio se encuentra fuera del rango autorizado');
+ raise EFEFolioFueraDeRango.Create('El folio se encuentra fuera del rango autorizado');
end;
end;
@@ -156,7 +156,7 @@ procedure TestTOpenSSL.HacerDigestion_ConClaveIncorrecta_CauseExcepcion;
try
fOpenSSL2.HacerDigestion(fArchivoLlavePrivada, 'claveincorrectaintencional', 'Cadena', tdMD5);
except
- On E: TLlavePrivadaClaveIncorrectaException do
+ On E: ELlavePrivadaClaveIncorrectaException do
begin
bExcepcionLanzada := True;
end;
@@ -118,7 +118,7 @@ procedure TestTFEComprobanteFiscal.setBloqueFolios_FolioFueraDeRango_CauseExcepc
try
fComprobanteFiscal.BloqueFolios := Bloque;
except
- On TFEFolioFueraDeRango do
+ On EFEFolioFueraDeRango do
bHuboError := True;
end;

0 comments on commit 70b1ee6

Please sign in to comment.