diff --git a/packages/backend/src/apps/cryptography/actions/create-hmac/index.js b/packages/backend/src/apps/cryptography/actions/create-hmac/index.js
new file mode 100644
index 00000000..5d4d71f4
--- /dev/null
+++ b/packages/backend/src/apps/cryptography/actions/create-hmac/index.js
@@ -0,0 +1,50 @@
+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 data.',
+ 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: 'Secret key',
+ key: 'secretKey',
+ type: 'string',
+ required: true,
+ description: 'The secret key used to create the HMAC.',
+ variables: true,
+ },
+ {
+ label: 'Message data',
+ key: 'data',
+ type: 'string',
+ required: true,
+ description: 'The input data or message to be hashed. This is the data that will be processed to generate the HMAC.',
+ variables: true,
+ },
+ ],
+
+ async run($) {
+ const hash = createHmac($.step.parameters.algorithm, $.step.parameters.secretKey)
+ .update($.step.parameters.data)
+ .digest('hex');
+
+ $.setActionItem({
+ raw: {
+ hash
+ },
+ });
+ },
+});
diff --git a/packages/backend/src/apps/cryptography/actions/index.js b/packages/backend/src/apps/cryptography/actions/index.js
new file mode 100644
index 00000000..55f2ca82
--- /dev/null
+++ b/packages/backend/src/apps/cryptography/actions/index.js
@@ -0,0 +1,3 @@
+import createHmac from './create-hmac/index.js';
+
+export default [createHmac];
diff --git a/packages/backend/src/apps/cryptography/assets/favicon.svg b/packages/backend/src/apps/cryptography/assets/favicon.svg
new file mode 100644
index 00000000..da529327
--- /dev/null
+++ b/packages/backend/src/apps/cryptography/assets/favicon.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/backend/src/apps/cryptography/index.js b/packages/backend/src/apps/cryptography/index.js
new file mode 100644
index 00000000..23e57b2e
--- /dev/null
+++ b/packages/backend/src/apps/cryptography/index.js
@@ -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,
+});
diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js
index 219a1d51..216b6514 100644
--- a/packages/docs/pages/.vitepress/config.js
+++ b/packages/docs/pages/.vitepress/config.js
@@ -59,6 +59,15 @@ export default defineConfig({
{ text: 'Connection', link: '/apps/carbone/connection' },
],
},
+ {
+ text: 'Cryptography',
+ collapsible: true,
+ collapsed: true,
+ items: [
+ { text: 'Actions', link: '/apps/cryptography/actions' },
+ { text: 'Connection', link: '/apps/cryptography/connection' },
+ ],
+ },
{
text: 'Datastore',
collapsible: true,
diff --git a/packages/docs/pages/apps/cryptography/actions.md b/packages/docs/pages/apps/cryptography/actions.md
new file mode 100644
index 00000000..9b28d7c4
--- /dev/null
+++ b/packages/docs/pages/apps/cryptography/actions.md
@@ -0,0 +1,12 @@
+---
+favicon: /favicons/cryptography.svg
+items:
+ - name: Create HMAC
+ desc: Create a Hash-based Message Authentication Code (HMAC) using the specified algorithm, secret key, and message data.
+---
+
+
+
+
diff --git a/packages/docs/pages/apps/cryptography/connection.md b/packages/docs/pages/apps/cryptography/connection.md
new file mode 100644
index 00000000..5cf28566
--- /dev/null
+++ b/packages/docs/pages/apps/cryptography/connection.md
@@ -0,0 +1,3 @@
+# Cryptography
+
+Cryptography is a built-in app shipped with Automatisch, allowing you to perform cryptographic operations without needing to connect to any external services.
diff --git a/packages/docs/pages/public/favicons/cryptography.svg b/packages/docs/pages/public/favicons/cryptography.svg
new file mode 100644
index 00000000..da529327
--- /dev/null
+++ b/packages/docs/pages/public/favicons/cryptography.svg
@@ -0,0 +1,3 @@
+