mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 15:28:25 +00:00
Requested changes
This commit is contained in:
@@ -8,10 +8,6 @@ import { TUserEncryptionKeys } from "@app/db/schemas";
|
|||||||
|
|
||||||
import { decryptSymmetric, encryptAsymmetric, encryptSymmetric } from "./encryption";
|
import { decryptSymmetric, encryptAsymmetric, encryptSymmetric } from "./encryption";
|
||||||
|
|
||||||
// Importing the argon2 constants from the argon2 module fails due to an issue with importing commonjs modules.
|
|
||||||
// Read more: https://stackoverflow.com/questions/70605320/named-export-types-not-found-the-requested-module-mongoose-is-a-commonjs-mo
|
|
||||||
const ARGON_2_ID = 2;
|
|
||||||
|
|
||||||
export const generateSrpServerKey = async (salt: string, verifier: string) => {
|
export const generateSrpServerKey = async (salt: string, verifier: string) => {
|
||||||
// eslint-disable-next-line new-cap
|
// eslint-disable-next-line new-cap
|
||||||
const server = new jsrp.server();
|
const server = new jsrp.server();
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
import crypto from "crypto";
|
|
||||||
|
|
||||||
import { ProjectMembershipRole, TProjectKeys } from "@app/db/schemas";
|
|
||||||
|
|
||||||
import { decryptAsymmetric, encryptAsymmetric } from "../crypto";
|
|
||||||
|
|
||||||
type AddUserToWsDTO = {
|
|
||||||
decryptKey: TProjectKeys & { sender: { publicKey: string } };
|
|
||||||
userPrivateKey: string;
|
|
||||||
members: {
|
|
||||||
orgMembershipId: string;
|
|
||||||
projectMembershipRole: ProjectMembershipRole;
|
|
||||||
userPublicKey: string;
|
|
||||||
}[];
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createWsMembers = ({ members, decryptKey, userPrivateKey }: AddUserToWsDTO) => {
|
|
||||||
const key = decryptAsymmetric({
|
|
||||||
ciphertext: decryptKey.encryptedKey,
|
|
||||||
nonce: decryptKey.nonce,
|
|
||||||
publicKey: decryptKey.sender.publicKey,
|
|
||||||
privateKey: userPrivateKey
|
|
||||||
});
|
|
||||||
|
|
||||||
const newWsMembers = members.map(({ orgMembershipId, userPublicKey, projectMembershipRole }) => {
|
|
||||||
const { ciphertext: inviteeCipherText, nonce: inviteeNonce } = encryptAsymmetric(
|
|
||||||
key,
|
|
||||||
userPublicKey,
|
|
||||||
userPrivateKey
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
orgMembershipId,
|
|
||||||
projectRole: projectMembershipRole,
|
|
||||||
workspaceEncryptedKey: inviteeCipherText,
|
|
||||||
workspaceEncryptedNonce: inviteeNonce
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
return newWsMembers;
|
|
||||||
};
|
|
||||||
|
|
||||||
type TCreateProjectKeyDTO = {
|
|
||||||
publicKey: string;
|
|
||||||
privateKey: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createProjectKey = ({ publicKey, privateKey }: TCreateProjectKeyDTO) => {
|
|
||||||
// 3. Create a random key that we'll use as the project key.
|
|
||||||
const randomBytes = crypto.randomBytes(16).toString("hex");
|
|
||||||
|
|
||||||
// 4. Encrypt the project key with the users key pair.
|
|
||||||
const { ciphertext: encryptedProjectKey, nonce: encryptedProjectKeyIv } = encryptAsymmetric(
|
|
||||||
randomBytes,
|
|
||||||
publicKey,
|
|
||||||
privateKey
|
|
||||||
);
|
|
||||||
|
|
||||||
return { key: encryptedProjectKey, iv: encryptedProjectKeyIv };
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user