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.

api crypto

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:

Request

POST http:/<<su-dominio>>/ api-crypto/api/v1/digest

Headers

Nombre Descripción

Content-Type

Debería ser application / json

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 saltType trata el tipo de salt informado y puede asumir valores HEX (Hexadecimal) o ASCII (String).

DigestType trata el tipo de digest devuelto y puede asumir valores HEX (Hexadecimal) o Base64.

Response Body

La respuesta traerá su digest con tamaño fijo, de acuerdo con el algoritmo hash utilizado.

{
  "digest": "string"
}

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
gif swagger api crypto

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.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]