Firma XML, incluida la factura electrónica (NF-e)
Consulte la documentación técnica del HSM
Funciones | |
int AAP_API | DSignXml(HKEYCTX hKey, HHASHCTX hHash, char *szCertId, DWORD dwSizeUnsignedXml, BYTE *pbUnsignedXml, DWORD dwFilterLen, BYTE *pbFilter, DWORD *pdwSizeSignedXml, BYTE **ppbSignedXml) |
int AAP_API | DSignXml2(HSESSIONCTX hSession, BYTE bHashMode, DWORD dwFlags, const char *szKeyId, const char *szCertId, DWORD dwSizeUnsignedXml, BYTE *pbUnsignedXml, DWORD dwFilterLen, BYTE *pbFilter, DWORD *pdwSizeSignedXml, BYTE **ppbSignedXml) |
int AAP_API | DVerifySignedXml(HSESSIONCTX hSession, char *szCertsId, DWORD dwSizeSignedXml, BYTE *pbSignedXml, DWORD dwFilterLen, BYTE *pbFilter) |
int AAP_API | DVerifySignedXmlEx(HSESSIONCTX hSession, char *szCertsId, DWORD dwSizeSignedXml, BYTE *pbSignedXml, DWORD dwFilterLen, BYTE *pbFilter, char *szCRL) |
int AAP_API DSignXml | ( | HKEYCTX | hKey, |
HHASHCTX | hHash, | ||
char * | szCertId, | ||
DWORD | dwSizeUnsignedXml, | ||
BYTE * | pbUnsignedXml, | ||
DWORD | dwFilterLen, | ||
BYTE * | pbFilter, | ||
DWORD * | pdwSizeSignedXml, | ||
BYTE ** | ppbSignedXml ) |
#include <dinamo.h>
Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C y el RFC 3275.
[in] | hKey | Contexto de la clave privada que se utilizará en la firma. |
[in] | hHash | Contexto hash generado por la función DCreateHash(). |
[in] | szCertId | Nombre del certificado digital equivalente utilizado para firmar el documento XML. |
[in] | dwSizeUnsignedXml | Tamaño, en bytes, del XML original en pbUnsignedXml . |
[in] | pbUnsignedXml | Buffer que contiene el XML original. |
[in] | dwFilterLen | Tamaño, en bytes, del filtro indicado por pbFiltro . |
[in] | pbFilter | Filtro para firmar digitalmente partes del documento. El uso de filtros es opcional. Si no utiliza filtros, pase 0 (cero) en dwFilterLen . Consulte Uso de filtros XML para obtener más información sobre los filtros. |
[out] | pdwSizeSignedXml | Puntero al tamaño del XML firmado, en bytes. Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en ppbSignedXml . |
[out] | ppbSignedXml | Puntero con el retorno al XML firmado. La asignación de memoria se realiza internamente. La aplicación que llama es responsable de liberar la memoria asignada utilizando la API DFree(). Consulte los comentarios para obtener más información. |
hKey
.El búfer ppbSignedXml
para devolver el XML firmado se asignará internamente. La aplicación debe liberar la memoria utilizando la API DFree(). La función DSignXml() devolverá D_ERR_INVALID_CERTIFICATE si el certificado digital indicado no coincide con la clave hKey
. Si el XML original no está bien formado, la función devolverá D_ERR_CANNOT_ALLOC_RES.
La representación física o forma canónica utilizada en la firma se ajusta a la recomendación del W3C, versión 1.0 de 15 de marzo de 2001(http://www.w3.org/TR/2001/REC-xml-c14n-20010315). Las transformaciones utilizadas en la firma (Enveloped y C14N) son conformes con la sección 6.6.4 de la recomendación XML del W3C de 12 de febrero de 2002 - Enveloped Signature Transform(http://www.w3.org/2000/09/xmldsig#enveloped-signature) y con la canonicalización descrita anteriormente(http://www.w3.org/TR/2001/REC-xml-c14n-20010315).
Es posible firmar digitalmente parte del XML mediante filtros, utilizando los siguientes parámetros dwFilterLen
e pbFiltro
. Consulte Uso de filtros XML para obtener más información sobre los filtros.
int AAP_API DSignXml2 | ( | HSESSIONCTX | hSession, |
BYTE | bHashMode, | ||
DWORD | dwFlags, | ||
const char * | szKeyId, | ||
const char * | szCertId, | ||
DWORD | dwSizeUnsignedXml, | ||
BYTE * | pbUnsignedXml, | ||
DWORD | dwFilterLen, | ||
BYTE * | pbFilter, | ||
DWORD * | pdwSizeSignedXml, | ||
BYTE ** | ppbSignedXml ) |
#include <dinamo.h>
Firma digitalmente un documento XML utilizando los estándares de firma digital XML del W3C y el RFC 3275.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | bHashMode | Tipo de hash utilizado en la firma. Se aceptan los valores de la tabla siguiente.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwFlags | Banderas que contienen las opciones de suscripción. Se acepta la tabla siguiente.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szKeyId | Nombre de la clave privada utilizada para firmar. | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szCertId | Nombre del certificado digital equivalente utilizado para firmar el documento XML. | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwSizeUnsignedXml | Tamaño, en bytes, del XML original en pbUnsignedXml . | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | pbUnsignedXml | Buffer que contiene el XML original. | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwFilterLen | Tamaño, en bytes, del filtro indicado por pbFiltro . | ||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | pbFilter | Filtro para firmar digitalmente partes del documento. El uso de filtros es opcional. Si no utiliza filtros, pase 0 (cero) en dwFilterLen . Consulte Uso de filtros XML para obtener más información sobre los filtros. | ||||||||||||||||||||||||||||||||||||||||||||||||||
[out] | pdwSizeSignedXml | Puntero al tamaño del XML firmado, en bytes. Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en ppbSignedXml . | ||||||||||||||||||||||||||||||||||||||||||||||||||
[out] | ppbSignedXml | Puntero con el retorno al XML firmado. La asignación de memoria se realiza internamente. La aplicación que llama es responsable de liberar la memoria asignada utilizando la API DFree(). Consulte los comentarios para obtener más información. |
hKey
.El búfer ppbSignedXml
para devolver el XML firmado se asignará internamente. La aplicación debe liberar la memoria utilizando la API DFree(). La función DSignXml() devolverá D_ERR_INVALID_CERTIFICATE si el certificado digital indicado no coincide con la clave hKey
. Si el XML original no está bien formado, la función devolverá D_ERR_CANNOT_ALLOC_RES.
La representación física o forma canónica utilizada en la firma se ajusta a la recomendación del W3C, versión 1.0 de 15 de marzo de 2001(http://www.w3.org/TR/2001/REC-xml-c14n-20010315). Las transformaciones utilizadas en la firma (Enveloped y C14N) son conformes con la sección 6.6.4 de la recomendación XML del W3C de 12 de febrero de 2002 - Enveloped Signature Transform(http://www.w3.org/2000/09/xmldsig#enveloped-signature) y con la canonicalización descrita anteriormente(http://www.w3.org/TR/2001/REC-xml-c14n-20010315).
Es posible firmar digitalmente parte del XML mediante filtros, utilizando los siguientes parámetros dwFilterLen
e pbFiltro
. Consulte Uso de filtros XML para obtener más información sobre los filtros.
int AAP_API DVerifySignedXml | ( | HSESSIONCTX | hSession, |
char * | szCertsId, | ||
DWORD | dwSizeSignedXml, | ||
BYTE * | pbSignedXml, | ||
DWORD | dwFilterLen, | ||
BYTE * | pbFilter ) |
#include <dinamo.h>
Verifica la firma de un documento XML firmado digitalmente utilizando los estándares de firma digital XML del W3C y el RFC 3275.
int AAP_API DVerifySignedXmlEx | ( | HSESSIONCTX | hSession, |
char * | szCertsId, | ||
DWORD | dwSizeSignedXml, | ||
BYTE * | pbSignedXml, | ||
DWORD | dwFilterLen, | ||
BYTE * | pbFilter, | ||
char * | szCRL ) |
#include <dinamo.h>
Verifica la firma de un documento XML firmado digitalmente utilizando los estándares de firma digital XML del W3C y el RFC 3275.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szCertsId | Nombre de la cadena PKCS#7 -almacenada internamente en el HSM- del certificado utilizado para firmar el documento XML. |
[in] | dwSizeSignedXml | Tamaño, en bytes, del XML firmado en pbSignedXml . |
[in] | pbSignedXml | XML firmado. |
[in] | dwFilterLen | Tamaño, en bytes, del filtro indicado por pbFiltro . |
[in] | pbFilter | Filtro para firmar digitalmente partes del documento XML. Consulte Uso de filtros XML para obtener más información sobre filtros. |
[in] | szCRL | Nombre de la lista de revocación de certificados (CRL) -almacenada internamente en el HSM- en la que se verificará el certificado digital. Es posible pasar NULL indicando que no hay CRL que comprobar. |
Si se ha firmado un XML con un filtro, la comprobación debe indicar el mismo filtro. Consulte Uso de filtros XML para obtener más información sobre filtros.