API C/C
HSM Dinamo
|
Operaciones destinadas al Pix del SPI (Sistema de Pago Instantáneo).
Las API del módulo Pix están diseñadas para utilizar las funcionalidades de firma, verificación, envío y recepción de solicitudes HTTP de Pix.
El HSM no accede directamente a los servidores Pix/DICT, sino que se sitúa en la red para ser utilizado por los servidores internos del PSP.
Las API de firma y verificación Pix se basan en la norma ISO 20.022, y las API DICT siguen el formato XMLDSig, ambos definidos por SPI en el documento "Anexo IV - Manual de seguridad".
Las funciones API para su uso con la firma Pix y DICT 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).
Las funciones de firma y validación de JWS Pix siguen el RFC 7515 y la documentación de SPI.
Las API de solicitud HTTP de Pix proporcionan una comunicación HTTP segura con los servidores Pix o DICT, utilizando las claves y certificados protegidos por el HSM.
Las funciones de comunicación segura del estándar Pix que siguen las definiciones descritas en los siguientes documentos: "Anexo IV - Manual de Seguridad", "Especificaciones técnicas y de negocio del ecosistema brasileño de pagos instantáneos" y "Anexo III - Manual de Interfaces de Comunicación" definidos en el SPI.
Operación
La conexión segura se realiza entre el servidor PSP y el servidor Pix/DICT, el HSM sólo se utiliza para utilizar objetos PSP y claves privadas.
El acceso al HSM sólo se produce durante el handshake TLS. Una vez cerrado el túnel, la comunicación sólo se mantiene entre el servidor PSP y el servidor Pix/DICT.
Una conexión HTTP se asocia con el manejador de sesión del HSM que se utilizó para abrir la sesión HTTP. Esto permite mantener la asociación y el acceso a los objetos de conexión (clave privada, certificado y cadena de certificados) dentro del HSM.
Por ejemplo: supongamos que se realiza una operación POST, la sesión HTTP se mantiene abierta dentro del manejador de sesión de HSM. Al cerrar la sesión HSM (sin desactivar la caché de sesión), la sesión se almacena en la caché de sesión junto con la sesión HTTP. Cuando se solicita una nueva sesión, se devuelve la sesión almacenada en caché. Cuando se reutiliza el manejador de sesión de HSM para una operación GET, la sesión HTTP se reutiliza porque se almacenó en el manejador de sesión de HSM.
Operaciones destinadas al Pix del SPI (Sistema de Pago Instantáneo). Más...
Funciones | |
int AAP_API | DPIXSign(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, DWORD dwFlags, DWORD dwSizeUnsignedPIXEnvelope, BYTE *pbUnsignedPIXEnvelope, DWORD *pdwSizeSignedPIXEnvelope, BYTE **ppbSignedPIXEnvelope) |
int AAP_API | DPIXVerify(HSESSIONCTX hSession, const char *szChainId, const char *szCRL, DWORD dwFlags, DWORD dwSizeSignedPIXEnvelope, BYTE *pbSignedPIXEnvelope) |
int AAP_API | DPIXDictSign(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, DWORD dwFlags, DWORD dwSizeUnsignedDictEnvelope, BYTE *pbUnsignedDictEnvelope, DWORD *pdwSizeSignedDictEnvelope, BYTE **ppbSignedDictEnvelope) |
int AAP_API | DPIXDictVerify(HSESSIONCTX hSession, const char *szChainId, const char *szCRL, DWORD dwFlags, DWORD dwSizeSignedDictEnvelope, BYTE *pbSignedDictEnvelope) |
int AAP_API | DPIXJWSSign(HSESSIONCTX hSession, const char *szKeyId, DWORD dwFlags, DWORD dwHeaderLen, BYTE *pbHeader, DWORD dwPayloadLen, BYTE *pbPayload, DWORD *pdwJWSLen, BYTE *pbJWS) |
int AAP_API | DPIXJWSCheck(HSESSIONCTX hSession, const char *szChain, const char *szCRL, DWORD dwJWSLen, BYTE *pbJWS, DWORD dwFlags, DWORD *pdwHeaderLen, BYTE *pbHeader, DWORD *pdwPayloadLen, BYTE *pbPayload) |
int AAP_API | DPIXPost(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, const char *szPIXCertChainId, const char *szURL, DWORD dwCountRequestHeaderList, const char *pszRequestHeaderList[], DWORD dwSizeRequestData, BYTE *pbRequestData, DWORD dwTimeOut, DWORD *pdwSizeResponseHeaders, BYTE **ppbResponseHeaders, DWORD *pdwSizeResponseBody, BYTE **ppbResponseBody, DWORD dwParam) |
int AAP_API | DPIXPut(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, const char *szPIXCertChainId, const char *szURL, DWORD dwCountRequestHeaderList, const char *pszRequestHeaderList[], DWORD dwSizeRequestData, BYTE *pbRequestData, DWORD dwTimeOut, DWORD *pdwSizeResponseHeaders, BYTE **ppbResponseHeaders, DWORD *pdwSizeResponseBody, BYTE **ppbResponseBody, DWORD dwParam) |
int AAP_API | DPIXGet(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, const char *szPIXCertChainId, const char *szURL, DWORD dwCountRequestHeaderList, const char *pszRequestHeaderList[], DWORD dwTimeOut, DWORD *pdwSizeResponseHeaders, BYTE **ppbResponseHeaders, DWORD *pdwSizeResponseBody, BYTE **ppbResponseBody, DWORD dwParam) |
int AAP_API | DPIXDelete(HSESSIONCTX hSession, const char *szKeyId, const char *szCertId, const char *szPIXCertChainId, const char *szURL, DWORD dwCountRequestHeaderList, const char *pszRequestHeaderList[], DWORD dwTimeOut, DWORD *pdwSizeResponseHeaders, BYTE **ppbResponseHeaders, DWORD *pdwSizeResponseBody, BYTE **ppbResponseBody, DWORD dwParam) |
int AAP_API DPIXSign | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeUnsignedPIXEnvelope, | ||
BYTE * | pbUnsignedPIXEnvelope, | ||
DWORD * | pdwSizeSignedPIXEnvelope, | ||
BYTE ** | ppbSignedPIXEnvelope ) |
#include <dinamo.h>
Firma digitalmente un XML en formato ISO 20.022 siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||
[en] | szKeyId | Nombre de la clave privada utilizada para la firma. Correspondiente a un certificado CPIA. | ||||
[en] | szCertId | Nombre del certificado digital utilizado para la firma. Certificado digital del PSP registrado en SPI para la firma, también conocido como CPIA o CERTPIA. | ||||
[en] | dwFlags | Opciones de suscripción. Pase 0. Si necesita opciones adicionales, se aceptan los siguientes valores.
| ||||
[en] | dwSizeUnsignedPIXEnvelope | Tamaño, en bytes, del XML original en pbUnsignedPIXEnvelope . | ||||
[en] | pbUnsignedPIXEnvelope | Buffer que contiene el XML original. | ||||
[fuera] | pdwSizeSignedPIXEnvelope | 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 ppbSignedPIXEnvelope . | ||||
[fuera] | ppbSignedPIXEnvelope | 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. |
int AAP_API DPIXVerify | ( | HSESSIONCTX | hSesión, |
const char * | szChainId, | ||
const char * | szCRL, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeSignedPIXEnvelope, | ||
BYTE * | pbSignedPIXEnvelope ) |
#include <dinamo.h>
Comprueba la firma de un documento XML firmado digitalmente en formato ISO 20.022 siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szChainId | Nombre de la cadena PKCS#7 (almacenada internamente en el HSM) del certificado utilizado en la firma. La cadena debe estar completa, desde la CA raíz hasta el certificado real utilizado en la firma. Este formato es necesario porque el mensaje Pix XML no contiene el certificado utilizado en la firma. Opcionalmente, sólo se puede pasar el certificado X.509 utilizado para la firma en lugar de la cadena completa. A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. Es importante tener en cuenta que, en el caso de un objeto PKCS#7 de HSM que contenga varias cadenas, la presencia de un certificado caducado en cualquiera de las cadenas generará un código de retorno de firma válido con un certificado caducado (código distinto de cero) en la verificación, aunque la firma se haya realizado con un certificado de una cadena no caducada; depende de la aplicación tratar esto correctamente de acuerdo con la política local. |
[en] | 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. |
[en] | dwFlags | Reservado para uso futuro (debe ser 0). |
[en] | dwSizeSignedPIXEnvelope | Tamaño, en bytes, del XML firmado en pbSignedPIXEnvelope . |
[en] | pbSignedPIXEnvelope | XML firmado. |
int AAP_API DPIXDictSign | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeUnsignedDictEnvelope, | ||
BYTE * | pbUnsignedDictEnvelope, | ||
DWORD * | pdwSizeSignedDictEnvelope, | ||
BYTE ** | ppbSignedDictEnvelope ) |
#include <dinamo.h>
Firma digitalmente un XML en formato XMLDSig siguiendo el estándar DICT definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szKeyId | Nombre de la clave privada utilizada para la firma. Correspondiente a un certificado CPIA. |
[en] | szCertId | Nombre del certificado digital utilizado para la firma. Certificado digital del PSP registrado en SPI para la firma, también conocido como CPIA o CERTPIA. |
[en] | dwFlags | Reservado para uso futuro (debe ser 0). |
[en] | dwSizeUnsignedDictEnvelope | Tamaño, en bytes, del XML original en pbUnsignedDictEnvelope . |
[en] | pbUnsignedDictEnvelope | Buffer que contiene el XML original. |
[fuera] | pdwSizeSignedDictEnvelope | 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 ppbSignedDictEnvelope . |
[fuera] | ppbSignedDictEnvelope | 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. |
int AAP_API DPIXDictVerify | ( | HSESSIONCTX | hSesión, |
const char * | szChainId, | ||
const char * | szCRL, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeSignedDictEnvelope, | ||
BYTE * | pbSignedDictEnvelope ) |
#include <dinamo.h>
Comprueba la firma de un documento XML firmado digitalmente en formato XMLDSig siguiendo el estándar DICT definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szChainId | Nombre de la cadena PKCS#7 (almacenada internamente en el HSM) del certificado utilizado en la firma. La cadena debe estar completa, desde la CA raíz hasta el certificado real utilizado en la firma. Este formato es necesario porque el mensaje Pix XML no contiene el certificado utilizado en la firma. Opcionalmente, sólo se puede pasar el certificado X.509 utilizado para la firma en lugar de la cadena completa. A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. Es importante tener en cuenta que, en el caso de un objeto PKCS#7 de HSM que contenga varias cadenas, la presencia de un certificado caducado en cualquiera de las cadenas generará un código de retorno de firma válido con un certificado caducado (código distinto de cero) en la verificación, aunque la firma se haya realizado con un certificado de una cadena no caducada; depende de la aplicación tratar esto correctamente de acuerdo con la política local. |
[en] | 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. |
[en] | dwFlags | Reservado para uso futuro (debe ser 0). |
[en] | dwSizeSignedDictEnvelope | Tamaño, en bytes, del XML firmado en pbSignedDictEnvelope . |
[en] | pbSignedDictEnvelope | XML firmado. |
int AAP_API DPIXJWSSign | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
DWORD | dwFlags, | ||
DWORD | dwHeaderLen, | ||
BYTE * | pbHeader, | ||
DWORD | dwPayloadLen, | ||
BYTE * | pbPayload, | ||
DWORD * | pdwJWSLen, | ||
BYTE * | pbJWS ) |
#include <dinamo.h>
Realiza una firma JWS RFC 7515 siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||
[en] | szKeyId | Nombre de la clave privada utilizada para firmar. Como se define en el manual de seguridad PIX | ||||||||||||||||||||
[en] | dwFlags | Opciones de suscripción. Se debe pasar 0. | ||||||||||||||||||||
[en] | dwHeaderLen | Tamaño, en bytes, de la cabecera JWS en pbHeader . | ||||||||||||||||||||
[en] | pbHeader | Cabecera JWS para la firma. Al menos el parámetro de cabecera alg debe ser informado. Valores aceptados para alg.
| ||||||||||||||||||||
[en] | dwPayloadLen | Tamaño, en bytes, de la carga útil del JWS en pbPayload . | ||||||||||||||||||||
[en] | pbPayload | Buffer que contiene la carga útil JWS para firmar. | ||||||||||||||||||||
[in,out] | pdwJWSLen | Puntero al tamaño del búfer pbJWS en bytes. Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en pbJWS . | ||||||||||||||||||||
[fuera] | pbJWS | Buffer que contendrá el JWS firmado. Si se pasa NULL, la API devolverá 0 y pdwJWSLen contendrá el tamaño necesario estimado de pbJWS . |
int AAP_API DPIXJWSCheck | ( | HSESSIONCTX | hSesión, |
const char * | szChain, | ||
const char * | szCRL, | ||
DWORD | dwJWSLen, | ||
BYTE * | pbJWS, | ||
DWORD | dwFlags, | ||
DWORD * | pdwHeaderLen, | ||
BYTE * | pbHeader, | ||
DWORD * | pdwPayloadLen, | ||
BYTE * | pbPayload ) |
#include <dinamo.h>
Valida un RFC 7515 firmado por JWS siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szChain | Nombre de la cadena PKCS#7 (almacenada internamente en el HSM) del certificado utilizado en la firma. La cadena debe estar completa, desde la CA raíz hasta el certificado real utilizado en la firma. Este formato es necesario porque el mensaje Pix XML no contiene el certificado utilizado en la firma. Opcionalmente, sólo se puede pasar el certificado X.509 utilizado para la firma en lugar de la cadena completa. A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. Es importante tener en cuenta que, en el caso de un objeto PKCS#7 de HSM que contenga varias cadenas, la presencia de un certificado caducado en cualquiera de las cadenas generará un código de retorno de firma válido con un certificado caducado (código distinto de cero) en la verificación, aunque la firma se haya realizado con un certificado de una cadena no caducada; depende de la aplicación tratar esto correctamente de acuerdo con la política local. |
[en] | 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. |
[en] | dwJWSLen | Tamaño, en bytes, de la firma JWS en pbJWS . |
[en] | pbJWS | JWS firmado. |
[en] | dwFlags | Opciones de validación. Se debe pasar 0. |
[in,out] | pdwHeaderLen | Puntero al tamaño del búfer pbHeader en bytes. Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en pbHeader . |
[fuera] | pbHeader | Buffer que contendrá la cabecera JWS. Si se pasa NULL, la API devolverá 0 y pdwHeaderLen contendrá el tamaño necesario estimado de pbHeader . |
[in,out] | pdwPayloadLen | Puntero al tamaño del búfer pbPayload en bytes. Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en pbPayload . |
[fuera] | pbPayload | Buffer que contendrá la carga útil de JWS. Si se pasa NULL, la API devolverá 0 y pdwPayloadLen contendrá el tamaño necesario estimado de pbPayload . |
int AAP_API DPIXPost | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
const char * | szPIXCertChainId, | ||
const char * | szURL, | ||
DWORD | dwCountRequestHeaderList, | ||
const char * | pszRequestHeaderList[], | ||
DWORD | dwSizeRequestData, | ||
BYTE * | pbRequestData, | ||
DWORD | dwTimeOut, | ||
DWORD * | pdwSizeResponseHeaders, | ||
BYTE ** | ppbResponseHeaders, | ||
DWORD * | pdwSizeResponseBody, | ||
BYTE ** | ppbResponseBody, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Realiza una petición HTTP POST segura siguiendo el estándar PIX definido en SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[en] | szKeyId | Nombre de la clave privada utilizada para cerrar el túnel. Corresponde a un certificado CPIC. | ||||||||||
[en] | szCertId | Nombre del certificado utilizado para cerrar el túnel. Certificado digital del PSP registrado en el SPI para la conexión, también conocido como CPIC o CERTPIC. | ||||||||||
[en] | szPIXCertChainId | Nombre de la cadena PKCS#7 utilizada para comprobar el servidor PIX (ICOM o DICT). A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. | ||||||||||
[en] | szURL | URL del servidor PIX (ICOM o DICT). | ||||||||||
[en] | dwCountRequestHeaderList | Número de líneas rellenadas pszRequestHeaderList . | ||||||||||
[en] | pszRequestHeaderList | Líneas que contienen las cabeceras HTTP personalizadas que se utilizarán en la petición. Se puede pasar null si se desea utilizar la cabecera por defecto sin cambios. Esta opción sobrescribirá las cabeceras por defecto si se solapan. Para eliminar una cabecera, pase el nombre de la cabecera sin un valor (p. ej. Acepta: ).Para incluir una cabecera sin contenido, utilice ; en lugar de : (Ej. Acepta; ).NO utilice terminadores CRLF en las cabeceras. Pasar estos terminadores puede causar un comportamiento no deseado. El formateo se realizará internamente. Esta opción no puede utilizarse para modificar la primera línea de la petición (por ejemplo, POST, PUT, GET, DELETE), que no es una cabecera. Debe utilizarse la API correspondiente, descrita en este manual. La cabecera inicial estándar incluye Host, User-Agent, Accept, Accept-Encoding, Content-Type, Expect y Content-Length. | ||||||||||
[en] | dwSizeRequestData | Tamaño de los datos introducidos pbRequestData . | ||||||||||
[en] | pbRequestData | Datos enviados en la solicitud. | ||||||||||
[en] | dwTimeOut | Tiempo de espera de la operación en milisegundos. Puede establecerse en 0 para que no haya tiempo de espera. | ||||||||||
[fuera] | pdwSizeResponseHeaders | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseHeaders en bytes. | ||||||||||
[fuera] | ppbResponseHeaders | Búfer asignado internamente que contendrá el cabecera devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseHeaders . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[fuera] | pdwSizeResponseBody | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseBody en bytes. | ||||||||||
[fuera] | ppbResponseBody | Búfer asignado internamente que contendrá el cuerpo devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseBody . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[en] | dwParam |
|
Ejecuta una petición segura siguiendo el estándar PIX definido en el SPI en los documentos: "Anexo IV - Manual de Seguridad", "Especificaciones técnicas y de negocio del ecosistema brasileño de pagos instantáneos" y "Anexo III - Manual de Interfaces de Comunicación" definidos en el SPI.
El túnel negociado es TLS versión 1.2 con autenticación mutua, utilizando el protocolo HTTP versión 1.1 con un Cipher Suite mínimo de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API descomprimirá automáticamente una respuesta que venga comprimida en el estándar gzip. Si decide comprimir los datos de envío, la persona que llame a la API deberá hacerlo en formato gzip.
Esta solicitud utiliza por defecto las siguientes cabeceras.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", donde 0.0.0.0 es la versión de la biblioteca cliente HSM utilizada.
La validación del certificado con el nombre de host se realiza comprobando que el campo Common Name o Subject Alternate Name del certificado coincide con el nombre de host de la URL pasada como parámetro.
Al realizar una petición HTTP, se efectúan 2 operaciones, una para utilizar los objetos HSM (clave privada, certificado y cadena, utilizados para autenticar el túnel) y otra para abrir la sesión HTTP con el servidor HTTP.
Para optimizar los recursos, la sesión con el servidor HTTP se mantiene abierta y se almacena en caché; del mismo modo, la sesión con el HSM se almacena en caché por defecto (la sesión del HSM puede configurarse opcionalmente para que no se almacene en caché).
La sesión HTTP está asociada a la sesión abierta con el HSM, lo que significa que para reutilizar una sesión HTTP se debe utilizar la misma sesión HSM que la utilizada previamente para abrir la sesión HTTP.
La sesión HTTP se cierra físicamente cuando se cierra físicamente la sesión con el HSM.
La sesión con el HSM y la sesión HTTP tienen afinidad de hilo-sesión y no pueden ser utilizadas simultáneamente por varios hilos.
El sondeo largo se ajusta configurando el tiempo de espera de la operación HTTP (POST/GET/DELETE) según la configuración del servidor HTTP.
int AAP_API DPIXPut | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
const char * | szPIXCertChainId, | ||
const char * | szURL, | ||
DWORD | dwCountRequestHeaderList, | ||
const char * | pszRequestHeaderList[], | ||
DWORD | dwSizeRequestData, | ||
BYTE * | pbRequestData, | ||
DWORD | dwTimeOut, | ||
DWORD * | pdwSizeResponseHeaders, | ||
BYTE ** | ppbResponseHeaders, | ||
DWORD * | pdwSizeResponseBody, | ||
BYTE ** | ppbResponseBody, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Realiza una petición HTTP PUT segura siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[en] | szKeyId | Nombre de la clave privada utilizada para cerrar el túnel. Corresponde a un certificado CPIC. | ||||||||||
[en] | szCertId | Nombre del certificado utilizado para cerrar el túnel. Certificado digital del PSP registrado en el SPI para la conexión, también conocido como CPIC o CERTPIC. | ||||||||||
[en] | szPIXCertChainId | Nombre de la cadena PKCS#7 utilizada para comprobar el servidor PIX (ICOM o DICT). A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. | ||||||||||
[en] | szURL | URL del servidor PIX (ICOM o DICT). | ||||||||||
[en] | dwCountRequestHeaderList | Número de líneas rellenadas pszRequestHeaderList . | ||||||||||
[en] | pszRequestHeaderList | Líneas que contienen las cabeceras HTTP personalizadas que se utilizarán en la petición. Se puede pasar null si se desea utilizar la cabecera por defecto sin cambios. Esta opción sobrescribirá las cabeceras por defecto si se solapan. Para eliminar una cabecera, pase el nombre de la cabecera sin un valor (p. ej. Acepta: ).Para incluir una cabecera sin contenido, utilice ; en lugar de : (Ej. Acepta; ).NO utilice terminadores CRLF en las cabeceras. Pasar estos terminadores puede causar un comportamiento no deseado. El formateo se realizará internamente. Esta opción no puede utilizarse para modificar la primera línea de la petición (por ejemplo, POST, PUT, GET, DELETE), que no es una cabecera. Debe utilizarse la API correspondiente, descrita en este manual. La cabecera inicial estándar incluye Host, User-Agent, Accept, Accept-Encoding, Expect y Content-Length. | ||||||||||
[en] | dwSizeRequestData | Tamaño de los datos introducidos pbRequestData . | ||||||||||
[en] | pbRequestData | Datos enviados en la solicitud. | ||||||||||
[en] | dwTimeOut | Tiempo de espera de la operación en milisegundos. Puede establecerse en 0 para que no haya tiempo de espera. | ||||||||||
[fuera] | pdwSizeResponseHeaders | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseHeaders en bytes. | ||||||||||
[fuera] | ppbResponseHeaders | Búfer asignado internamente que contendrá el cabecera devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseHeaders . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[fuera] | pdwSizeResponseBody | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseBody en bytes. | ||||||||||
[fuera] | ppbResponseBody | Búfer asignado internamente que contendrá el cuerpo devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseBody . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[en] | dwParam |
|
Ejecuta una petición segura siguiendo el estándar PIX definido en el SPI en los documentos: "Anexo IV - Manual de Seguridad", "Especificaciones técnicas y de negocio del ecosistema brasileño de pagos instantáneos" y "Anexo III - Manual de Interfaces de Comunicación" definidos en el SPI.
El túnel negociado es TLS versión 1.2 con autenticación mutua, utilizando el protocolo HTTP versión 1.1 con un Cipher Suite mínimo de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API descomprimirá automáticamente una respuesta que venga comprimida en el estándar gzip. Si decide comprimir los datos de envío, la persona que llame a la API deberá hacerlo en formato gzip.
Esta solicitud utiliza por defecto las siguientes cabeceras.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", donde 0.0.0.0 es la versión de la biblioteca cliente HSM utilizada.
La validación del certificado con el nombre de host se realiza comprobando que el campo Common Name o Subject Alternate Name del certificado coincide con el nombre de host de la URL pasada como parámetro.
Al realizar una petición HTTP, se efectúan 2 operaciones, una para utilizar los objetos HSM (clave privada, certificado y cadena, utilizados para autenticar el túnel) y otra para abrir la sesión HTTP con el servidor HTTP.
Para optimizar los recursos, la sesión con el servidor HTTP se mantiene abierta y se almacena en caché; del mismo modo, la sesión con el HSM se almacena en caché por defecto (la sesión del HSM puede configurarse opcionalmente para que no se almacene en caché).
La sesión HTTP está asociada a la sesión abierta con el HSM, lo que significa que para reutilizar una sesión HTTP se debe utilizar la misma sesión HSM que la utilizada previamente para abrir la sesión HTTP.
La sesión HTTP se cierra físicamente cuando se cierra físicamente la sesión con el HSM.
La sesión con el HSM y la sesión HTTP tienen afinidad de hilo-sesión y no pueden ser utilizadas simultáneamente por varios hilos.
El sondeo largo se ajusta configurando el tiempo de espera de la operación HTTP (POST/GET/DELETE) según la configuración del servidor HTTP.
int AAP_API DPIXGet | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
const char * | szPIXCertChainId, | ||
const char * | szURL, | ||
DWORD | dwCountRequestHeaderList, | ||
const char * | pszRequestHeaderList[], | ||
DWORD | dwTimeOut, | ||
DWORD * | pdwSizeResponseHeaders, | ||
BYTE ** | ppbResponseHeaders, | ||
DWORD * | pdwSizeResponseBody, | ||
BYTE ** | ppbResponseBody, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Realiza una petición HTTP GET segura siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[en] | szKeyId | Nombre de la clave privada utilizada para cerrar el túnel. Corresponde a un certificado CPIC. | ||||||||||
[en] | szCertId | Nombre del certificado utilizado para cerrar el túnel. Certificado digital del PSP registrado en el SPI para la conexión, también conocido como CPIC o CERTPIC. | ||||||||||
[en] | szPIXCertChainId | Nombre de la cadena PKCS#7 utilizada para comprobar el servidor PIX (ICOM o DICT). A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. | ||||||||||
[en] | szURL | URL del servidor PIX (ICOM o DICT). | ||||||||||
[en] | dwCountRequestHeaderList | Número de líneas rellenadas pszRequestHeaderList . | ||||||||||
[en] | pszRequestHeaderList | Líneas que contienen las cabeceras HTTP personalizadas que se utilizarán en la petición. Se puede pasar null si se desea utilizar la cabecera por defecto sin cambios. Esta opción sobrescribirá las cabeceras por defecto si se solapan. Para eliminar una cabecera, pase el nombre de la cabecera sin un valor (p. ej. Acepta: ).Para incluir una cabecera sin contenido, utilice ; en lugar de : (Ej. Acepta; ).NO utilice terminadores CRLF en las cabeceras. Pasar estos terminadores puede causar un comportamiento no deseado. El formateo se realizará internamente. Esta opción no puede utilizarse para modificar la primera línea de la petición (por ejemplo, POST, PUT, GET, DELETE), que no es una cabecera. Debe utilizarse la API correspondiente, descrita en este manual. La cabecera inicial estándar incluye Host, User-Agent, Accept, Accept-Encoding. | ||||||||||
[en] | dwTimeOut | Tiempo de espera de la operación en milisegundos. Puede establecerse en 0 para que no haya tiempo de espera. | ||||||||||
[fuera] | pdwSizeResponseHeaders | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseHeaders en bytes. | ||||||||||
[fuera] | ppbResponseHeaders | Búfer asignado internamente que contendrá el cabecera devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseHeaders . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[fuera] | pdwSizeResponseBody | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseBody en bytes. | ||||||||||
[fuera] | ppbResponseBody | Búfer asignado internamente que contendrá el cuerpo devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseBody . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[en] | dwParam |
|
Ejecuta una petición segura siguiendo el estándar PIX definido en el SPI en los documentos: "Anexo IV - Manual de Seguridad", "Especificaciones técnicas y de negocio del ecosistema brasileño de pagos instantáneos" y "Anexo III - Manual de Interfaces de Comunicación" definidos en el SPI.
El túnel negociado es TLS versión 1.2 con autenticación mutua, utilizando el protocolo HTTP versión 1.1 con un Cipher Suite mínimo de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API descomprimirá automáticamente una respuesta que venga comprimida en el estándar gzip. Si decide comprimir los datos de envío, la persona que llame a la API deberá hacerlo en formato gzip.
Esta solicitud utiliza por defecto las siguientes cabeceras.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", donde 0.0.0.0 es la versión de la biblioteca cliente HSM utilizada.
La validación del certificado con el nombre de host se realiza comprobando que el campo Common Name o Subject Alternate Name del certificado coincide con el nombre de host de la URL pasada como parámetro.
Al realizar una petición HTTP, se efectúan 2 operaciones, una para utilizar los objetos HSM (clave privada, certificado y cadena, utilizados para autenticar el túnel) y otra para abrir la sesión HTTP con el servidor HTTP.
Para optimizar los recursos, la sesión con el servidor HTTP se mantiene abierta y se almacena en caché; del mismo modo, la sesión con el HSM se almacena en caché por defecto (la sesión del HSM puede configurarse opcionalmente para que no se almacene en caché).
La sesión HTTP está asociada a la sesión abierta con el HSM, lo que significa que para reutilizar una sesión HTTP se debe utilizar la misma sesión HSM que la utilizada previamente para abrir la sesión HTTP.
La sesión HTTP se cierra físicamente cuando se cierra físicamente la sesión con el HSM.
La sesión con el HSM y la sesión HTTP tienen afinidad de hilo-sesión y no pueden ser utilizadas simultáneamente por varios hilos.
El sondeo largo se ajusta configurando el tiempo de espera de la operación HTTP (POST/GET/DELETE) según la configuración del servidor HTTP.
int AAP_API DPIXDelete | ( | HSESSIONCTX | hSesión, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
const char * | szPIXCertChainId, | ||
const char * | szURL, | ||
DWORD | dwCountRequestHeaderList, | ||
const char * | pszRequestHeaderList[], | ||
DWORD | dwTimeOut, | ||
DWORD * | pdwSizeResponseHeaders, | ||
BYTE ** | ppbResponseHeaders, | ||
DWORD * | pdwSizeResponseBody, | ||
BYTE ** | ppbResponseBody, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Realiza una petición segura HTTP DELETE siguiendo el estándar PIX definido en el SPI (Sistema de Pago Instantáneo).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[en] | szKeyId | Nombre de la clave privada utilizada para cerrar el túnel. Corresponde a un certificado CPIC. | ||||||||||
[en] | szCertId | Nombre del certificado utilizado para cerrar el túnel. Certificado digital del PSP registrado en el SPI para la conexión, también conocido como CPIC o CERTPIC. | ||||||||||
[en] | szPIXCertChainId | Nombre de la cadena PKCS#7 utilizada para comprobar el servidor PIX (ICOM o DICT). A partir de la versión 5.0.23 del firmware del HSM, es posible utilizar un objeto PKCS#7 que contenga varias cadenas. | ||||||||||
[en] | szURL | URL del servidor PIX (ICOM o DICT). | ||||||||||
[en] | dwCountRequestHeaderList | Número de líneas rellenadas pszRequestHeaderList . | ||||||||||
[en] | pszRequestHeaderList | Líneas que contienen las cabeceras HTTP personalizadas que se utilizarán en la petición. Se puede pasar null si se desea utilizar la cabecera por defecto sin cambios. Esta opción sobrescribirá las cabeceras por defecto si se solapan. Para eliminar una cabecera, pase el nombre de la cabecera sin un valor (p. ej. Acepta: ).Para incluir una cabecera sin contenido, utilice ; en lugar de : (Ej. Acepta; ).NO utilice terminadores CRLF en las cabeceras. Pasar estos terminadores puede causar un comportamiento no deseado. El formateo se realizará internamente. Esta opción no puede utilizarse para modificar la primera línea de la petición (por ejemplo, POST, PUT, GET, DELETE), que no es una cabecera. Debe utilizarse la API correspondiente, descrita en este manual. La cabecera inicial estándar incluye Host, User-Agent, Accept, Accept-Encoding. | ||||||||||
[en] | dwTimeOut | Tiempo de espera de la operación en milisegundos. Puede establecerse en 0 para que no haya tiempo de espera. | ||||||||||
[fuera] | pdwSizeResponseHeaders | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseHeaders en bytes. | ||||||||||
[fuera] | ppbResponseHeaders | Búfer asignado internamente que contendrá el cabecera devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseHeaders . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[fuera] | pdwSizeResponseBody | Puntero que contendrá el tamaño de los datos almacenados en el buffer ppbResponseBody en bytes. | ||||||||||
[fuera] | ppbResponseBody | Búfer asignado internamente que contendrá el cuerpo devuelto por la solicitud. El tamaño asignado se define en pdwSizeResponseBody . Este puntero debe liberarse utilizando la API DFree(). | ||||||||||
[en] | dwParam |
|
Ejecuta una petición segura siguiendo el estándar PIX definido en el SPI en los documentos: "Anexo IV - Manual de Seguridad", "Especificaciones técnicas y de negocio del ecosistema brasileño de pagos instantáneos" y "Anexo III - Manual de Interfaces de Comunicación" definidos en el SPI.
El túnel negociado es TLS versión 1.2 con autenticación mutua, utilizando el protocolo HTTP versión 1.1 con un Cipher Suite mínimo de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API descomprimirá automáticamente una respuesta que venga comprimida en el estándar gzip. Si decide comprimir los datos de envío, la persona que llame a la API deberá hacerlo en formato gzip.
Esta solicitud utiliza por defecto las siguientes cabeceras.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", donde 0.0.0.0 es la versión de la biblioteca cliente HSM utilizada.
La validación del certificado con el nombre de host se realiza comprobando que el campo Common Name o Subject Alternate Name del certificado coincide con el nombre de host de la URL pasada como parámetro.
Al realizar una petición HTTP, se efectúan 2 operaciones, una para utilizar los objetos HSM (clave privada, certificado y cadena, utilizados para autenticar el túnel) y otra para abrir la sesión HTTP con el servidor HTTP.
Para optimizar los recursos, la sesión con el servidor HTTP se mantiene abierta y se almacena en caché; del mismo modo, la sesión con el HSM se almacena en caché por defecto (la sesión del HSM puede configurarse opcionalmente para que no se almacene en caché).
La sesión HTTP está asociada a la sesión abierta con el HSM, lo que significa que para reutilizar una sesión HTTP se debe utilizar la misma sesión HSM que la utilizada previamente para abrir la sesión HTTP.
La sesión HTTP se cierra físicamente cuando se cierra físicamente la sesión con el HSM.
La sesión con el HSM y la sesión HTTP tienen afinidad de hilo-sesión y no pueden ser utilizadas simultáneamente por varios hilos.
El sondeo largo se ajusta configurando el tiempo de espera de la operación HTTP (POST/GET/DELETE) según la configuración del servidor HTTP.