Merge pull request #1965 from automatisch/add-cryptography-app
feat: add cryptography app with createHmac and createSignature actions
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { createHmac } from 'node:crypto';
|
||||
import defineAction from '../../../../helpers/define-action.js';
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create HMAC',
|
||||
key: 'createHmac',
|
||||
description: 'Create a Hash-based Message Authentication Code (HMAC) using the specified algorithm, secret key, and message.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Algorithm',
|
||||
key: 'algorithm',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
value: 'sha256',
|
||||
description: 'Specifies the cryptographic hash function to use for HMAC generation.',
|
||||
options: [
|
||||
{ label: 'SHA-256', value: 'sha256' },
|
||||
],
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Message',
|
||||
key: 'message',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'The input message to be hashed. This is the value that will be processed to generate the HMAC.',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
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($.step.parameters.outputEncoding);
|
||||
|
||||
$.setActionItem({
|
||||
raw: {
|
||||
hash
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
@@ -0,0 +1,65 @@
|
||||
import crypto from 'node:crypto';
|
||||
import defineAction from '../../../../helpers/define-action.js';
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create Signature',
|
||||
key: 'createSignature',
|
||||
description: 'Create a digital signature using the specified algorithm, secret key, and message.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Algorithm',
|
||||
key: 'algorithm',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
value: 'RSA-SHA256',
|
||||
description: 'Specifies the cryptographic hash function to use for HMAC generation.',
|
||||
options: [
|
||||
{ label: 'RSA-SHA256', value: 'RSA-SHA256' },
|
||||
],
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Message',
|
||||
key: 'message',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'The input message to be signed.',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
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, $.step.parameters.outputEncoding);
|
||||
|
||||
$.setActionItem({
|
||||
raw: {
|
||||
signature
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
4
packages/backend/src/apps/cryptography/actions/index.js
Normal file
4
packages/backend/src/apps/cryptography/actions/index.js
Normal file
@@ -0,0 +1,4 @@
|
||||
import createHmac from './create-hmac/index.js';
|
||||
import createRsaSha256Signature from './create-rsa-sha256-signature/index.js';
|
||||
|
||||
export default [createHmac, createRsaSha256Signature];
|
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100pt" height="100pt" version="1.1" viewBox="0 0 100 100">
|
||||
<path d="m66.012 33h-3.0117v-11c0-7.1719-5.8281-13-13-13s-13 5.8281-13 13v11h-3.0117c-2.75 0-4.9883 2.2383-4.9883 4.9883v28.012c0 2.75 2.2383 4.9883 4.9883 4.9883h32.012c2.75 0 4.9883-2.2383 4.9883-4.9883v-28.012c0.011719-2.75-2.2266-4.9883-4.9766-4.9883zm-27.012-11c0-6.0703 4.9297-11 11-11s11 4.9297 11 11v11h-22zm30 44.012c0 1.6484-1.3398 2.9883-2.9883 2.9883h-32.023c-1.6484 0-2.9883-1.3398-2.9883-2.9883v-28.023c0-1.6484 1.3398-2.9883 2.9883-2.9883h32.023c1.6484 0 2.9883 1.3398 2.9883 2.9883zm-18 9.9883v14c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-14c0-0.55078 0.44922-1 1-1s1 0.44922 1 1zm20 8c0 0.55078-0.44922 1-1 1h-8c-0.55078 0-1-0.44922-1-1v-8c0-0.55078 0.44922-1 1-1s1 0.44922 1 1v7h7c0.55078 0 1 0.44922 1 1zm-32-8v8c0 0.55078-0.44922 1-1 1h-8c-0.55078 0-1-0.44922-1-1s0.44922-1 1-1h7v-7c0-0.55078 0.44922-1 1-1s1 0.44922 1 1zm-14-26c0 0.55078-0.44922 1-1 1h-14c-0.55078 0-1-0.44922-1-1s0.44922-1 1-1h14c0.55078 0 1 0.44922 1 1zm0-12c0 0.55078-0.44922 1-1 1h-8c-0.55078 0-1-0.44922-1-1v-8c0-0.55078 0.44922-1 1-1s1 0.44922 1 1v7h7c0.55078 0 1 0.44922 1 1zm0 24c0 0.55078-0.44922 1-1 1h-7v7c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-8c0-0.55078 0.44922-1 1-1h8c0.55078 0 1 0.44922 1 1zm66-12c0 0.55078-0.44922 1-1 1h-14c-0.55078 0-1-0.44922-1-1s0.44922-1 1-1h14c0.55078 0 1 0.44922 1 1zm-16-12c0-0.55078 0.44922-1 1-1h7v-7c0-0.55078 0.44922-1 1-1s1 0.44922 1 1v8c0 0.55078-0.44922 1-1 1h-8c-0.55078 0-1-0.44922-1-1zm10 24v8c0 0.55078-0.44922 1-1 1s-1-0.44922-1-1v-7h-7c-0.55078 0-1-0.44922-1-1s0.44922-1 1-1h8c0.55078 0 1 0.44922 1 1zm-35-17c-2.7617 0-5 2.2383-5 5 0 2.4102 1.7188 4.4297 4 4.8984v5.1016c0 0.55078 0.44922 1 1 1s1-0.44922 1-1v-5.1016c2.2812-0.46094 4-2.4805 4-4.8984 0-2.7617-2.2383-5-5-5zm0 8c-1.6484 0-3-1.3516-3-3s1.3516-3 3-3 3 1.3516 3 3-1.3516 3-3 3z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
14
packages/backend/src/apps/cryptography/index.js
Normal file
14
packages/backend/src/apps/cryptography/index.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import defineApp from '../../helpers/define-app.js';
|
||||
import actions from './actions/index.js';
|
||||
|
||||
export default defineApp({
|
||||
name: 'Cryptography',
|
||||
key: 'cryptography',
|
||||
iconUrl: '{BASE_URL}/apps/cryptography/assets/favicon.svg',
|
||||
authDocUrl: '{DOCS_URL}/apps/cryptography/connection',
|
||||
supportsConnections: false,
|
||||
baseUrl: '',
|
||||
apiBaseUrl: '',
|
||||
primaryColor: '001F52',
|
||||
actions,
|
||||
});
|
Reference in New Issue
Block a user