Operaciones de codificación y descodificación según la norma SPB.
Las APIs del módulo SPB están destinadas a la codificación y decodificación de mensajes en el estándar SPB (Sistema Brasileño de Pagos), de acuerdo con el Manual de Seguridad de la RSFN (Rede Nacional do Sistema Financeiro) publicado por el BACEN (Banco Central do Brasil).
- Observación
- La aplicación actual se ajusta a la versión 5.0 del Manual de Seguridad RSFN publicado por el BACEN en junio de 2021.
El Sistema Brasileño de Pagos (SPB) funciona con un sistema de intercambio de mensajes entre instituciones financieras en una red privada denominada RSFN. Las normas son definidas y publicadas por el Banco Central. Todos los mensajes intercambiados son encriptados y firmados digitalmente utilizando un esquema de sobre digital. El módulo SPB se encarga de gestionar la seguridad de los mensajes.
- Observación
- El uso del módulo SPB en un escenario con varios HSMs debe realizarse con el mecanismo de replicación de HSMs configurado y operativo, de forma que la base de certificados en los HSMs esté siempre sincronizada y completa, independientemente de qué HSM haya utilizado la aplicación en cada operación.
El módulo SPB realiza básicamente tres funciones: Codificación y Decodificación en mensajes SPB, y gestión de certificados SPB.
La codificación se realiza sobre los mensajes que van a la cola de salida y consiste en:
- Firmar el contenido (hash) del mensaje con la clave privada correspondiente al certificado propio de la institución (origen);
- Generar una clave de sesión simétrica;
- Cifra el mensaje con la clave simétrica;
- Cifre la clave simétrica con la clave pública del certificado de la institución que recibe el mensaje;
- Configure la cabecera de seguridad;
- Entrega la cabecera de resultados+mensaje cifrado a la aplicación, que lo pondrá todo en una cola de salida;
La descodificación realiza el proceso inverso, actuando sobre los mensajes que llegan a la cola de entrada;
- Recibe el mensaje cifrado y la cabecera SPB;
- Descifra la clave simétrica con la clave privada de la propia institución (destino)
- Descifra el mensaje con la clave simétrica;
- Verifica la firma digital con la clave pública del certificado de la institución remitente (origen)
- Envía el mensaje abierto a la aplicación;
Toda operación con claves públicas y privadas está ligada al uso de certificados X.509, por lo que además de Codificar y Decodificar el módulo SPB también necesita disponer de alguna gestión de certificados.
Cada institución se identifica en el SPB por su código ISPB (8 dígitos) y puede intercambiar mensajes en los llamados dominios de mensajes, cada uno de los cuales requiere un certificado diferente. Cada institución sólo puede tener un certificado activo a la vez en un dominio.
En el módulo SPB, las instituciones (y sus certificados equivalentes) sólo pueden identificarse mediante el código ISPB.
El módulo SPB se encarga de encriptar los mensajes de acuerdo con las definiciones del BACEN, y la estructura de comunicación SPB puede ser utilizada por otros sistemas entre instituciones financieras motivados, por ejemplo, por la aparición de nuevas aplicaciones dentro del BACEN:
- SPB gestiona el STR - Sistema de Transferencia de Recursos (STR01)
- MES opera Sisbacen (MES01, MES02)
- CIP opera el SCG - Sistema de Control de Garantías y el C3 - Sistema Central de Asignación de Créditos. Cada uno de estos sistemas puede tener una clave/certificado y será tratado como un dominio en la aplicación de control de mensajería. Si la institución gestiona más de un BISP, cada uno de ellos deberá acceder a una partición de claves independiente dentro del HSM. Hay casos en los que una institución puede operar MES/SPB con la misma clave/certificado.
En HSM, la gestión de certificados se realiza mediante Mapas, que son objetos de señalización y referencia. Todas las referencias en el módulo SPB son a Mapas, no a claves y certificados.
En cuanto a la nomenclatura interna que se describe a continuación, la idea es que las claves, certificados y mapas sean gestionados por las funciones SPB especializadas de la biblioteca cliente HSM, de forma que estas reglas de nomenclatura sean totalmente transparentes para la aplicación, que sólo tiene que buscar el código SPB.
Conservación de certificados
Si las funciones de codificación y descodificación sólo tuvieran que gestionar mensajes con certificados activos, bastaría con mantener estos certificados en la base, pero hay casos, como un proceso de auditoría, en los que la aplicación necesita abrir o verificar la firma de un mensaje antiguo que se generó con un certificado que ya ha sido desactivado (o que seguirá activado en el futuro). Por eso, el HSM necesita guardar y acumular todos los certificados de la base, tanto propios como de terceros, a medida que se importan, activan y desactivan.
Formato UTF-16 BE en XML
El manual BACEN especifica que los mensajes XML deben representarse en formato Unicode UTF-16 BE. Para mod_SPB no importa, ya que el contenido que se firmará y cifrará en Encode será exactamente el enviado por el usuario, el HSM no convierte automáticamente el texto ni en Encode ni en Decode.
Indicadores de tratamiento especial en la cabecera SPB
El manual del BACEN menciona mensajes y punteros de archivos que pueden incluirse en el contenido de un mensaje SPB. La diferencia es que los mensajes XML deben representarse en formato UTF16-BE, mientras que los archivos no tienen este requisito.
Esta distinción entre mensaje y archivo es importante para la persona que llama, ya que decidirá si necesita convertir el formato o no antes de enviarlo al HSM.
En el caso de los mensajes que indican contenido comprimido, la premisa de la aplicación es que el remitente dispone de la infraestructura de compresión necesaria, por lo que el HSM firma y cifra lo que la aplicación pasa en Encode, mientras que en el caso del destinatario la premisa es que puede no disponer de la infraestructura de descompresión, por lo que el HSM descomprime el contenido en Decode y entrega el contenido descomprimido, lo que incluye la detección automática de si el estándar utilizado es gzip o pkzip.
Todos los mensajes enviados están firmados, y algunos pueden ser de uso público, sin destinatario especificado.
C04 | Mensaje | Archivo | Firmado | Cifrado | Con cremallera | Destinatario | Codificar | Descodifique |
0 | x | | x | x | | | | |
1 | x | | x | x | | | use cert not yet activated | use cert not yet activated |
2 | x | | x | | | público | acepta el destino en blanco | acepta el destino en blanco |
3 | x | | x | | | | | |
4 | | x | x | | | | | |
6 | | x | x | | | público | acepta el destino en blanco | acepta el destino en blanco |
8 | | x | x | x | x | | ya debería recibirlo comprimido | se descomprime automáticamente |
10 | | x | x | | x | público | ya debería recibirlo comprimido | se descomprime automáticamente |
Gestión automática de mensajes SPB para el intercambio de certificados
Según la definición de Bacen, los intercambios y activaciones de certificados SPB se realizan dentro del sistema mediante mensajes específicos.
El HSM puede detectar este tipo de mensaje en Decode y promover el intercambio del certificado en la base del HSM automáticamente, sin que la aplicación tenga que llamar explícitamente a la API de activación de certificados.
Se trata de una opción de parametrización de la llamada Decode.
El HSM gestionará la descodificación GEN0007 (aviso de actualización de certificado a través de la difusión BACEN), la respuesta a un GEN0008 (una consulta de certificado digital, cuya respuesta es un GEN0008R1), la respuesta a un GEN0006, así como el GEN0018 (certificado BACEN). Para HSM, GEN0007 y la respuesta a GEN0008 son equivalentes. En el caso de GEN0018, el certificado del mensaje se importa, pero no se activa automáticamente, porque el manual especifica que BACEN envía los mensajes al menos 03 días antes de la activación; por lo que la aplicación es responsable de controlar el tiempo entre la recepción y la activación; y para activarlo basta con informar a CA y NS, porque el certificado ya estará importado en la base de HSM.
El mensaje GEN0006 es utilizado por las instituciones para informar al BACEN de la activación o actualización del estado de un certificado. En el HSM, la respuesta a este mensaje (GEN0006R1) tiene un tratamiento especial para promover la activación del certificado (a partir de la versión de firmware 5.0.16).
El flujo normal de operaciones para activar un nuevo certificado implica un mensaje GEN0006 de la institución al BACEN, que a su vez envía un mensaje de difusión GEN0007 informando a todos los participantes de que el certificado de la institución debe cambiarse. Como la propia institución también recibe este GEN0007, es en este punto (durante la descodificación) cuando la aplicación puede ordenar al HSM que active automáticamente el nuevo certificado en su base local.
Formato del certificado
Internamente, HSM sólo opera, importa y exporta certificados en formato DER (binario), pero en la biblioteca las operaciones de importación de certificados admiten tanto el formato DER como el PEM (base64), con detección automática.
Nomenclatura
El módulo SPB del HSM permite realizar operaciones de codificación y descodificación de mensajes SPB utilizando claves y certificados dentro del HSM.
Esto significa que toda la base de certificados y claves privadas de la propia entidad y de las entidades con las que el banco se comunica estará almacenada y centralizada en el HSM, sin necesidad de control externo.
La identificación de las claves y certificados a utilizar se realiza utilizando el código BIPP de las instituciones de forma natural para las aplicaciones convocantes, en lugar del modelo común de utilizar los identificadores nativos de las claves y certificados.
Para establecer esta relación entre los BIPP y las claves y certificados, se utilizó un objeto del HSM denominado map, que simplemente vincula un BIPP a una clave privada y/o un certificado. Esto permite pasar sólo el BISP a una llamada de codificación SPB en lugar de un nombre de clave.
Nomenclatura interna de claves y certificados
Para facilitar su uso, se define una ley de formación para los nombres de estos objetos.
Para los nombres clave:
k_<ISPB>_<dom>_<yyyymmddhhmmss>
k:
01 carácter, literal
<ISPB>
: 08 caracteres, código ISPB
<dom>
hasta 05 caracteres, dominio
<yyyyymmddhhmmss>
14 caracteres, fecha y hora GMT en que se generó la clave.
Total: hasta 31 caracteres, por ejemplo k_12345678_str01_20131029110223
Para nombres de certificados:
c_<ISPB>_<dom>_<yyyymmddhhmmss>
c:
01 carácter, literal
<ISPB>
: 08 caracteres, código ISPB
<dom>
hasta 05 caracteres, dominio
<yyyymmddhhmmss>
14 caracteres, fecha y hora GMT en que se importó el certificado.
Total: hasta 31 caracteres, por ejemplo c_12345678_spb_20131101120334
La misma ley de formación se aplica a los certificados de terceros.
Mapa
El mapa es simplemente un objeto interno de HSM que almacena los Id de otros dos objetos. En el caso del módulo SPB, contiene el Id del certificado y el Id de la clave privada. Cada Id ocupa una posición dentro del mapa denominada ranura.
Nomenclatura del mapa interno de SPB
Dado que cada mensaje implica el procesamiento de certificados, el módulo SPB necesita una forma de identificar de forma única cada certificado para cada institución en cada dominio. Según el estándar Bacen, cada certificado tiene un número de serie (SN) de hasta 32 bytes, definido por la autoridad de certificación (CA) que lo emite, pero no hay garantía de que los números de serie sean globalmente únicos, por lo que la identificación del certificado debe incluir información de la CA (cada CA en el SPB tiene un byte de identificación) y el SN, que supera el límite de 32 caracteres para los identificadores HSM; el RFC 3280 también hace esta distinción para identificar de forma única un certificado. Los Ids de los mapas de certificados utilizados en el módulo SPB utilizan un esquema de compresión de nombres.
La solución adoptada es un hash MD5, que tiene exactamente 16 bytes (32 caracteres) y no produce colisión para este caso de uso. La definición de lo que entrará en la composición del hash es (CA+NS), donde CA y SN están compuestos por caracteres hexadecimales en mayúsculas.
- CA tiene un tamaño de 2, que representa un byte.
- SN tiene un tamaño de 32 y debe completarse con un relleno cero a la izquierda (según el manual de seguridad 3.2 del SPB) cuando el tamaño SN del certificado sea inferior a 32.
- La concatenación CA+SN debe realizarse sin contar los terminadores NULL. Los mapas de certificados activos se identificarán como <ISPB>_<dom> en la base HSM, y la aplicación se referirá a ellos como
ISPB@dom
. O @
se adopta para mejorar la nomenclatura en el cliente, internamente en el firmware @
se traduce en _
.
El uso de @dom por parte de la aplicación llamante es opcional; la organización puede no utilizar dominios de aplicación.
Desde el punto de vista de la aplicación que llama, puede referirse a los mapas como ISPB@dom
o CA@NS
para utilizar la misma API de codificación/decodificación. La biblioteca HSM lo detecta automáticamente.
Los mapas permiten que las ranuras apunten a un FQN, lo que significa que el certificado y la clave pueden estar en particiones diferentes. En cualquier caso, el mapa debe existir siempre en la partición del usuario logueado, aunque los ids apuntados en las ranuras estén en otra partición. En principio, la mejor forma de utilizarlo es mantener todos los certificados y claves de un BIP en la misma partición, sin referencias a particiones remotas.
Para facilitar la identificación de objetos y la búsqueda de BISP, los certificados activos y los pares certificado+clave privada disponen de un MAPA con el identificador BISP.
Todos los certificados y pares certificado+clave privada, independientemente de si están activos o no, tienen un MAPA con MD5 id (CA+SN) para su identificación e historial, donde CA es el identificador de la Autoridad de Certificación y SN es el número de serie del certificado.
El nombre del objeto mapa es el identificador de la institución, que puede ser de 2 tipos:
- CA@SN
- CA (Autoridad de certificación) y NS (Número de serie) del certificado.
- Se hace un hash MD5 de estos datos y el resultado es el nombre del MAP.
- Este mapa se genera automáticamente para todos los certificados y pares certificado + clave privada cuando se importan a través de las API de SPB (por ejemplo, DSPBImportCertificate(), ...).
- Por ejemplo:
03@00000000000000000000000087654321
- BISP@Dominio
- Se genera un nombre específico para el mapa utilizando ISPB y DOMINIO.
- El dominio no es obligatorio. Los identificadores solo pueden crearse con BISP.
- Este tipo de mapa sólo se genera para certificados activos y pares certificado+clave.
- La eliminación de este mapa hace que el certificado correspondiente quede inactivo.
- Por ejemplo:
12345678@MES01
La documentación de la API indica si se aceptan ambos tipos de identificador o sólo uno de ellos.
Particiones múltiples
Si desea utilizar objetos en las particiones de otros usuarios, debe especificar el id de la partición en el identificador.
La indicación se realiza añadiendo el nombre de la partición donde se encuentran los objetos al principio del identificador, separado por /
.
Por ejemplo: usuario/12345678@MES01
Codificar
La secuencia de APIs DSPBEncodeInit(), DSPBEncodeCont() y DSPBEncodeEnd() realiza una operación de codificación de mensajes SPB.
La estructura de llamada con secuencia init/cont/end permite a la aplicación llamante utilizar la API con cualquier tamaño de mensaje, incluidos archivos de gran tamaño.
El uso de parámetros con identificadores SPB de origen y destino en las API tiene como objetivo aumentar el nivel de comprobación entre lo que la aplicación realmente tiene (el mensaje SPB) y lo que cree que tiene (los parámetros de la API).
La operación de cifrado no modifica el formato de representación del mensaje, por lo que la aplicación debe enviar el mensaje tal y como lo defina el Banco Central (por ejemplo, UTF-16BE). El mensaje se cifrará y firmará a medida que se reciba.
Descodifique
La secuencia de APIs DSPBDecodeInit(), DSPBDecodeCont() y DSPBDecodeEnd() realiza una operación de descodificación de mensajes SPB.
La estructura de llamada con secuencia init/cont/end permite a la aplicación llamante utilizar la API con cualquier tamaño de mensaje.
El uso de parámetros ISPB de origen y destino en las API pretende aumentar el nivel de comprobación entre lo que la aplicación tiene realmente (el mensaje SPB) y lo que cree que tiene (los parámetros API).
Durante la descodificación, el firmware del HSM es capaz de detectar que el mensaje es sobre un cambio de certificado y realizar ya esta actualización y activación de forma automática (sin necesidad de más acciones por parte de la aplicación), por lo que el flag bAutoUpdateCert debe estar activado.
La operación de descifrado no cambia el formato de representación del mensaje. El mensaje se pasará a la aplicación tal y como fue descifrado.
Consola gráfica de gestión del módulo SPB
Para facilitar la gestión y abstraer los detalles más complejos del módulo SPB, el fabricante del HSM proporciona una consola gráfica. A través de ella se pueden realizar fácilmente todas las operaciones relativas a la carga y activación de certificados, generación de claves y solicitudes de certificados, creación y visualización de dominios, autorización de particiones y muchas otras.
Consulte con su proveedor la disponibilidad de la consola de gestión HSM SPB.
Más detalles en la documentación del equipo.
|
void | SPBListObjects(OBJTYPE type, DinamoApi.ListCallbackFilter filterCallBack, IntPtr param) |
| Lista los objetos de un determinado tipo (clave, certificado, etc.).
|
|
byte[] | SPBGetCertificate (cadena strIdCertificate) |
| Recupera un certificado almacenado en un espacio de nombres del HSM.
|
|
cadena | SPBGenerateKey (cadena ISPB, cadena dominio, bool isExportable) |
| Genera una clave RSA 2048 según el estándar SPB. Esta función siempre se ajustará a los requisitos de SPB, según el manual de seguridad de RSFN. DinamoClient.GenerateKey(cadena, KEY_ALG, bool)
|
|
byte[] | SPBGenerateCSR (cadena sPrivateKeyName, cadena sSubject) |
| Genera una nueva CSR basada en una clave existente (RSA 2048).
|
|
byte[] | SPBEncode (string szSrcISPB, string szDstISPB, byte[] pbMsgIn, byte bSpecialTreatment) |
| Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
|
|
byte[] | SPBEncode (string szSrcISPB, string szDstISPB, byte[] pbMsgIn, byte bSpecialTreatment, byte bErrorCode, UInt32 dwFlags) |
| Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
|
|
void | SPBEncode (cadena szSrcISPB, cadena szDstISPB, flujo sMsgIn, flujo sMsgOut, byte bErrorCode, byte bSpecialTreatment, UInt32 dwFlags) |
| Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
|
|
byte[] | SPBDecode (cadena szSrcISPB, cadena szDstISPB, byte[] pbMsgIn) |
| Descodifica un mensaje en el estándar SPB, comprobando las firmas, descifrando, pero no comprueba la codificación.
|
|
byte[] | SPBDecode (cadena szSrcISPB, cadena szDstISPB, byte[] pbMsgIn, bool AcceptExpiredCert, bool AutoUpdateCert) |
| Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
|
|
byte[] | SPBDecode (cadena szSrcISPB, cadena szDstISPB, byte[] pbMsgIn, bool AcceptExpiredCert, bool AutoUpdateCert, UInt32 dwFlags) |
| Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
|
|
void | SPBDecode (cadena szSrcISPB, cadena szDstISPB, flujo sMsgIn, flujo sMsgOut, bool AcceptExpiredCert, bool AutoUpdateCert, UInt32 dwFlags) |
| Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
|
|
cadena | SPBMapInfoCert (cadena sIdCert) |
| Crea un mapa con el certificado de la institución en una ranura.
|
|
void | SPBSetISPBMap (cadena sIdMap, cadena sIdKey, cadena sIdCert) |
| Crea un mapa con la clave y el certificado de la institución en una ranura.
|
|
void | SPBImportPKCS12 (cadena szPkcs12File, cadena szPkcs12Pwd, cadena szNamespace, cadena szDomain, int dwKeyAttr) |
| Importa un certificado desde un contenedor PKCS#12 al HSM.
|
|
void | SPBImportPKCS12 (cadena szPkcs12File, cadena szPkcs12Pwd, cadena szNamespace, cadena szDomain, int dwKeyAttr, bool isActivate) |
| Importa un certificado desde un contenedor PKCS#12 al HSM.
|
|
void | SPBImportCertificate (cadena szDominio, byte[] bCertificado) |
| Importar un certificado a un espacio de nombres HSM.
|
|
void | SPBImportCertificate (cadena szDomain, byte[] bCertificate, bool isCIPCertificate=false) |
| Importar un certificado a un espacio de nombres HSM.
|
|
void | SPBActivateCertificate (cadena szDomain, cadena szCA, cadena szSN, bool isCIPCertificate=false) |
| Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
|
|
void | SPBImportCertificate (cadena szNamespace, cadena szDomain, byte[] bCertificate, bool isCIPCertificate=false) |
| Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
|
|
void | SPBActivateCertificate (cadena szNamespace, cadena szDomain, cadena szCA, cadena szSN, bool isCIPCertificate=false) |
| Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
|
|
cadena | SPBCalculateObjectId (cadena szISPB, cadena szDomain, KEYNAME dwKeyType) |
| Función que ayuda a dar formato a la identificación de objetos HSM internos de acuerdo con la norma utilizada en el móduloSPB.
|
|
DinamoApi.SPB_CERT_X509_INFO | SPBGetCertificateInfo (byte[] certificado) |
| Recupera información del certificado.
|
|
◆ SPBListObjects()
Lista los objetos de un determinado tipo (clave, certificado, etc.).
- Parámetros
-
- Excepciones
-
◆ SPBGetCertificate()
byte[] SPBGetCertificate |
( |
cadena | strIdCertificado | ) |
|
|
en línea |
Recupera un certificado almacenado en un espacio de nombres del HSM.
- Parámetros
-
strIdCertificado | identificação do certificado no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
- Devolución
- Devolución del certificado en formato DER como matriz de bytes
- Excepciones
-
- Ejemplos
- spb_import_activate.cs.
◆ SPBGenerateKey()
cadena SPBGenerateKey |
( |
cadena | ISPB, |
|
|
cadena | dominio, |
|
|
bool | isExportable ) |
|
en línea |
Genera una clave RSA 2048 según el estándar SPB. Esta función siempre se ajustará a los requisitos de SPB, según el manual de seguridad de RSFN. DinamoClient.GenerateKey(cadena, KEY_ALG, bool)
- Parámetros
-
ISPB | Número ISBP |
dominio | Dominio |
isExportable | True para generar una clave exportable |
- Devolución
- Etiqueta de la clave generada
- Excepciones
-
◆ SPBGenerarCSR()
byte[] SPBGenerateCSR |
( |
cadena | sPrivateKeyName, |
|
|
cadena | sAsunto ) |
|
en línea |
Genera una nueva CSR basada en una clave existente (RSA 2048).
- Parámetros
-
sPrivateKeyName | Identificación de claves en el HSM |
sAsunto | Descripción del asunto del certificado DN (Dinstinguished Name) de la CSR para generar el campo Asunto del certificado. Los campos DN deben estar separados por "/". |
- Devolución
- Etiqueta de la clave generada
- Excepciones
-
◆ SPBEncode() [1/3]
byte[] SPBEncode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
byte[] | pbMsgIn, |
|
|
byte | bTratamientoEspecial ) |
|
en línea |
Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
pbMsgIn | Mensaje pasado como matriz de bytes. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
bTratamientoEspecial | Indicador de tratamiento especial. Véase C04 en el manual de seguridad SPB. |
- Devolución
- Mensaje firmado.
- Excepciones
-
- Ejemplos
- spb.cs y spb_file_cip.cs.
◆ SPBEncode() [2/3]
byte[] SPBEncode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
byte[] | pbMsgIn, |
|
|
byte | bTratamientoEspecial, |
|
|
byte | bCódigoError, |
|
|
UInt32 | dwFlags ) |
|
en línea |
Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
pbMsgIn | Mensaje pasado como matriz de bytes. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
bTratamientoEspecial | Indicador de tratamiento especial. Véase C04 en el manual de seguridad SPB. |
bErrorCode | Código de error del mensaje que se colocará en la cabecera de seguridad, normalmente en los mensajes de respuesta. |
dwFlags | Define los detalles de codificación y puede adoptar los siguientes valores descritos en la tabla siguiente.
Valor | Significado |
0 | Utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_ENCODE_GEN_01 | Genera un mensaje GEN 01. |
DinamoApi.ND_SPB_USE_CIP1 | Utiliza el estándar CIP(Camara Interbancaria de Pagamentos)/C3 Nuclea. Cuando este indicador no está activado, se utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_USE_ANY | Acepta el estándar CIP/C3 Nuclea y SPB. La detección se realiza internamente. |
DinamoApi.ND_SPB_ENCODE_HEADER_V3 | Codifica el mensaje utilizando la cabecera de seguridad versión 3. En el futuro, esta opción estará activada por defecto. La cabecera V3 está disponible a partir de la versión 5.0.16 del firmware del HSM. |
|
DinamoApi.ND_SPB_RAW
Modo sin comprobaciones específicas de SPB. Sólo acepta el uso del nombre MAP como parámetros para szSrcISPB
e szDstISPB
.
- Devolución
- Mensaje firmado.
- Excepciones
-
◆ SPBEncode() [3/3]
void SPBEncode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
Corriente | sMsgIn, |
|
|
Corriente | sMsgOut, |
|
|
byte | bCódigoError, |
|
|
byte | bTratamientoEspecial, |
|
|
UInt32 | dwFlags ) |
|
en línea |
Cifra un mensaje con la cabecera SPB, firmando, cifrando e incluyendo todos los campos de cabecera definidos en el manual de seguridad RSFN.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
sMsgIn | Mensaje a codificar. El flujo pasado debe admitir la propiedad Length. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
sMsgOut | Flujo que recibirá el mensaje de salida codificado. El flujo introducido debe admitir la propiedad Length y el método Seek. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
bTratamientoEspecial | Indicador de tratamiento especial. Véase C04 en el manual de seguridad SPB. |
bErrorCode | Código de error del mensaje que se colocará en la cabecera de seguridad, normalmente en los mensajes de respuesta. |
dwFlags | Define los detalles de codificación y puede adoptar los siguientes valores descritos en la tabla siguiente.
Valor | Significado |
0 | Utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_ENCODE_GEN_01 | Genera un mensaje GEN 01. |
DinamoApi.ND_SPB_USE_CIP1 | Utiliza el estándar CIP(Camara Interbancaria de Pagamentos)/C3 Nuclea. Cuando este indicador no está activado, se utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_USE_ANY | Acepta el estándar CIP/C3 Nuclea y SPB. La detección se realiza internamente. |
DinamoApi.ND_SPB_ENCODE_HEADER_V3 | Codifica el mensaje utilizando la cabecera de seguridad versión 3. En el futuro, esta opción estará activada por defecto. La cabecera V3 está disponible a partir de la versión 5.0.16 del firmware del HSM. |
|
DinamoApi.ND_SPB_RAW
Modo sin comprobaciones específicas de SPB. Sólo acepta el uso del nombre MAP como parámetros para szSrcISPB
e szDstISPB
.
- Excepciones
-
◆ SPBDecode() [1/4]
byte[] SPBDecode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
byte[] | pbMsgIn ) |
|
en línea |
Descodifica un mensaje en el estándar SPB, comprobando las firmas, descifrando, pero no comprueba la codificación.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
pbMsgIn | Mensaje codificado en el estándar SPB pasado como una matriz de bytes. |
- Devolución
- Mensaje decodificado.
- Excepciones
-
- Ejemplos
- spb.cs y spb_file_cip.cs.
◆ SPBDecode() [2/4]
byte[] SPBDecode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
byte[] | pbMsgIn, |
|
|
bool | AcceptExpiredCert, |
|
|
bool | AutoUpdateCert ) |
|
en línea |
Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
pbMsgIn | Mensaje codificado en el estándar SPB pasado como una matriz de bytes. |
AcceptExpiredCert | Acepta operaciones incluso con un certificado caducado. |
AutoUpdateCert | Interpreta los mensajes de intercambio de certificados y realiza la operación internamente de forma automática. |
- Devolución
- Mensaje decodificado.
- Excepciones
-
◆ SPBDecode() [3/4]
byte[] SPBDecode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
byte[] | pbMsgIn, |
|
|
bool | AcceptExpiredCert, |
|
|
bool | AutoUpdateCert, |
|
|
UInt32 | dwFlags ) |
|
en línea |
Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
pbMsgIn | Mensaje codificado en el estándar SPB pasado como una matriz de bytes. |
AcceptExpiredCert | Acepta operaciones incluso con un certificado caducado. |
AutoUpdateCert | Interpreta los mensajes de intercambio de certificados y realiza la operación internamente de forma automática. |
dwFlags | Define los detalles de descodificación y puede adoptar los siguientes valores descritos en la tabla siguiente.
Valor | Significado |
0 | Utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_OUT_NO_PADDING | Elimina el relleno del final del mensaje SPB tras el descifrado. |
DinamoApi.ND_SPB_OUT_WITH_PADDING | Mantiene el relleno al final del mensaje SPB tras el descifrado. |
DinamoApi.ND_SPB_USE_CIP1 | Utiliza el estándar CIP(Camara Interbancaria de Pagamentos)/C3 Nuclea. Cuando este indicador no está activado, se utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_USE_ANY | Acepta el estándar CIP/C3 Nuclea y SPB. La detección se realiza internamente. |
|
- Devolución
- Mensaje decodificado.
DinamoApi.ND_SPB_RAW | Modo sin comprobaciones específicas de SPB. Sólo acepta el uso del nombre MAP como parámetros para szSrcISPB
e szDstISPB
.
- Excepciones
-
◆ SPBDecode() [4/4]
void SPBDecode |
( |
cadena | szSrcISPB, |
|
|
cadena | szDstISPB, |
|
|
Corriente | sMsgIn, |
|
|
Corriente | sMsgOut, |
|
|
bool | AcceptExpiredCert, |
|
|
bool | AutoUpdateCert, |
|
|
UInt32 | dwFlags ) |
|
en línea |
Descifra un mensaje en el estándar SPB, comprobando las firmas y descifrando.
- Parámetros
-
szSrcISPB | Identificação do ISPB de origem no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
szDstISPB | Identificação do ISPB de destino no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". Também pode ser passado o nome do map correspondente, fora do padrão de nomenclatura do módulo SPB em casos específicos, ver dwFlags . |
sMsgIn | Mensaje codificado en el estándar SPB. El flujo pasado debe admitir la propiedad Length. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
sMsgOut | Flujo que recibirá el mensaje de salida codificado. El flujo introducido debe admitir la propiedad Length y el método Seek. HSM no realiza conversiones automáticas de formato. En el estándar SPB, el formato definido es UTF16-BE, y corresponde a quien llama a la API asegurarse de que el mensaje utiliza el formato correcto. |
AcceptExpiredCert | Acepta operaciones incluso con un certificado caducado. |
AutoUpdateCert | Interpreta los mensajes de intercambio de certificados y realiza la operación internamente de forma automática. |
dwFlags | Define los detalles de descodificación y puede adoptar los siguientes valores descritos en la tabla siguiente.
Valor | Significado |
0 | Utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_OUT_NO_PADDING | Elimina el relleno del final del mensaje SPB tras el descifrado. |
DinamoApi.ND_SPB_OUT_WITH_PADDING | Mantiene el relleno al final del mensaje SPB tras el descifrado. |
DinamoApi.ND_SPB_USE_CIP1 | Utiliza el estándar CIP(Camara Interbancaria de Pagamentos)/C3 Nuclea. Cuando este indicador no está activado, se utiliza el estándar SPB (Sistema Brasileño de Pagos). |
DinamoApi.ND_SPB_USE_ANY | Acepta el estándar CIP/C3 Nuclea y SPB. La detección se realiza internamente. |
|
DinamoApi.ND_SPB_RAW
Modo sin comprobaciones específicas de SPB. Sólo acepta el uso del nombre MAP como parámetros para szSrcISPB
e szDstISPB
.
- Excepciones
-
◆ SPBMapInfoCert()
cadena SPBMapInfoCert |
( |
cadena | sIdCert | ) |
|
|
en línea |
Crea un mapa con el certificado de la institución en una ranura.
- Parámetros
-
sIdCert | Identificación/etiqueta del certificado en el HSM |
- Devolución
- Nombre del objeto de mapa creado en HSM.
- Excepciones
-
◆ SPBSetISPBMap()
void SPBSetISPBMap |
( |
cadena | sIdMap, |
|
|
cadena | sIdKey, |
|
|
cadena | sIdCert ) |
|
en línea |
Crea un mapa con la clave y el certificado de la institución en una ranura.
- Parámetros
-
sIdMap | Identificación del mapa (puede ser ISPB) |
sIdKey | Identificación de claves |
sIdCert | Identificación del certificado |
- Excepciones
-
◆ SPBImportPKCS12() [1/2]
void SPBImportPKCS12 |
( |
cadena | szPkcs12Archivo, |
|
|
cadena | szPkcs12Pwd, |
|
|
cadena | szNamespace, |
|
|
cadena | szDominio, |
|
|
int | dwKeyAttr ) |
|
en línea |
Importa un certificado desde un contenedor PKCS#12 al HSM.
- Parámetros
-
szPkcs12Archivo | Ruta y nombre del archivo. |
szPkcs12Pwd | Contraseña |
szNamespace | Partición en la que se encuentra el objeto. Si el objeto se encuentra en la misma partición que la registrada, puede pasar null . |
szDominio | Dominio del SPB. |
dwKeyAttr | Parámetros clave adicionales.
|
- Excepciones
-
◆ SPBImportPKCS12() [2/2]
void SPBImportPKCS12 |
( |
cadena | szPkcs12Archivo, |
|
|
cadena | szPkcs12Pwd, |
|
|
cadena | szNamespace, |
|
|
cadena | szDominio, |
|
|
int | dwKeyAttr, |
|
|
bool | isActivate ) |
|
en línea |
Importa un certificado desde un contenedor PKCS#12 al HSM.
- Parámetros
-
szPkcs12Archivo | Ruta y nombre del archivo. |
szPkcs12Pwd | Contraseña. |
szNamespace | Partición en la que se encuentra el objeto. Si el objeto se encuentra en la misma partición que la registrada, puede pasar null . |
szDominio | Dominio del SPB. |
dwKeyAttr | Parámetros clave adicionales.
|
isActivate | Activa el certificado durante la importación |
- Excepciones
-
◆ SPBImportCertificate() [1/3]
void SPBImportCertificate |
( |
cadena | szDominio, |
|
|
byte[] | bCertificado ) |
|
en línea |
Importar un certificado a un espacio de nombres HSM.
- Parámetros
-
szDominio | Dominio del SPB. |
bCertificado | Certificado SPB en el estándar SPB como matriz de bytes. |
- Excepciones
-
- Ejemplos
- spb_import_activate.cs.
◆ SPBImportCertificate() [2/3]
void SPBImportCertificate |
( |
cadena | szDominio, |
|
|
byte[] | bCertificado, |
|
|
bool | isCIPCertificate = false ) |
|
en línea |
Importar un certificado a un espacio de nombres HSM.
- Parámetros
-
szDominio | Dominio del SPB. |
bCertificado | Certificado SPB en el estándar SPB como matriz de bytes. |
isCIPCertificado | Verdadero si el certificado está en el estándar CIP. |
- Excepciones
-
◆ SPBActivateCertificate() [1/2]
void SPBActivateCertificate |
( |
cadena | szDominio, |
|
|
cadena | szCA, |
|
|
cadena | szSN, |
|
|
bool | isCIPCertificate = false ) |
|
en línea |
Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
- Parámetros
-
szDominio | Dominio del SPB. |
szCA | Identificación de la CA (número de CA). |
szSN | Número de serie del certificado en formato hexadecimal |
isCIPCertificado | Verdadero si el certificado está en el estándar CIP. |
Los números CA existentes pueden consultarse en el manual de seguridad RSFN.
- Excepciones
-
- Ejemplos
- spb_import_activate.cs.
◆ SPBImportCertificate() [3/3]
void SPBImportCertificate |
( |
cadena | szNamespace, |
|
|
cadena | szDominio, |
|
|
byte[] | bCertificado, |
|
|
bool | isCIPCertificate = false ) |
|
en línea |
Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
- Parámetros
-
szNamespace | Partición en la que se encuentra el objeto. Si el objeto se encuentra en la misma partición que la registrada, puede pasar null . |
szDominio | Dominio del SPB. |
bCertificado | Certificado SPB en el estándar SPB como matriz de bytes. |
isCIPCertificado | Verdadero si el certificado está en el estándar CIP. |
- Excepciones
-
◆ SPBActivateCertificate() [2/2]
void SPBActivateCertificate |
( |
cadena | szNamespace, |
|
|
cadena | szDominio, |
|
|
cadena | szCA, |
|
|
cadena | szSN, |
|
|
bool | isCIPCertificate = false ) |
|
en línea |
Activa un certificado que ya se ha importado en el HSM. Si hay otro certificado activo, se desactivará. Sólo permanecerá activo un certificado por institución, por dominio dentro de un espacio de nombres de HSM.
- Parámetros
-
szNamespace | Partición en la que se encuentra el objeto. Si el objeto se encuentra en la misma partición que la registrada, puede pasar null . |
szDominio | Dominio del SPB. |
szCA | Identificación de la CA (número de CA). |
szSN | Número de serie del certificado en formato hexadecimal |
isCIPCertificado | Verdadero si el certificado está en el estándar CIP. |
Los números CA existentes pueden consultarse en el manual de seguridad RSFN.
- Excepciones
-
◆ SPBCalculateObjectId()
cadena SPBCalculateObjectId |
( |
cadena | szISPB, |
|
|
cadena | szDominio, |
|
|
KEYNAME | dwKeyType ) |
|
en línea |
Función que ayuda a dar formato a la identificación de objetos HSM internos de acuerdo con la norma utilizada en el móduloSPB.
- Parámetros
-
szISPB | identificação do ISPB no formato "<ISPB>@<Dominio>". Por exemplo: "11223344@SPR". |
szDominio | Dominio del SPB. |
dwKeyType | Tipo de objeto. Dinamo.Hsm.DinamoClient.KEYNAME |
- Devolución
- Nombre en formato de módulo SPB.
◆ SPBGetCertificateInfo()