Dear User Support Mailing List <openssl-users@openssl.org>
In order to be able to fulfill the fiscal
legislation in Mexico, I am developing a system to obtain electronic invoices,
but up to here I have been able to advance without being able to follow ahead. For this reason I ask for your aid.
In the last line of this DOS code, you will see that the message is "unable to load key file".
I do not know why and I cannot finish the process of verification of the seal. Could you help me to resolve it?
but up to here I have been able to advance without being able to follow ahead. For this reason I ask for your aid.
In the last line of this DOS code, you will see that the message is "unable to load key file".
I do not know why and I cannot finish the process of verification of the seal. Could you help me to resolve it?
I appreciate your
attention,
Ing. Ricardo Manuel
Alzaga Chirino
Mexico
City
Files I send:
AAA010101AAA_0408021316S.key Private key file in (PKCS#8 format key/DER encoded).
AAA010101AAAsd.cer Certificate file in DER encoding.
fact1.xml Invoice file in XML format. "sello" field mean digital signing in Base 64 format.
cadena_original.xsl An XLS file for transforming fact1.xml and extract the string for digital signing.
sello.xsl An XLS file for transforming fact1.xml and extract digital signing field within it.
AAA010101AAA_0408021316S.key Private key file in (PKCS#8 format key/DER encoded).
AAA010101AAAsd.cer Certificate file in DER encoding.
fact1.xml Invoice file in XML format. "sello" field mean digital signing in Base 64 format.
cadena_original.xsl An XLS file for transforming fact1.xml and extract the string for digital signing.
sello.xsl An XLS file for transforming fact1.xml and extract digital signing field within it.
Working platform:
Microsoft Windows 2000 [Versión 5.00.2195] & OpenSSL 0.9.7e
Microsoft Windows 2000 [Versión 5.00.2195] & OpenSSL 0.9.7e
Rem
-----------------------------------------------------------------------------
Rem DOS Code
openssl pkcs8 -inform DER -in AAA010101AAA_0408021316S.key -passin pass:Empresa1 -out AAA010101AAA.key.pem
openssl rsa -in conllave.key.pem -des3 -out conllave.key.pem -passout pass:Empresa1
Rem DOS Code
openssl pkcs8 -inform DER -in AAA010101AAA_0408021316S.key -passin pass:Empresa1 -out AAA010101AAA.key.pem
openssl rsa -in conllave.key.pem -des3 -out conllave.key.pem -passout pass:Empresa1
openssl x509 -inform DER -outform PEM -in
AAA010101AAAsd.cer -out AAA010101AAA.cer.pem
xsltproc -output co.txt cadena_original.xsl
fact1.xml
openssl dgst -md5 -out sellobin -sign conllave.key.pem co.txt
openssl enc -base64 -A -in sellobin -out sello64.txt
openssl dgst -md5 -out sellobin -sign conllave.key.pem co.txt
openssl enc -base64 -A -in sellobin -out sello64.txt
xsltproc -output selloxml.txt sello.xsl
fact1.xml
openssl enc -base64 -d -A -in selloxml.txt -out sellobin
openssl enc -base64 -d -A -in selloxml.txt -out sellobin
xsltproc -output coxml.txt cadena_original.xsl
fact1.xml
openssl dgst -md5 -verify AAA010101AAA.cer.pem -signature sellobin co.txt
Rem unable to load key file !!! Why?
openssl dgst -md5 -verify AAA010101AAA.cer.pem -signature sellobin co.txt
Rem unable to load key file !!! Why?
AAA010101AAA_0408021316S.key
Description: Binary data
AAA010101AAAsd.cer
Description: application/x509-ca-cert
<?xml version="1.0" encoding="UTF-8"?> <Comprobante version="1.0" serie="A" folio="1" fecha="2005-09-02T16:30:00" sello="mCMuP1HLjTLGOIA91mDNo8pdJ7fPXF/BZ7R2xsr5sC+6EDF5hfHO1anVq5Ek/Owu5dC3AiYP0ZgeqNrmOuySRgdBl4ZwKUwQ8vQekW9XM4hfRdCs0dg3gXSM+SdVknjvyxV5XI14Y6DGYh448N0m2pri8ZgUVkqoSp9Czbt+/Fw=" noAprobacion="1" noCertificado="00001000000000000114"> <Emisor rfc="ISP900909Q88" nombre = "Industrias del Sur Poniente, S.A. de C.V."> <DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" /> <ExpedidoEn calle="Pino Suarez" noExterior="23" colonia="Centro" localidad="Monterrey" municipio="Monterrey" estado="Nuevo Léon" pais="México" codigoPostal="95460" /> </Emisor> <Receptor rfc="CAUR390312S87" nombre="Rosa MarÃa Calderón Uriegas"> <Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" localidad="Monterrey" municipio="Monterrey" estado="Nuevo León" pais="México" codigoPostal="95465" /> </Receptor> <Conceptos> <Concepto cantidad="10" unidad="Caja" descripcion="Vasos decorados" valorUnitario="20.00" importe="200.00" /> <Concepto cantidad="1" unidad="pieza" descripcion="Charola metálica" valorUnitario="150.00" importe="150.00" /> </Conceptos> <Impuestos> <Traslados> <Traslado impuesto="IVA" importe="52.00" /> </Traslados> </Impuestos> <Addenda> <Nota CadenaOriginal="||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa MarÃÂa Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20.00|200.00|1|pieza|Charola metálica|150.00|150.00|IVA|52.00||" /> </Addenda> </Comprobante>
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method = "text" /> <xsl:template match="/"> <xsl:apply-templates select="//Comprobante"/> <xsl:apply-templates select="//Emisor"/> <xsl:apply-templates select="//DomicilioFiscal"/> <xsl:apply-templates select="//ExpedidoEn"/> <xsl:apply-templates select="//Receptor"/> <xsl:apply-templates select="//Domicilio"/> <xsl:apply-templates select="//Concepto"/> <xsl:apply-templates select="//Retencion"/> <xsl:apply-templates select="//Traslado"/> <xsl:apply-templates select="//Addenda"/> </xsl:template> <xsl:template match="Comprobante"> <xsl:if test="@serie">||<xsl:value-of select="@serie"/></xsl:if> <xsl:if test="@folio">|<xsl:value-of select="@folio"/></xsl:if> <xsl:if test="@fecha">|<xsl:value-of select="@fecha"/></xsl:if> <xsl:if test="@noAprobacion">|<xsl:value-of select="@noAprobacion"/></xsl:if> <xsl:if test="@formaDePago">|<xsl:value-of select="@formaDePago"/></xsl:if> </xsl:template> <xsl:template match="Emisor"> <xsl:if test="@rfc">|<xsl:value-of select="@rfc"/></xsl:if> <xsl:if test="@nombre">|<xsl:value-of select="@nombre"/></xsl:if> </xsl:template> <xsl:template match="DomicilioFiscal"> <xsl:if test="@calle">|<xsl:value-of select="@calle"/></xsl:if> <xsl:if test="@noExterior">|<xsl:value-of select="@noExterior"/></xsl:if> <xsl:if test="@noInterior">|<xsl:value-of select="@noInterior"/></xsl:if> <xsl:if test="@colonia">|<xsl:value-of select="@colonia"/></xsl:if> <xsl:if test="@localidad">|<xsl:value-of select="@localidad"/></xsl:if> <xsl:if test="@referencia">|<xsl:value-of select="@referencia"/></xsl:if> <xsl:if test="@municipio">|<xsl:value-of select="@municipio"/></xsl:if> <xsl:if test="@estado">|<xsl:value-of select="@estado"/></xsl:if> <xsl:if test="@pais">|<xsl:value-of select="@pais"/></xsl:if> <xsl:if test="@codigoPostal">|<xsl:value-of select="@codigoPostal"/></xsl:if> </xsl:template> <xsl:template match="ExpedidoEn"> <xsl:if test="@calle">|<xsl:value-of select="@calle"/></xsl:if> <xsl:if test="@noExterior">|<xsl:value-of select="@noExterior"/></xsl:if> <xsl:if test="@noInterior">|<xsl:value-of select="@noInterior"/></xsl:if> <xsl:if test="@colonia">|<xsl:value-of select="@colonia"/></xsl:if> <xsl:if test="@localidad">|<xsl:value-of select="@localidad"/></xsl:if> <xsl:if test="@refrencia">|<xsl:value-of select="@referencia"/></xsl:if> <xsl:if test="@municipio">|<xsl:value-of select="@municipio"/></xsl:if> <xsl:if test="@estado">|<xsl:value-of select="@estado"/></xsl:if> <xsl:if test="@pais">|<xsl:value-of select="@pais"/></xsl:if> <xsl:if test="@codigoPostal">|<xsl:value-of select="@codigoPostal"/></xsl:if> </xsl:template> <xsl:template match="Receptor"> <xsl:if test="@rfc">|<xsl:value-of select="@rfc"/></xsl:if> <xsl:if test="@nombre">|<xsl:value-of select="@nombre"/></xsl:if> </xsl:template> <xsl:template match="Domicilio"> <xsl:if test="@calle">|<xsl:value-of select="@calle"/></xsl:if> <xsl:if test="@noExterior">|<xsl:value-of select="@noExterior"/></xsl:if> <xsl:if test="@noInterior">|<xsl:value-of select="@noInterior"/></xsl:if> <xsl:if test="@colonia">|<xsl:value-of select="@colonia"/></xsl:if> <xsl:if test="@localidad">|<xsl:value-of select="@localidad"/></xsl:if> <xsl:if test="@refrencia">|<xsl:value-of select="@referencia"/></xsl:if> <xsl:if test="@municipio">|<xsl:value-of select="@municipio"/></xsl:if> <xsl:if test="@estado">|<xsl:value-of select="@estado"/></xsl:if> <xsl:if test="@pais">|<xsl:value-of select="@pais"/></xsl:if> <xsl:if test="@codigoPostal">|<xsl:value-of select="@codigoPostal"/></xsl:if> </xsl:template> <xsl:template match="Concepto"> <xsl:if test="@cantidad">|<xsl:value-of select="@cantidad"/></xsl:if> <xsl:if test="@unidad">|<xsl:value-of select="@unidad"/></xsl:if> <xsl:if test="@descripcion">|<xsl:value-of select="@descripcion"/></xsl:if> <xsl:if test="@valorUnitario">|<xsl:value-of select="@valorUnitario"/></xsl:if> <xsl:if test="@importe">|<xsl:value-of select="@importe"/></xsl:if> </xsl:template> <xsl:template match="Retencion"> <xsl:if test="@impuesto">|<xsl:value-of select="@impuesto"/></xsl:if> <xsl:if test="@importe">|<xsl:value-of select="@importe"/></xsl:if> </xsl:template> <xsl:template match="Traslado"> <xsl:if test="@impuesto">|<xsl:value-of select="@impuesto"/></xsl:if> <xsl:if test="@importe">|<xsl:value-of select="@importe"/></xsl:if> </xsl:template> <xsl:template match="Addenda">||</xsl:template> </xsl:stylesheet>
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:output method = "text" /> <xsl:template match="Comprobante"> <xsl:value-of select="@sello"/> </xsl:template> </xsl:stylesheet>