summaryrefslogtreecommitdiff
path: root/src/util/generator.ts
diff options
context:
space:
mode:
authorRaphael <mail@raphaelkabo.com>2023-10-08 19:26:04 +0100
committerGitHub <noreply@github.com>2023-10-08 19:26:04 +0100
commit44e150bc7f8391b56b78a0697dbd128a8bf8be7b (patch)
treeef065e69228453d5d49b886157a4a88ed3540474 /src/util/generator.ts
parent9ef8e220b4fb582d620016d293b340a63ec97cff (diff)
parent608532d24d868d939fd2cef6302d8d5089a81ee4 (diff)
Merge pull request #112 from lowercasename/rk/typescript
Typescript migration
Diffstat (limited to 'src/util/generator.ts')
-rw-r--r--src/util/generator.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/util/generator.ts b/src/util/generator.ts
new file mode 100644
index 0000000..596110d
--- /dev/null
+++ b/src/util/generator.ts
@@ -0,0 +1,34 @@
+import crypto from "crypto";
+import { customAlphabet } from "nanoid";
+
+// This alphabet (used to generate all event, group, etc. IDs) is missing '-'
+// because ActivityPub doesn't like it in IDs
+const nanoid = customAlphabet(
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_",
+ 21,
+);
+
+const generateAlphanumericString = (length: number) => {
+ return Array(length)
+ .fill(0)
+ .map((x) => Math.random().toString(36).charAt(2))
+ .join("");
+};
+
+export const generateEventID = () => nanoid();
+
+export const generateEditToken = () => generateAlphanumericString(32);
+
+export const generateRSAKeypair = () => {
+ return crypto.generateKeyPairSync("rsa", {
+ modulusLength: 4096,
+ publicKeyEncoding: {
+ type: "spki",
+ format: "pem",
+ },
+ privateKeyEncoding: {
+ type: "pkcs8",
+ format: "pem",
+ },
+ });
+};