Operações destinadas ao Pix do SPI (Sistema de Pagamentos Instantâneos).
Consulte a documentação técnica do HSM.
Funções | |
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 | hSession, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeUnsignedPIXEnvelope, | ||
BYTE * | pbUnsignedPIXEnvelope, | ||
DWORD * | pdwSizeSignedPIXEnvelope, | ||
BYTE ** | ppbSignedPIXEnvelope ) |
#include <dinamo.h>
Assina digitalmente um XML no formato ISO 20.022 seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||
[in] | szKeyId | Nome da chave privada utilizada para assinatura. Correspondente a um certificado CPIA. | ||||
[in] | szCertId | Nome do certificado digital utilizado para assinatura. Certificado Digital do PSP cadastrado no SPI para assinatura, também conhecido como CPIA ou CERTPIA. | ||||
[in] | dwFlags | Opções de assinatura. Passar 0. Caso precise de alguma opção adicional os seguintes valores são aceitos.
| ||||
[in] | dwSizeUnsignedPIXEnvelope | Tamanho, em bytes, do XML original em pbUnsignedPIXEnvelope . | ||||
[in] | pbUnsignedPIXEnvelope | Buffer contendo o XML original. | ||||
[out] | pdwSizeSignedPIXEnvelope | Ponteiro para o tamanho do XML assinado, em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em ppbSignedPIXEnvelope . | ||||
[out] | ppbSignedPIXEnvelope | Ponteiro de ponteiro com o retorno para o XML assinado. A alocação de memória é feita internamente. A aplicação chamadora é responsável por liberar a memória alocada usando a API DFree(). Consulte observações para maiores informações. |
int AAP_API DPIXVerify | ( | HSESSIONCTX | hSession, |
const char * | szChainId, | ||
const char * | szCRL, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeSignedPIXEnvelope, | ||
BYTE * | pbSignedPIXEnvelope ) |
#include <dinamo.h>
Verifica a assinatura de um documento XML assinado digitalmente no formato ISO 20.022 seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | szChainId | Nome da cadeia PKCS#7 (armazenada internamente no HSM) do certificado utilizado na assinatura. A cadeia deverá ser completa contendo da AC raiz até o próprio certificado utilizado na assinatura. Esta formatação é necessária porque a mensagem XML de Pix não traz o certificado usado na assinatura. Opcionalmente, pode ser passado apenas o certificado X.509 utilizado para assinar, no lugar da cadeia completa. A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. Importante observar que no caso de um objeto PKCS#7 do HSM que contenha múltiplas cadeias, a presença de um certificado expirado em qualquer das cadeias irá gerar na verificação um código de retorno de assinatura válida com certificado expirado (código diferente de zero), mesmo que a assinatura tenha sido realizada com certificado de cadeia não expirada; fica a cargo da aplicação o tratamento correto conforme a política local. |
[in] | szCRL | Nome da Lista de Certificados Revogados (CRL) – armazenada internamente no HSM - onde o certificado digital será verificado. É possível passar NULL indicando que não há uma CRL para verificação. |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
[in] | dwSizeSignedPIXEnvelope | Tamanho, em bytes, do XML assinado em pbSignedPIXEnvelope . |
[in] | pbSignedPIXEnvelope | XML assinado. |
int AAP_API DPIXDictSign | ( | HSESSIONCTX | hSession, |
const char * | szKeyId, | ||
const char * | szCertId, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeUnsignedDictEnvelope, | ||
BYTE * | pbUnsignedDictEnvelope, | ||
DWORD * | pdwSizeSignedDictEnvelope, | ||
BYTE ** | ppbSignedDictEnvelope ) |
#include <dinamo.h>
Assina digitalmente um XML no formato XMLDSig seguindo o padrão DICT definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | szKeyId | Nome da chave privada utilizada para assinatura. Correspondente a um certificado CPIA. |
[in] | szCertId | Nome do certificado digital utilizado para assinatura. Certificado Digital do PSP cadastrado no SPI para assinatura, também conhecido como CPIA ou CERTPIA. |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
[in] | dwSizeUnsignedDictEnvelope | Tamanho, em bytes, do XML original em pbUnsignedDictEnvelope . |
[in] | pbUnsignedDictEnvelope | Buffer contendo o XML original. |
[out] | pdwSizeSignedDictEnvelope | Ponteiro para o tamanho do XML assinado, em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em ppbSignedDictEnvelope . |
[out] | ppbSignedDictEnvelope | Ponteiro de ponteiro com o retorno para o XML assinado. A alocação de memória é feita internamente. A aplicação chamadora é responsável por liberar a memória alocada usando a API DFree(). Consulte observações para maiores informações. |
int AAP_API DPIXDictVerify | ( | HSESSIONCTX | hSession, |
const char * | szChainId, | ||
const char * | szCRL, | ||
DWORD | dwFlags, | ||
DWORD | dwSizeSignedDictEnvelope, | ||
BYTE * | pbSignedDictEnvelope ) |
#include <dinamo.h>
Verifica a assinatura de um documento XML assinado digitalmente no formato XMLDSig seguindo o padrão DICT definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | szChainId | Nome da cadeia PKCS#7 (armazenada internamente no HSM) do certificado utilizado na assinatura. A cadeia deverá ser completa contendo da AC raiz até o próprio certificado utilizado na assinatura. Esta formatação é necessária porque a mensagem XML de Pix não traz o certificado usado na assinatura. Opcionalmente, pode ser passado apenas o certificado X.509 utilizado para assinar, no lugar da cadeia completa. A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. Importante observar que no caso de um objeto PKCS#7 do HSM que contenha múltiplas cadeias, a presença de um certificado expirado em qualquer das cadeias irá gerar na verificação um código de retorno de assinatura válida com certificado expirado (código diferente de zero), mesmo que a assinatura tenha sido realizada com certificado de cadeia não expirada; fica a cargo da aplicação o tratamento correto conforme a política local. |
[in] | szCRL | Nome da Lista de Certificados Revogados (CRL) – armazenada internamente no HSM - onde o certificado digital será verificado. É possível passar NULL indicando que não há uma CRL para verificação. |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
[in] | dwSizeSignedDictEnvelope | Tamanho, em bytes, do XML assinado em pbSignedDictEnvelope . |
[in] | pbSignedDictEnvelope | XML assinado. |
int AAP_API DPIXJWSSign | ( | HSESSIONCTX | hSession, |
const char * | szKeyId, | ||
DWORD | dwFlags, | ||
DWORD | dwHeaderLen, | ||
BYTE * | pbHeader, | ||
DWORD | dwPayloadLen, | ||
BYTE * | pbPayload, | ||
DWORD * | pdwJWSLen, | ||
BYTE * | pbJWS ) |
#include <dinamo.h>
Faz uma assinatura JWS RFC 7515 seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||||||||||||
[in] | szKeyId | Nome da chave privada utilizada para assinatura. Como definido no manual de segurança do PIX | ||||||||||||||||||||
[in] | dwFlags | Opções de assinatura. Deve ser passado 0. | ||||||||||||||||||||
[in] | dwHeaderLen | Tamanho, em bytes, do Header JWS em pbHeader . | ||||||||||||||||||||
[in] | pbHeader | Header JWS para assinatura. Pelo menos o parâmetro de cabeçalho alg deverá ser informado. Valores aceitos para alg.
| ||||||||||||||||||||
[in] | dwPayloadLen | Tamanho, em bytes, do Payload JWS em pbPayload . | ||||||||||||||||||||
[in] | pbPayload | Buffer contendo o Payload JWS para assinatura. | ||||||||||||||||||||
[in,out] | pdwJWSLen | Ponteiro para o tamanho do buffer pbJWS , em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em pbJWS . | ||||||||||||||||||||
[out] | pbJWS | Buffer que conterá o JWS assinado. Se for passado NULL a API retornará 0 e pdwJWSLen conterá o tamanho necessário estimado de 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 ) |
#include <dinamo.h>
Valida um JWS assinado RFC 7515 seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | szChain | Nome da cadeia PKCS#7 (armazenada internamente no HSM) do certificado utilizado na assinatura. A cadeia deverá ser completa contendo da AC raiz até o próprio certificado utilizado na assinatura. Esta formatação é necessária porque a mensagem XML de Pix não traz o certificado usado na assinatura. Opcionalmente, pode ser passado apenas o certificado X.509 utilizado para assinar, no lugar da cadeia completa. A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. Importante observar que no caso de um objeto PKCS#7 do HSM que contenha múltiplas cadeias, a presença de um certificado expirado em qualquer das cadeias irá gerar na verificação um código de retorno de assinatura válida com certificado expirado (código diferente de zero), mesmo que a assinatura tenha sido realizada com certificado de cadeia não expirada; fica a cargo da aplicação o tratamento correto conforme a política local. |
[in] | szCRL | Nome da Lista de Certificados Revogados (CRL) – armazenada internamente no HSM - onde o certificado digital será verificado. É possível passar NULL indicando que não há uma CRL para verificação. |
[in] | dwJWSLen | Tamanho, em bytes, da assinatura JWS em pbJWS . |
[in] | pbJWS | JWS assinado. |
[in] | dwFlags | Opções de validação. Deve ser passado 0. |
[in,out] | pdwHeaderLen | Ponteiro para o tamanho do buffer pbHeader , em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em pbHeader . |
[out] | pbHeader | Buffer que conterá o Header do JWS. Se for passado NULL a API retornará 0 e pdwHeaderLen conterá o tamanho necessário estimado de pbHeader . |
[in,out] | pdwPayloadLen | Ponteiro para o tamanho do buffer pbPayload , em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em pbPayload . |
[out] | pbPayload | Buffer que conterá o Payload do JWS. Se for passado NULL a API retornará 0 e pdwPayloadLen conterá o tamanho necessário estimado de 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 ) |
#include <dinamo.h>
Faz uma requisição segura HTTP POST seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||
[in] | szKeyId | Nome da chave privada utilizada para fechamento do túnel. Correspondente a um certificado CPIC. | ||||||||||
[in] | szCertId | Nome do certificado utilizado para fechamento do túnel. Certificado Digital do PSP cadastrado no SPI para conexão, também conhecido como CPIC ou CERTPIC. | ||||||||||
[in] | szPIXCertChainId | Nome da cadeia PKCS#7 utilizada para verificar o servidor PIX (ICOM ou DICT). A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. | ||||||||||
[in] | szURL | URL do servidor PIX (ICOM ou DICT). | ||||||||||
[in] | dwCountRequestHeaderList | Quantidade de linhas preenchidas em pszRequestHeaderList . | ||||||||||
[in] | pszRequestHeaderList | Linhas contendo os headers HTTP customizados que serão utilizados na requisição. Pode ser passado nulo caso queira utilizar o header padrão sem alterações. Essa opção irá sobrescrever os headers padrão, caso haja sobreposição. Para remover um header passe o nome do header sem valor (Ex. Accept: ).Para incluir um header sem conteúdo utilize ; ao invés de : (Ex. Accept; ).NÃO utilizar terminadores CRLF nos headers. A passagem desses terminadores poderá causar comportamentos indesejados. A formatação será feita internamente. Esta opção não pode ser utilizada para alterar a primeira linha da requisição (Ex. POST, PUT, GET, DELETE), que não é um header. Deve-se utilizar a API correspondente, descrita neste manual. O header inicial padrão inclui Host, User-Agent, Accept, Accept-Encoding, Content-Type, Expect e Content-Length. | ||||||||||
[in] | dwSizeRequestData | Tamanho dos dados passados em pbRequestData . | ||||||||||
[in] | pbRequestData | Dados enviados na requisição. | ||||||||||
[in] | dwTimeOut | Tempo de timeout da operação em milisegundos. Pode ser passado 0 para não ter tempo de timeout. | ||||||||||
[out] | pdwSizeResponseHeaders | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseHeaders , em bytes. | ||||||||||
[out] | ppbResponseHeaders | Buffer alocado internamente que conterá o header retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseHeaders . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[out] | pdwSizeResponseBody | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseBody , em bytes. | ||||||||||
[out] | ppbResponseBody | Buffer alocado internamente que conterá o body retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseBody . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[in] | dwParam |
|
Executa uma requisição segura seguindo o padrão PIX definida no SPI nos documentos: "Anexo IV – Manual de Segurança", "Especificações técnicas e de negócio do ecossistema de pagamentos instantâneos brasileiro" e "Anexo III - Manual das Interfaces de comunicação" definidos no SPI.
O túnel negociado é o TLS versão 1.2 com autenticação mútua, utilizando o protocolo HTTP versão 1.1 com Cipher Suite mínima de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API irá descompactar automaticamente uma resposta que venha compactada no padrão gzip. Caso opte pela compactação dos dados de envio, a compactação deverá ser feita pelo chamador da API, no formato gzip.
Esta requisição utiliza os seguintes headers como padrão.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", onde 0.0.0.0 é a versão da biblioteca cliente do HSM utilizada.
A validação de certificado com o nome do host é feita verificando se os campos Common Name field ou Subject Alternate Name do certificado coincidem com o host name da URL passada como parâmetro.
Ao fazer um request HTTP são feitas 2 operações, uma de uso dos objetos do HSM (chave privada, certificado e cadeia, usados para autenticação do túnel) e outra de abertura da sessão HTTP com o servidor HTTP.
Para otimizar os recursos a sessão com o servidor HTTP é mantida aberta e guardada em cache, igualmente, a sessão com o HSM é guardada em cache por padrão (a sessão do HSM pode ser, opcionalmente, definida para não ser guardada em cache).
A sessão HTTP fica associada à sessão aberta com o HSM, isto significa que para reutilizar uma sessão HTTP deve-se usar a mesma sessão do HSM utilizada anteriormente para abrir a sessão HTTP.
A sessão HTTP é fechada físicamente quando a sessão com o HSM é fechada físicamente.
A sessão do HSM e a HTTP tem afinidade thread-sessão, não podendo ser utilizada simultâneamente entre várias threads.
O ajuste do Long Polling é feito definindo o timeout da operação HTTP (POST/GET/DELETE) de acordo com as configurações do servidor HTTP.
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 ) |
#include <dinamo.h>
Faz uma requisição segura HTTP PUT seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||
[in] | szKeyId | Nome da chave privada utilizada para fechamento do túnel. Correspondente a um certificado CPIC. | ||||||||||
[in] | szCertId | Nome do certificado utilizado para fechamento do túnel. Certificado Digital do PSP cadastrado no SPI para conexão, também conhecido como CPIC ou CERTPIC. | ||||||||||
[in] | szPIXCertChainId | Nome da cadeia PKCS#7 utilizada para verificar o servidor PIX (ICOM ou DICT). A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. | ||||||||||
[in] | szURL | URL do servidor PIX (ICOM ou DICT). | ||||||||||
[in] | dwCountRequestHeaderList | Quantidade de linhas preenchidas em pszRequestHeaderList . | ||||||||||
[in] | pszRequestHeaderList | Linhas contendo os headers HTTP customizados que serão utilizados na requisição. Pode ser passado nulo caso queira utilizar o header padrão sem alterações. Essa opção irá sobrescrever os headers padrão, caso haja sobreposição. Para remover um header passe o nome do header sem valor (Ex. Accept: ).Para incluir um header sem conteúdo utilize ; ao invés de : (Ex. Accept; ).NÃO utilizar terminadores CRLF nos headers. A passagem desses terminadores poderá causar comportamentos indesejados. A formatação será feita internamente. Esta opção não pode ser utilizada para alterar a primeira linha da requisição (Ex. POST, PUT, GET, DELETE), que não é um header. Deve-se utilizar a API correspondente, descrita neste manual. O header inicial padrão inclui Host, User-Agent, Accept, Accept-Encoding, Expect e Content-Length. | ||||||||||
[in] | dwSizeRequestData | Tamanho dos dados passados em pbRequestData . | ||||||||||
[in] | pbRequestData | Dados enviados na requisição. | ||||||||||
[in] | dwTimeOut | Tempo de timeout da operação em milisegundos. Pode ser passado 0 para não ter tempo de timeout. | ||||||||||
[out] | pdwSizeResponseHeaders | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseHeaders , em bytes. | ||||||||||
[out] | ppbResponseHeaders | Buffer alocado internamente que conterá o header retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseHeaders . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[out] | pdwSizeResponseBody | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseBody , em bytes. | ||||||||||
[out] | ppbResponseBody | Buffer alocado internamente que conterá o body retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseBody . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[in] | dwParam |
|
Executa uma requisição segura seguindo o padrão PIX definida no SPI nos documentos: "Anexo IV – Manual de Segurança", "Especificações técnicas e de negócio do ecossistema de pagamentos instantâneos brasileiro" e "Anexo III - Manual das Interfaces de comunicação" definidos no SPI.
O túnel negociado é o TLS versão 1.2 com autenticação mútua, utilizando o protocolo HTTP versão 1.1 com Cipher Suite mínima de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API irá descompactar automaticamente uma resposta que venha compactada no padrão gzip. Caso opte pela compactação dos dados de envio, a compactação deverá ser feita pelo chamador da API, no formato gzip.
Esta requisição utiliza os seguintes headers como padrão.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", onde 0.0.0.0 é a versão da biblioteca cliente do HSM utilizada.
A validação de certificado com o nome do host é feita verificando se os campos Common Name field ou Subject Alternate Name do certificado coincidem com o host name da URL passada como parâmetro.
Ao fazer um request HTTP são feitas 2 operações, uma de uso dos objetos do HSM (chave privada, certificado e cadeia, usados para autenticação do túnel) e outra de abertura da sessão HTTP com o servidor HTTP.
Para otimizar os recursos a sessão com o servidor HTTP é mantida aberta e guardada em cache, igualmente, a sessão com o HSM é guardada em cache por padrão (a sessão do HSM pode ser, opcionalmente, definida para não ser guardada em cache).
A sessão HTTP fica associada à sessão aberta com o HSM, isto significa que para reutilizar uma sessão HTTP deve-se usar a mesma sessão do HSM utilizada anteriormente para abrir a sessão HTTP.
A sessão HTTP é fechada físicamente quando a sessão com o HSM é fechada físicamente.
A sessão do HSM e a HTTP tem afinidade thread-sessão, não podendo ser utilizada simultâneamente entre várias threads.
O ajuste do Long Polling é feito definindo o timeout da operação HTTP (POST/GET/DELETE) de acordo com as configurações do servidor HTTP.
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 ) |
#include <dinamo.h>
Faz uma requisição segura HTTP GET seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||
[in] | szKeyId | Nome da chave privada utilizada para fechamento do túnel. Correspondente a um certificado CPIC. | ||||||||||
[in] | szCertId | Nome do certificado utilizado para fechamento do túnel. Certificado Digital do PSP cadastrado no SPI para conexão, também conhecido como CPIC ou CERTPIC. | ||||||||||
[in] | szPIXCertChainId | Nome da cadeia PKCS#7 utilizada para verificar o servidor PIX (ICOM ou DICT). A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. | ||||||||||
[in] | szURL | URL do servidor PIX (ICOM ou DICT). | ||||||||||
[in] | dwCountRequestHeaderList | Quantidade de linhas preenchidas em pszRequestHeaderList . | ||||||||||
[in] | pszRequestHeaderList | Linhas contendo os headers HTTP customizados que serão utilizados na requisição. Pode ser passado nulo caso queira utilizar o header padrão sem alterações. Essa opção irá sobrescrever os headers padrão, caso haja sobreposição. Para remover um header passe o nome do header sem valor (Ex. Accept: ).Para incluir um header sem conteúdo utilize ; ao invés de : (Ex. Accept; ).NÃO utilizar terminadores CRLF nos headers. A passagem desses terminadores poderá causar comportamentos indesejados. A formatação será feita internamente. Esta opção não pode ser utilizada para alterar a primeira linha da requisição (Ex. POST, PUT, GET, DELETE), que não é um header. Deve-se utilizar a API correspondente, descrita neste manual. O header inicial padrão inclui Host, User-Agent, Accept, Accept-Encoding. | ||||||||||
[in] | dwTimeOut | Tempo de timeout da operação em milisegundos. Pode ser passado 0 para não ter tempo de timeout. | ||||||||||
[out] | pdwSizeResponseHeaders | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseHeaders , em bytes. | ||||||||||
[out] | ppbResponseHeaders | Buffer alocado internamente que conterá o header retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseHeaders . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[out] | pdwSizeResponseBody | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseBody , em bytes. | ||||||||||
[out] | ppbResponseBody | Buffer alocado internamente que conterá o body retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseBody . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[in] | dwParam |
|
Executa uma requisição segura seguindo o padrão PIX definida no SPI nos documentos: "Anexo IV – Manual de Segurança", "Especificações técnicas e de negócio do ecossistema de pagamentos instantâneos brasileiro" e "Anexo III - Manual das Interfaces de comunicação" definidos no SPI.
O túnel negociado é o TLS versão 1.2 com autenticação mútua, utilizando o protocolo HTTP versão 1.1 com Cipher Suite mínima de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API irá descompactar automaticamente uma resposta que venha compactada no padrão gzip. Caso opte pela compactação dos dados de envio, a compactação deverá ser feita pelo chamador da API, no formato gzip.
Esta requisição utiliza os seguintes headers como padrão.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", onde 0.0.0.0 é a versão da biblioteca cliente do HSM utilizada.
A validação de certificado com o nome do host é feita verificando se os campos Common Name field ou Subject Alternate Name do certificado coincidem com o host name da URL passada como parâmetro.
Ao fazer um request HTTP são feitas 2 operações, uma de uso dos objetos do HSM (chave privada, certificado e cadeia, usados para autenticação do túnel) e outra de abertura da sessão HTTP com o servidor HTTP.
Para otimizar os recursos a sessão com o servidor HTTP é mantida aberta e guardada em cache, igualmente, a sessão com o HSM é guardada em cache por padrão (a sessão do HSM pode ser, opcionalmente, definida para não ser guardada em cache).
A sessão HTTP fica associada à sessão aberta com o HSM, isto significa que para reutilizar uma sessão HTTP deve-se usar a mesma sessão do HSM utilizada anteriormente para abrir a sessão HTTP.
A sessão HTTP é fechada físicamente quando a sessão com o HSM é fechada físicamente.
A sessão do HSM e a HTTP tem afinidade thread-sessão, não podendo ser utilizada simultâneamente entre várias threads.
O ajuste do Long Polling é feito definindo o timeout da operação HTTP (POST/GET/DELETE) de acordo com as configurações do servidor HTTP.
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 ) |
#include <dinamo.h>
Faz uma requisição segura HTTP DELETE seguindo o padrão PIX definido no SPI (Sistema de Pagamentos Instantâneos).
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||
[in] | szKeyId | Nome da chave privada utilizada para fechamento do túnel. Correspondente a um certificado CPIC. | ||||||||||
[in] | szCertId | Nome do certificado utilizado para fechamento do túnel. Certificado Digital do PSP cadastrado no SPI para conexão, também conhecido como CPIC ou CERTPIC. | ||||||||||
[in] | szPIXCertChainId | Nome da cadeia PKCS#7 utilizada para verificar o servidor PIX (ICOM ou DICT). A partir da versão 5.0.23 do firmware do HSM é possível utilizar um objeto PKCS#7 que contenha várias cadeias. | ||||||||||
[in] | szURL | URL do servidor PIX (ICOM ou DICT). | ||||||||||
[in] | dwCountRequestHeaderList | Quantidade de linhas preenchidas em pszRequestHeaderList . | ||||||||||
[in] | pszRequestHeaderList | Linhas contendo os headers HTTP customizados que serão utilizados na requisição. Pode ser passado nulo caso queira utilizar o header padrão sem alterações. Essa opção irá sobrescrever os headers padrão, caso haja sobreposição. Para remover um header passe o nome do header sem valor (Ex. Accept: ).Para incluir um header sem conteúdo utilize ; ao invés de : (Ex. Accept; ).NÃO utilizar terminadores CRLF nos headers. A passagem desses terminadores poderá causar comportamentos indesejados. A formatação será feita internamente. Esta opção não pode ser utilizada para alterar a primeira linha da requisição (Ex. POST, PUT, GET, DELETE), que não é um header. Deve-se utilizar a API correspondente, descrita neste manual. O header inicial padrão inclui Host, User-Agent, Accept, Accept-Encoding. | ||||||||||
[in] | dwTimeOut | Tempo de timeout da operação em milisegundos. Pode ser passado 0 para não ter tempo de timeout. | ||||||||||
[out] | pdwSizeResponseHeaders | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseHeaders , em bytes. | ||||||||||
[out] | ppbResponseHeaders | Buffer alocado internamente que conterá o header retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseHeaders . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[out] | pdwSizeResponseBody | Ponteiro que conterá o tamanho dos dados armazenados no buffer ppbResponseBody , em bytes. | ||||||||||
[out] | ppbResponseBody | Buffer alocado internamente que conterá o body retornado pela requisição. O tamanho alocado estará definido em pdwSizeResponseBody . Este ponteiro deverá ser liberado utilizando a API DFree(). | ||||||||||
[in] | dwParam |
|
Executa uma requisição segura seguindo o padrão PIX definida no SPI nos documentos: "Anexo IV – Manual de Segurança", "Especificações técnicas e de negócio do ecossistema de pagamentos instantâneos brasileiro" e "Anexo III - Manual das Interfaces de comunicação" definidos no SPI.
O túnel negociado é o TLS versão 1.2 com autenticação mútua, utilizando o protocolo HTTP versão 1.1 com Cipher Suite mínima de ECDHE-RSA-AES-128-GCM-SHA256.
Esta API irá descompactar automaticamente uma resposta que venha compactada no padrão gzip. Caso opte pela compactação dos dados de envio, a compactação deverá ser feita pelo chamador da API, no formato gzip.
Esta requisição utiliza os seguintes headers como padrão.
"Accept-Encoding: gzip"
"User-Agent: DNLC/0.0.0.0", onde 0.0.0.0 é a versão da biblioteca cliente do HSM utilizada.
A validação de certificado com o nome do host é feita verificando se os campos Common Name field ou Subject Alternate Name do certificado coincidem com o host name da URL passada como parâmetro.
Ao fazer um request HTTP são feitas 2 operações, uma de uso dos objetos do HSM (chave privada, certificado e cadeia, usados para autenticação do túnel) e outra de abertura da sessão HTTP com o servidor HTTP.
Para otimizar os recursos a sessão com o servidor HTTP é mantida aberta e guardada em cache, igualmente, a sessão com o HSM é guardada em cache por padrão (a sessão do HSM pode ser, opcionalmente, definida para não ser guardada em cache).
A sessão HTTP fica associada à sessão aberta com o HSM, isto significa que para reutilizar uma sessão HTTP deve-se usar a mesma sessão do HSM utilizada anteriormente para abrir a sessão HTTP.
A sessão HTTP é fechada físicamente quando a sessão com o HSM é fechada físicamente.
A sessão do HSM e a HTTP tem afinidade thread-sessão, não podendo ser utilizada simultâneamente entre várias threads.
O ajuste do Long Polling é feito definindo o timeout da operação HTTP (POST/GET/DELETE) de acordo com as configurações do servidor HTTP.