autocreate folder keys
This commit is contained in:
parent
f2f80dd2f7
commit
c73774dc03
3 changed files with 27 additions and 9 deletions
|
@ -1,2 +1,4 @@
|
|||
ASSET_API_ASSETS_FOLDER = "./.assets/"
|
||||
ASSET_API_IDENTITY_API_ENDPOINT = "http://localhost:3000/"
|
||||
ASSET_API_PRIVATE_KEY_PATH = "./.keys/m2m.pem"
|
||||
ASSET_API_PUBLIC_KEY_PATH = "./.keys/m2m.pub"
|
|
@ -18,7 +18,9 @@ import "dotenv/config";
|
|||
|
||||
const REQUIRED_VARS = [
|
||||
"ASSET_API_ASSETS_FOLDER",
|
||||
"ASSET_API_IDENTITY_API_ENDPOINT"
|
||||
"ASSET_API_IDENTITY_API_ENDPOINT",
|
||||
"ASSET_API_PRIVATE_KEY_PATH",
|
||||
"ASSET_API_PUBLIC_KEY_PATH",
|
||||
];
|
||||
|
||||
REQUIRED_VARS.forEach((element) => {
|
||||
|
@ -36,3 +38,5 @@ export const LISTEN_PORT = Number(process.env["ASSET_API_LISTEN_PORT"]) || 3001;
|
|||
export const ASSETS_FOLDER = process.env["ASSET_API_ASSETS_FOLDER"];
|
||||
export const IDENTITY_API_ENDPOINT = process.env["ASSET_API_IDENTITY_API_ENDPOINT"];
|
||||
export const M2M_ALGORITHM = process.env["ASSET_API_M2M_ALGORITHM"] || "RSA-SHA512";
|
||||
export const PRIVATE_KEY_PATH = process.env["ASSET_API_PRIVATE_KEY_PATH"]
|
||||
export const PUBLIC_KEY_PATH = process.env["ASSET_API_PUBLIC_KEY_PATH"]
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import { readFile } from "node:fs/promises";
|
||||
import { createWriteStream, readFileSync, writeFileSync } from "node:fs";
|
||||
import { createWriteStream, mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
|
||||
import { createSign, generateKeyPairSync, randomUUID } from "node:crypto";
|
||||
import Fastify from "fastify";
|
||||
import multipart from "@fastify/multipart";
|
||||
|
@ -24,7 +24,7 @@ import mime from "mime";
|
|||
import { promisify } from "node:util";
|
||||
import { pipeline } from "node:stream";
|
||||
import cors from "@fastify/cors";
|
||||
import { M2M_ALGORITHM, ASSETS_FOLDER, ASSET_API_LANDING_MESSAGE, IDENTITY_API_ENDPOINT } from "./consts.js";
|
||||
import { M2M_ALGORITHM, ASSETS_FOLDER, ASSET_API_LANDING_MESSAGE, IDENTITY_API_ENDPOINT, PRIVATE_KEY_PATH, PUBLIC_KEY_PATH } from "./consts.js";
|
||||
|
||||
const { private: M2M_PRIVATE_KEY, public: M2M_PUBLIC_KEY } = loadM2MKeys();
|
||||
if (M2M_PRIVATE_KEY == null || M2M_PUBLIC_KEY == null) {
|
||||
|
@ -131,11 +131,11 @@ app.listen({ port: 3001 });
|
|||
function loadM2MKeys() {
|
||||
try {
|
||||
return {
|
||||
private: readFileSync("./.keys/m2m.pem").toString("ascii"),
|
||||
public: readFileSync("./.keys/m2m.pub").toString("ascii"),
|
||||
private: readFileSync(PRIVATE_KEY_PATH).toString("ascii"),
|
||||
public: readFileSync(PUBLIC_KEY_PATH).toString("ascii"),
|
||||
};
|
||||
} catch {
|
||||
console.warn("Generating M2M key pair!");
|
||||
console.warn("M2M key pair not found. Generating M2M key pair!");
|
||||
|
||||
let { publicKey, privateKey } = generateKeyPairSync("rsa", {
|
||||
modulusLength: 4096,
|
||||
|
@ -149,8 +149,20 @@ function loadM2MKeys() {
|
|||
},
|
||||
});
|
||||
|
||||
writeFileSync("./.keys/m2m.pem", privateKey);
|
||||
writeFileSync("./.keys/m2m.pub", publicKey);
|
||||
let privateDir = join(PRIVATE_KEY_PATH, "..");
|
||||
if (!existsSync(privateDir)) {
|
||||
console.warn("The private key folder does not exist. It will be created.")
|
||||
mkdirSync(privateDir, { recursive: true });
|
||||
}
|
||||
|
||||
let publicDir = join(PUBLIC_KEY_PATH, "..");
|
||||
if (!existsSync(publicDir)) {
|
||||
console.warn("The public key folder does not exist. It will be created.")
|
||||
mkdirSync(publicDir, { recursive: true });
|
||||
}
|
||||
|
||||
writeFileSync(PRIVATE_KEY_PATH, privateKey);
|
||||
writeFileSync(PUBLIC_KEY_PATH, publicKey);
|
||||
|
||||
return loadM2MKeys();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue