diff options
author | Raphael <mail@raphaelkabo.com> | 2023-10-08 19:26:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-08 19:26:04 +0100 |
commit | 44e150bc7f8391b56b78a0697dbd128a8bf8be7b (patch) | |
tree | ef065e69228453d5d49b886157a4a88ed3540474 /src/util/generator.ts | |
parent | 9ef8e220b4fb582d620016d293b340a63ec97cff (diff) | |
parent | 608532d24d868d939fd2cef6302d8d5089a81ee4 (diff) |
Merge pull request #112 from lowercasename/rk/typescript
Typescript migration
Diffstat (limited to 'src/util/generator.ts')
-rw-r--r-- | src/util/generator.ts | 34 |
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", + }, + }); +}; |