API Crypto
API Crypto es una API mantenida por Sensedia y que está registrada previamente en el API Manager. Puede utilizarla para realizar operaciones de cifrado. Estas operaciones se pueden utilizar en el flujo de otros interceptores, como Digital Signature y Encrypt.
Esta página muestra ejemplos sobre cómo utilizar cada recurso de API.
Digest
Este recurso genera un resumen a partir de un algoritmo, datos y un salt. En este momento, el algoritmo disponible para la función hash es PBKDF2-HMAC-SHA1.
Este es un ejemplo del uso de este recurso con el payload requerido, y después un bloque de código de payload con todos los atributos posibles para la función hash.
Salts son importantes para evitar ataques de diccionario, ya que se concatenan con los datos antes de ser procesados por la función hash, agregando aleatoriedad al digest generado. |
Ejemplo de digest generado a partir de un dato determinado utilizando una función PBKDF2-HMAC-SHA1:
Headers
Nombre | Descripción |
---|---|
Content-Type |
Debería ser |
Authorization |
Basic client_id:client_secret (Base64) |
Todos los endpoints de esta API están protegidos con el interceptor Client Id Secret Encoded Validation.
Por lo tanto, todas las peticiones deben contener el header Authorization descrito anteriormente.
|
Request body
{
"algorithm": "PBKDF2",
"data": "desired-data",
"salt": "desired-salt"
}
Hay atributos opcionales en el cuerpo que, cuando no se informa, asumen el valor predeterminado de:
{
"algorithm": "PBKDF2",
"data": "desired-data",
"salt": "desired-salt",
"saltType": "ASCII",
"digestType": "BASE64",
"length": 32,
"iterations": 1000
}
El atributo
|
Keys
El recurso keys
genera pares de claves público-privadas.
Estas claves son esenciales si está utilizando el interceptor Digital Signature, pero el recurso funciona independientemente de los interceptores.
Es decir, puedes usarlo para generar claves para los contextos más diversos.
El recurso tiene los siguientes métodos y endpoints:
POST http://<<su-domínio>>/api-crypto/api/v1/keys
El método anterior genera un par de claves. Como requisito, necesita un payload que contenga qué tipo de algoritmo se utilizará para generar las claves.
Ejemplo de generación de claves RSA:
{
"type": "RSA"
}
Una vez que se realiza la petición, se incluirá un par de claves en la respuesta:
{
"privateKey": "su clave privada en Base64 estará contenida en esta propiedad",
"publicKey": "su clave pública en Base64 estará contenida en esta propiedad",
"type": "RSA",
"creationDate": 1596730568927
}
En este momento, los tipos admitidos son RSA y AES .
|
Además del endpoint descrito anteriormente, también existe un endpoint exclusivamente para la obtención de una clave pública:
GET http://<<su-domínio>>/api-crypto/api/v1/keys/public
Este endpoint es fácil de usar. Una petición GET devolverá una clave pública RSA, como en el siguiente ejemplo:
{
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIU/OVuiOQwOQDGiJ0c59dDXstBBVdmyQEjxampko+uvA6PfbHxwNKuMI1vk1qmXipWLoldYLrnFN6uF4OVYdsdfNlXTqrgMI79+fkjtNN4XhDER09vAmVFoqOb9ltgY84cQR82hhX0UtoqTVwhREIAaik+0NO+KBYrIfXdgeh2wIDAQAB"
}
Sign
Este recurso firma una clave. Un caso de uso de la Plataforma se describe en el flujo del interceptor Digital Signature.
POST http://<<su-domínio>>/api-crypto/api/v1/sign
El backend espera un payload con las siguientes propiedades:
{
"type": "RSA",
"data": "data",
"algorithm": "SHA1"
}
Una vez realizada la petición, la firma quedará en el cuerpo.
{
"signature": "k4OoVH9uiNjDpVPqTho17FBdgdROJyT2FD2ngoxSmo/vMPUye8fXZFO1fqj0iI23AXtliRnLxGgndNLAqEY0PAPMtNy0C8MGoQeSSCuRema9q36gNOgUFTtXz/2HiwGN8mbI5p8+CzyPoJvwAI9Xn3nrosSJh5+NIdHFhirQziU="
}
Como se describió anteriormente, se pueden encontrar más ejemplos sobre cómo usar los recursos sign y keys en la Plataforma en la página sobre el interceptor Digital Signature.
|
Verify
El recurso verify
tiene un solo endpoint, que valida la clave y la firma.
GET http://<<su-domínio>>/api-crypto/api/v1/verify
La petición debe contener un JSON con algunas propiedades obligatorias:
"signature": "signature",
"data": "data",
"algoritmo": "algoritmo utilizado para generar la firma",
"type": "key type"
La respuesta contendrá una única propiedad, indicando si la clave y la firma son válidas.
Swagger
Hay un archivo Swagger para API Crypto. Puede verlo para verificar los DTO (objetos de transferencia de datos) utilizados para cada punto final, lo que ayuda a comprender los payloads y la forma en que funciona cada recurso. Este es el URI para acceder a la interfaz Swagger:
GET http://<<su-domínio>>/api-crypto/api/v1/swagger-ui.html
Ejemplos de uso del cifrado generado por el módulo API Crypto
Para obtener más ejemplos sobre el uso de API Crypto, consulte las páginas de los interceptores Digital Signature y Encrypt.
Share your suggestions with us!
Click here and then [+ Submit idea]