как сгенерировать JWE в узле с помощью enc A256GCM и alg RSA-OAEP
Я хочу создать JWE с
- контент, зашифрованный с помощью A256GM
- Ключ шифрования, зашифрованный с помощью RSA-OAEP
Насколько я понял, мне нужны следующие поля заголовка JWE:
{“alg”:”RSA-OAEP”,”enc”:”A256GCM”}
Итак, я сгенерировал ключ:
const props = {
kid: 'gBdaS-G8RLax2qgObTD94w',
alg: 'RSA-OAEP',
use: 'enc',
enc: 'A256GCM',
};
keyStore.generate('oct', 256, props).then(function (result) {
// generate a RSA public/private key too
// write the keys
}
а затем я зашифровал/расшифровал свой контент:
const encrypted = await JWE.createEncrypt(
keyStore.get(process.env.JWE_KID ?? '')
)
.update(JSON.stringify(myContentToEncrypt))
.final();
...
const decryptedContent = await JWE.createDecrypt(
keyStore.get(process.env.JWE_KID ?? '')
).decrypt(contentToDecrypt ?? '{}');
Это работает, но когда я смотрю на расшифрованный заголовок, происходит следующее:
{ enc: 'A256GCM', alg: 'dir', kid: 'gBdaS-G8RLax2qgObTD94w' }
в
alg
является
dir
. Я предполагаю, что я неправильно генерирую ключ (ключи) или пропускаю некоторую информацию, которую я должен установить при шифровании. Как я могу получить зашифрованный контент с помощью сгенерированного AES ключа шифрования, зашифрованного с помощью
RSA-OAEP
?