From 58819aad94b23d56a5b46bb879270f3c635b4d88 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Wed, 17 Jul 2024 08:46:32 +0000 Subject: [PATCH] feat(cryptography/actions): add output encoding field --- .../cryptography/actions/create-hmac/index.js | 18 +++++++++++++++-- .../create-rsa-sha256-signature/index.js | 20 ++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/apps/cryptography/actions/create-hmac/index.js b/packages/backend/src/apps/cryptography/actions/create-hmac/index.js index 0058f27c..e14f0d67 100644 --- a/packages/backend/src/apps/cryptography/actions/create-hmac/index.js +++ b/packages/backend/src/apps/cryptography/actions/create-hmac/index.js @@ -27,19 +27,33 @@ export default defineAction({ variables: true, }, { - label: 'Secret key', + label: 'Secret Key', key: 'secretKey', type: 'string', required: true, description: 'The secret key used to create the HMAC.', variables: true, }, + { + label: 'Output Encoding', + key: 'outputEncoding', + type: 'dropdown', + required: true, + value: 'hex', + description: 'Specifies the encoding format for the HMAC digest output.', + options: [ + { label: 'base64', value: 'base64' }, + { label: 'base64url', value: 'base64url' }, + { label: 'hex', value: 'hex' }, + ], + variables: true, + }, ], async run($) { const hash = createHmac($.step.parameters.algorithm, $.step.parameters.secretKey) .update($.step.parameters.message) - .digest('hex'); + .digest($.step.parameters.outputEncoding); $.setActionItem({ raw: { diff --git a/packages/backend/src/apps/cryptography/actions/create-rsa-sha256-signature/index.js b/packages/backend/src/apps/cryptography/actions/create-rsa-sha256-signature/index.js index e7847ba5..446309e8 100644 --- a/packages/backend/src/apps/cryptography/actions/create-rsa-sha256-signature/index.js +++ b/packages/backend/src/apps/cryptography/actions/create-rsa-sha256-signature/index.js @@ -27,20 +27,34 @@ export default defineAction({ variables: true, }, { - label: 'Private key', + label: 'Private Key', key: 'privateKey', type: 'string', required: true, description: 'The RSA private key in PEM format used for signing.', variables: true, - } + }, + { + label: 'Output Encoding', + key: 'outputEncoding', + type: 'dropdown', + required: true, + value: 'hex', + description: 'Specifies the encoding format for the digital signature output. This determines how the generated signature will be represented as a string.', + options: [ + { label: 'base64', value: 'base64' }, + { label: 'base64url', value: 'base64url' }, + { label: 'hex', value: 'hex' }, + ], + variables: true, + }, ], async run($) { const signer = crypto.createSign($.step.parameters.algorithm); signer.update($.step.parameters.message); signer.end(); - const signature = signer.sign($.step.parameters.privateKey, 'hex'); + const signature = signer.sign($.step.parameters.privateKey, $.step.parameters.outputEncoding); $.setActionItem({ raw: {