Firma XML, incluida la factura electrónica (NF-e)
Las funciones de firma XML se ajustan a la norma para firmas digitales en formato XML (Extended Markup Language) definida por el consorcio W3C (World Wide Web Consortium), con el fin de garantizar la interoperabilidad, es decir, los documentos XML firmados por el HSM pueden verificarse en otros entornos que se adhieran a las normas del W3C, y el HSM puede verificar firmas en documentos XML firmados externamente.
Las funciones de la API para su uso con la firma XML requieren el almacenamiento interno en el HSM de los certificados digitales para la firma digital y la cadena de confianza completa de los certificados para la verificación.
Para escribir un certificado digital (o un archivo) en el HSM, utilice la consola de gestión remota o la API DWriteFile().
El certificado digital para la firma debe estar codificado en formato binario ASN1 DER y seguir también el estándar X.509. El archivo que contiene la cadena de confianza para verificar la firma digital debe estar codificado en formato PKCS#7 (Public Key Cryptography Standard #7 - Cryptographic Message Syntax Standard).
|
byte[] | SignXML (cadena KeyId, HASH_ALG AlgId, cadena CertId, cadena UnsignedXml, cadena Filter) |
| Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de cadena.
|
|
byte[] | SignXML (string KeyId, HASH_ALG AlgId, string CertId, byte[] byUnsignedXml, byte[] byFilter) |
| Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de matriz de bytes.
|
|
byte[] | SignXML(HASH_MODE HashMode, Int32 Flags, string KeyId, string CertId, byte[] byUnsignedXml, byte[] byFilter) |
| Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de matriz de bytes.
|
|
bool | VerifySignedXML (cadena CertId, cadena SignedXml, cadena Filter) |
| Comprueba la firma de un documento XML firmado digitalmente. Recibe parámetros en formato de cadena.
|
|
bool | VerifySignedXML (cadena CertId, byte[] bySignedXml, byte[] byFilter) |
| verifica la firma de un documento XML firmado digitalmente. Recibe parámetros en formato de matriz de bytes.
|
|
◆ SignXML() [1/3]
byte[] SignXML |
( |
cadena | KeyId, |
|
|
HASH_ALG | AlgId, |
|
|
cadena | CertId, |
|
|
cadena | UnsignedXml, |
|
|
cadena | Filtrar ) |
|
en línea |
Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de cadena.
- Ver también
- SignXML(string KeyId, HASH_ALG AlgId, string CertId, byte[] byUnsignedXml, byte[] byFilter)
- Parámetros
-
KeyId | Identificador interno del HSM que hace referencia a la clave que se utilizará para firmar el documento XML. |
AlgId | Algoritmo hash utilizado. Ver: HASH_ALG |
CertId | Identificador interno del HSM que hace referencia al certificado digital que se utilizará para firmar el documento XML. |
UnsignedXml | Parámetro que contiene el XML que se va a firmar. |
Filtro | Filtro para firmar digitalmente partes del documento XML. El uso del filtro es opcional. Consulte Uso de filtros XML. |
- Devolución
- Matriz de bytes que contiene el documento XML original firmado digitalmente en el formato especificado.
- Excepciones
-
- Ejemplos
- signxml.cs.
◆ SignXML() [2/3]
byte[] SignXML |
( |
cadena | KeyId, |
|
|
HASH_ALG | AlgId, |
|
|
cadena | CertId, |
|
|
byte[] | byUnsignedXml, |
|
|
byte[] | byFilter ) |
|
en línea |
Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de matriz de bytes.
- Parámetros
-
KeyId | Identificador interno del HSM que hace referencia a la clave que se utilizará para firmar el documento XML. |
AlgId | Algoritmo hash utilizado. Ver: HASH_ALG |
CertId | Identificador interno del HSM que hace referencia al certificado digital que se utilizará para firmar el documento XML. |
byUnsignedXml | Parámetro que contiene el XML que se va a firmar.(*) |
byFilter | Filtro para firmar digitalmente partes del documento XML. El uso del filtro es opcional. Consulte Uso de filtros XML. |
- Devolución
- Matriz de bytes que contiene el documento XML original firmado digitalmente en el formato especificado.
- Excepciones
-
El documento XML original, indicado por byUnsignedXml
El archivo puede comprimirse según el estándar gzip descrito en las RFC 1950 (formato zlib), 1951 (formato deflate) y 1952 (formato gzip). HSM reconoce automáticamente la compresión. Si el documento XML original está comprimido, el documento XML firmado devuelto también se comprimirá utilizando el mismo estándar gzip. Las operaciones de descompresión, firma y compresión son independientes en HSM, por lo que si se produce un error interno tras firmar el XML y no es posible devolver el documento XML firmado comprimido, el documento XML firmado se devolverá en texto sin formato (sin compresión). Aunque es muy poco probable que se produzca un error interno de este tipo, la aplicación debe estar preparada para afrontarlo.
Comprimir el documento XML no conlleva necesariamente una ganancia de rendimiento en las operaciones de firma. La principal ganancia puede venir de una reducción significativa del uso del ancho de banda de la red. A la hora de adoptar la compresión de documentos XML deben analizarse las circunstancias específicas de cada entorno.
◆ SignXML() [3/3]
byte[] SignXML |
( |
MODO_HASH | HashMode, |
|
|
Int32 | Banderas, |
|
|
cadena | KeyId, |
|
|
cadena | CertId, |
|
|
byte[] | byUnsignedXml, |
|
|
byte[] | byFilter ) |
|
en línea |
Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C. Recibe parámetros en formato de matriz de bytes.
- Parámetros
-
HashMode | Algoritmo hash y canonización utilizados. Véase: MODO_HASH |
Banderas | Algoritmo hash y canonicalización utilizados. Puede ser 0 o DinamoApi.XML_SIGN_FLAGS_NOL. |
KeyId | Identificador interno del HSM que hace referencia a la clave que se utilizará para firmar el documento XML. |
CertId | Identificador interno del HSM que hace referencia al certificado digital que se utilizará para firmar el documento XML. |
byUnsignedXml | Parámetro que contiene el XML que se va a firmar.(*) |
byFilter | Filtro para firmar digitalmente partes del documento XML. El uso del filtro es opcional. Consulte Uso de filtros XML. |
- Devolución
- Matriz de bytes que contiene el documento XML original firmado digitalmente en el formato especificado.
- Excepciones
-
El documento XML original, indicado por byUnsignedXml
El archivo puede comprimirse según el estándar gzip descrito en las RFC 1950 (formato zlib), 1951 (formato deflate) y 1952 (formato gzip). HSM reconoce automáticamente la compresión. Si el documento XML original está comprimido, el documento XML firmado devuelto también se comprimirá utilizando el mismo estándar gzip. Las operaciones de descompresión, firma y compresión son independientes en HSM, por lo que si se produce un error interno tras firmar el XML y no es posible devolver el documento XML firmado comprimido, el documento XML firmado se devolverá en texto sin formato (sin compresión). Aunque es muy poco probable que se produzca un error interno de este tipo, la aplicación debe estar preparada para afrontarlo.
Comprimir el documento XML no conlleva necesariamente una ganancia de rendimiento en las operaciones de firma. La principal ganancia puede venir de una reducción significativa del uso del ancho de banda de la red. A la hora de adoptar la compresión de documentos XML deben analizarse las circunstancias específicas de cada entorno.
◆ VerifySignedXML() [1/2]
bool VerifySignedXML |
( |
cadena | CertId, |
|
|
cadena | SignedXml, |
|
|
cadena | Filtrar ) |
|
en línea |
Comprueba la firma de un documento XML firmado digitalmente. Recibe parámetros en formato de cadena.
- Parámetros
-
CertId | Identificador interno del HSM que hace referencia a la cadena PKCS#7 -almacenada internamente en el HSM- del certificado utilizado para firmar el documento XML. |
SignedXml | XML firmado digitalmente en UTF-8. |
Filtro | Filtro para comprobar la firma digital de partes del documento XML en UTF-8. El uso del filtro es opcional. Consulte los comentarios para obtener más información sobre los filtros. |
- Devolución
- Verdadero si la comprobación se realiza correctamente.
- Excepciones
-
- Ejemplos
- signxml.cs.
◆ VerifySignedXML() [2/2]
bool VerifySignedXML |
( |
cadena | CertId, |
|
|
byte[] | bySignedXml, |
|
|
byte[] | byFilter ) |
|
en línea |
verifica la firma de un documento XML firmado digitalmente. Recibe parámetros en formato de matriz de bytes.
- Parámetros
-
CertId | Identificador interno del HSM que hace referencia a la cadena PKCS#7 -almacenada internamente en el HSM- del certificado utilizado para firmar el documento XML. |
bySignedXml | XML firmado digitalmente |
byFilter | Filtro para comprobar la firma digital de partes del documento XML. El uso de filtros es opcional. Consulte los comentarios para obtener más información sobre los filtros. |
- Devolución
- Verdadero si la comprobación se realiza correctamente.
- Excepciones
-