# RSA Cryptography

O **RSA Cryptography** criptografa e descriptografa com base no algoritmo RSA.

## **Parâmetros**

Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por [expressões Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) estão marcados com `(DB)`.

### **Aba General**

<table data-full-width="true"><thead><tr><th>Parameter</th><th>Description</th><th>Default value</th><th>Data type</th></tr></thead><tbody><tr><td><strong>Account</strong></td><td>Conta a ser utilizada pelo conector.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Crypto Operation</strong></td><td>Tipos de operação disponíveis: <strong>Encrypt Fields</strong>, <strong>Decrypt Fields</strong>, <strong>Encrypt Payload</strong>, <strong>Decrypt Payload</strong>, <strong>Unwrap Key</strong> e <strong>Wrap Key</strong>.</td><td>Encrypt Fields</td><td>String</td></tr><tr><td><strong>Fields To Encrypt/Decrypt</strong></td><td>Campos a serem criptografados/descriptografados utilizando notação pontilhada (ex.: <code>body.field1</code>, <code>body.field2</code>, <code>body</code>).</td><td>a.test</td><td>String</td></tr><tr><td><strong>Payload To Encrypt/Decrypt</strong></td><td>Payload a ser criptografado/descriptografado utilizando notação pontilhada.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Secret Key</strong></td><td>Chave secreta a ser encapsulada/desencapsulada utilizando notação pontilhada.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Operation Mode</strong></td><td>Modo de operação a ser utilizado.</td><td>ECB</td><td>String</td></tr><tr><td><strong>Padding</strong></td><td>Usado em um bloco cifrado onde os blocos são preenchidos com bytes de padding (ex.: AES 128 bits utiliza 16 bytes de padding).</td><td>OAEPWithSHA-512AndMGF1Padding</td><td>String</td></tr><tr><td><strong>Charset</strong></td><td>Charset da chave fornecida do tipo string.</td><td>UTF-8</td><td>String</td></tr><tr><td><strong>Encrypted Message As Hexa</strong></td><td>Se ativada, a resposta da chave secreta será em formato hexadecimal; caso contrário, será em base64.</td><td>False</td><td>Boolean</td></tr><tr><td><strong>Fail On Error</strong></td><td>Se a opção for ativada, a execução do pipeline com erro será interrompida. Caso contrário, a execução do pipeline continua, mas o resultado mostrará um valor falso para a propriedade <code>"success"</code>.</td><td>False</td><td>Booleano</td></tr></tbody></table>

### **Aba Documentation**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Seção para documentar qualquer informação necessária sobre a configuração do conector e regras de negócio.</td><td>N/A</td><td>String</td></tr></tbody></table>

Para criptografar ou encapsular, é necessário configurar uma conta com **Public Key**. As operações de criptografia também suportam a propriedade key via body com a respectiva chave.

Para descriptografar ou desencapsular, é necessário configurar uma conta com **Private Key**.

## **Informações adicionais sobre os parâmetros**

### **Wrap e Unwrap Key**

As operações de encapsulamento e desencapsulamento diferem ligeiramente das operações de criptografia e descriptografia. Quando você **encapsula uma chave**, não apenas a criptografa, mas também adiciona proteção de integridade para garantir que a chave não seja adulterada. Da mesma forma, quando você **desencapsula uma chave**, você a descriptografa enquanto valida sua integridade.

No conector RSA Cryptography, essas operações são projetadas para encapsular com segurança uma chave de sessão (ou secreta) para transferência por meio de outros conectores Digibee, garantindo tanto a confidencialidade quanto a integridade.

Como essas funcionalidades são experimentais, apenas uma configuração específica é atualmente suportada.

#### **Para a operação Wrap Key**

<figure><img src="https://content.gitbook.com/content/SKBJ6ZiEWBU93x170HH4/blobs/7w5zbGRdEWBw4yYBpkRk/[PT]%20Wrap%20Key%20-%20RSA%20Cryptography.png" alt=""><figcaption></figcaption></figure>

No campo **Account**, você deve selecionar uma chave pública de um par de chaves RSA de 2048 bits.

No campo **Secret Key**, você deve especificar uma chave AES de 256 bits proveniente do payload de entrada. Utilize a notação pontilhada para referenciar o campo correspondente.

Os valores serão criptografados no formato hexadecimal.

A operação de encapsulamento RSA será realizada com os seguintes parâmetros:

* **Operation Mode**: ECB
* **Padding Scheme**: OAEPWithSHA-256AndMGF1Padding

#### **Para a operação Unwrap Key**

<figure><img src="https://content.gitbook.com/content/SKBJ6ZiEWBU93x170HH4/blobs/sVwpnYEEUFSrLiSdKjBh/[PT]%20Unwrap%20key%20-%20RSA%20Cryptography.png" alt=""><figcaption></figcaption></figure>

No campo **Account**, você deve selecionar uma chave privada de um par de chaves RSA de 2048 bits.

No campo **Secret Key**, você deve especificar uma chave AES de 256 bits proveniente do payload de entrada. Utilize a notação pontilhada para referenciar o campo correspondente.

Os valores serão criptografados no formato hexadecimal.

A operação de desencapsulamento RSA será realizada com os seguintes parâmetros:

* **Operation Mode**: ECB
* **Padding Scheme**: OAEPWithSHA-256AndMGF1Padding

## **Fluxo de mensagens**

### **Operação: Encrypt Fields**

#### **Entrada**

{% code overflow="wrap" %}

```json
{
    "operation": "encrypt_fields",
    "operationMode": "ECB",
    "padding": "OAEPWithSHA1AndMGF1Padding",
    "encryptedFields": "data,data1",
    "failOnError": true,
    "key": "PoeK/VBTcUyRHFkmWYjckbhsRLnZur6S83lKZ78V51EL3KlDNnPJZkdz+m7joRfOxFuEqU=" // Inform the Key parameter if the Account is not configured
}
```

{% endcode %}

#### **Payload**

```json
{
    "data": someData,
    "data1": someData1
}
```

#### **Saída**

```json
{
    "data": "RXZlbiBpZiBwZXJmZWN0IGNyeXB0b2dyYXBoaWMgcm91dGluZXMgYXJlIH=",
    "data1": "RXZlbiBpZifd441mZWN0IGNyeXB0b2dyYXBoaWMgcm91dGluZXMgYXJlIH="
}
```

### **Operação: Decrypt Fields**

#### **Entrada**

```json
{
    "operation": "decrypt_fields",
    "operationMode": "ECB",
    "padding": "OAEPWithSHA1AndMGF1Padding",
    "encryptedFields": "data,data1",
    "failOnError": true
}
```

#### **Payload**

```json
{
    "data": "RXZlbiBpZiBwZXJmZWN0IGNyeXB0b2dyYXBoaWMgcm91dGluZXMgYXJlIH=",
    "data1": "RXZlbiBpZifd441mZWN0IGNyeXB0b2dyYXBoaWMgcm91dGluZXMgYXJlIH="
}
```

#### **Saída**

```json
{
    "data": someData,
    "data1": someData1
}
```

### **Operação: Wrap Key**

#### **Payload**

```json
{
  "encryptedData": {
    "key": "D379C385D6234349046ABCFD42160E5B461E852A63F53B8FDA3B6ED044332E34"
  }
}
```

#### **Saída**

{% code overflow="wrap" %}

```json
{
  "encryptedData": {
    "key": "1e9fbbe9f77020cd05318d71ae242c68ab62981cc40b0e88c42ad89bb24807e46c6589edbb81bc7271c3824d60c2fa754651325eb2510a7cd82125f4ca9356b0b48d2dea8e8348f68173eabecb096a4c41a4a852ec2fb7cd9b0381d080e9d1e09a0bb614d3bbf550e52fe4583a5fdd47623e13256c69ee434b6c44d2e90de89804f0e0ff1c83f25adeef9ae89e657b79d8270511b9be5ce56a8955b2c8c5356c9639e6556c12c208a58e2d30e554a51d3a45317de54ab7380482f2d9f6d70c0223594b39c1c2f6f1d28301cb128167946082085c6dbf89825b6fc41929380305d4a5009d85c97d3d08f9672e66e71188b02eb23dffcb40271f1bb7b4d2f4fd5b"
  }
}
```

{% endcode %}

### **Operação: Unwrap Key**

#### **Payload**

{% code overflow="wrap" %}

```json
{
  "encryptedData": {
    "key": "1e9fbbe9f77020cd05318d71ae242c68ab62981cc40b0e88c42ad89bb24807e46c6589edbb81bc7271c3824d60c2fa754651325eb2510a7cd82125f4ca9356b0b48d2dea8e8348f68173eabecb096a4c41a4a852ec2fb7cd9b0381d080e9d1e09a0bb614d3bbf550e52fe4583a5fdd47623e13256c69ee434b6c44d2e90de89804f0e0ff1c83f25adeef9ae89e657b79d8270511b9be5ce56a8955b2c8c5356c9639e6556c12c208a58e2d30e554a51d3a45317de54ab7380482f2d9f6d70c0223594b39c1c2f6f1d28301cb128167946082085c6dbf89825b6fc41929380305d4a5009d85c97d3d08f9672e66e71188b02eb23dffcb40271f1bb7b4d2f4fd5b"
  }
}
```

{% endcode %}

#### **Saída**

```json
{
  "encryptedData": {
    "key": "D379C385D6234349046ABCFD42160E5B461E852A63F53B8FDA3B6ED044332E34"
  }
}
```
