Histórico da Página
...
JSON Web Encryption (JWE) é um padrão que define uma maneira compacta e independente de transmitir informações seguras como um objeto JSON.
A principal funcionalidade do JWE é permitir a criptografia de conteúdo, garantindo a confidencialidade dos dados.
Informações |
---|
Este padrão é útil em contextos onde é necessário garantir a integridade e a confidencialidade das informações, como em transações financeiras ou dados sensíveis. |
Exemplo
...
...
Bloco de código |
---|
User Function testjwe() |
...
// Variáveis para armazenar a chave JWK RSA e o texto a ser criptografado |
...
Local jwkRsa |
...
Local plainText := "Texto a ser criptografado" |
...
// Definindo a chave JWK RSA em formato JSON |
...
jwkRsa := '{"kty": "RSA","n":"oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw","e": "AQAB","d":"kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ","p": "1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0","q":"wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc","dp":"ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE","dq":"Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis","qi":"VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY"}' |
...
// Função para criptografar e descriptografar texto usando RSA-OAEP e A256GCM |
...
u_encryptRsaOaepAndAesGcm(jwkRsa, plainText) |
...
Return |
...
User Function encryptRsaOaepAndAesGcm(jwkRsa, plainText) |
...
Local tokenJWE := "" |
...
Local plainTextDecrypted := "" |
...
Local oTokenJWE := Nil |
...
// Criando uma instância da classe JWE |
...
oTokenJWE:= tJWE():New() |
...
// Importando a chave JWK RSA para o objeto JWE |
...
oTokenJWE:importKeyJWK(jwkRsa, LEN(jwkRsa)) |
...
...
// Configurando um novo cabeçalho JWE |
...
oTokenJWE:newHeader() |
...
// Definindo algoritmos de criptografia no cabeçalho JWE |
...
oTokenJWE:setHeader("alg","RSA-OAEP") |
...
oTokenJWE:setHeader("enc","A256GCM") |
...
// Criptografando o texto |
...
oTokenJWE:encrypt(plainText) |
...
// Obtendo o token JWE criptografado |
...
tokenJWE := oTokenJWE:getToken() |
...
// Verificando erros e exibindo o token JWE criptografado |
...
if (Len(tokenJWE) == 0) |
...
conout("Erro na criptografia do token. Error: "+ oTokenJWE:getLastError()) |
...
end if |
...
conout("Token gerado: " + tokenJWE) |
...
// Deserializando token JWE |
...
oTokenJWE:deserializeJWE() |
...
// Descriptografando o token JWE |
...
plainTextDecrypted := oTokenJWE:decrypt() |
...
// Verificando erros na descriptografia e exibindo o texto descriptografado |
...
if (Len(plainTextDecrypted) == 0) |
...
conout("Erro na descriptografia do token. Error: "+ oTokenJWE:getLastError()) |
...
end if |
...
conout("Token Descriptografado: " + plainTextDecrypted) |
...
// Liberando o objeto JWE |
...
oTokenJWE:release() |
...
FreeObj(oTokenJWE) |
...
Return |
Abrangência
20.3.2.4
...
Construtores
...
Nome | Tipo | Descrição |
---|---|---|
oObj | object | Nova instância da classe tJWE |
Exemplos
...
Bloco de código |
---|
Local oTokenJWE:= tJWE():New() |
...
...
Métodos
A classe expõe os seguintes métodos:
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cJwk | character | Representação da chave no formato JSON Web Key. | X | |
nKeyLength | numeric | Indica o tamanho da chave. | X |
Exemplos
Bloco de código |
---|
|
...
|
...
oTokenJWE:importKeyJWK(jwkRsa, LEN(jwkRsa)) |
...
newHeader
Cria um novo cabeçalho JWE para a instância atual do objeto tJWE.
Sintaxe
newHeader()
Exemplos
Bloco de código |
---|
|
...
|
...
oTokenJWE:newHeader() |
...
setHeader
Define um par chave-valor no cabeçalho JWE.
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cAttr | character | O nome do atributo a ser definido no cabeçalho JWE. | X | |
cValue | character | O valor correspondente ao atributo no cabeçalho JWE. | X |
Exemplos
Bloco de código |
---|
...
oTokenJWE:setHeader("alg","RSA-OAEP") |
...
...
oTokenJWE:setHeader("enc","A256GCM") |
...
encrypt
Criptografa o texto fornecido e armazena o resultado no token JWE.
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cPlainText | character | O texto a ser criptografado. | X |
Exemplos
Bloco de código |
---|
...
oTokenJWE:encrypt("Texto a ser criptografado") |
...
getToken
Retorna o token JWE criptografado.
...
Retorno | Tipo | Descrição |
---|---|---|
cRet | character | Retorna uma string que representa o token JWE criptografado. |
Exemplos
...
Bloco de código |
---|
tokenJWE := oTokenJWE:getToken() |
...
deserializeJWE
Prepara o token JWE criptografado para descriptografia.
Sintaxe
deserializeJWE()
Exemplos
Bloco de código |
---|
...
oTokenJWE:deserializeJWE() |
...
decrypt
Descriptografa o token JWE e retorna o texto original.
...
Retorno | Tipo | Descrição |
---|---|---|
cRet | character | Retorna uma string que representa o texto descriptografado. |
Exemplos
Bloco de código |
---|
|
...
plainTextDecrypted |
...
:= oTokenJWE:decrypt() |
...
getLastError
Obtem o registro de erro da última operação executada sem sucesso
...
Retorno | Tipo | Descrição |
---|---|---|
cRet | character | Retorna uma string que descreve o último erro ocorrido. |
Exemplos
...
Bloco de código |
---|
conout("Erro: "+ oTokenJWE:getLastError()) |
...
release
Libera os recursos alocados pelo objeto tJWE.
Sintaxe
release()
Exemplos
...
Bloco de código |
---|
oTokenJWE:release() |