Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(Feat): Interacting with projects programmatically #1400

Merged
merged 157 commits into from
Feb 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
031a241
Schemas (mostly linting)
DanielHougaard Feb 4, 2024
3612e58
Ghost user migration
DanielHougaard Feb 4, 2024
8e3cddc
TS erros
DanielHougaard Feb 4, 2024
aec0e86
Crypto stuff
DanielHougaard Feb 4, 2024
80a8023
Helper functions for adding workspace members on serverside
DanielHougaard Feb 4, 2024
fe21ba0
Ghost user!
DanielHougaard Feb 4, 2024
ccc409e
Wired most of the frontend to support ghost users
DanielHougaard Feb 5, 2024
3ad0382
Added DAL methods
DanielHougaard Feb 5, 2024
34d1bbc
Added SRP helpers to serverside
DanielHougaard Feb 5, 2024
a714094
Fixes
DanielHougaard Feb 5, 2024
729ec78
Update bot-router.ts
DanielHougaard Feb 5, 2024
b9840ce
Add project role
DanielHougaard Feb 5, 2024
db77386
Update project-router.ts
DanielHougaard Feb 5, 2024
84cab17
Ghost user WIP
DanielHougaard Feb 5, 2024
3b1fc4b
More gohst user
DanielHougaard Feb 6, 2024
8a11eeb
Typo
DanielHougaard Feb 6, 2024
f47fdfe
Update licence-fns.ts
DanielHougaard Feb 6, 2024
f2c36c5
Fix project seed (seeds old projects that can be upgraded)
DanielHougaard Feb 9, 2024
8fd9985
Ghost
DanielHougaard Feb 9, 2024
0cfab8a
Update index.ts
DanielHougaard Feb 9, 2024
8333250
Ghost user and migration finished!
DanielHougaard Feb 9, 2024
4802a36
Finished migration
DanielHougaard Feb 13, 2024
5364480
Update models.ts
DanielHougaard Feb 13, 2024
4aa5822
Don't show ghost users
DanielHougaard Feb 13, 2024
ec3cf02
Add transaction support
DanielHougaard Feb 13, 2024
819a9b8
Finish upgrade queue
DanielHougaard Feb 13, 2024
8e13eb6
Update project-service.ts
DanielHougaard Feb 13, 2024
6dcab66
Make it impossible to log in with the ghost user
DanielHougaard Feb 13, 2024
69cba4e
Make alert only visible to admins and add reloading on completion
DanielHougaard Feb 13, 2024
8f3de3c
Small UI fixes on approvals page (color and capitalization and spelling)
DanielHougaard Feb 13, 2024
5156971
Add feature flag for showing upgrade project modal
DanielHougaard Feb 13, 2024
075f457
Update models.ts
DanielHougaard Feb 13, 2024
a3a1a00
Add auth methods
DanielHougaard Feb 13, 2024
858b49d
Add delete memberships by email
DanielHougaard Feb 13, 2024
37645ba
Update project-router.ts
DanielHougaard Feb 13, 2024
45327f1
Update project-bot-service.ts
DanielHougaard Feb 13, 2024
5409cff
Update project-key-service.ts
DanielHougaard Feb 13, 2024
1b82a15
Find membership by email
DanielHougaard Feb 13, 2024
4cca82c
New service for deleting memberships by email
DanielHougaard Feb 13, 2024
26576b6
Update project-membership-types.ts
DanielHougaard Feb 13, 2024
f2dcc83
New doc routes
DanielHougaard Feb 13, 2024
d3d429d
Delete membership by email
DanielHougaard Feb 13, 2024
bf27835
Delete membership by email
DanielHougaard Feb 13, 2024
60747b1
Error renaming
DanielHougaard Feb 13, 2024
e54b261
Add new routes
DanielHougaard Feb 13, 2024
9287eb7
Increase random size
DanielHougaard Feb 13, 2024
6fa11fe
Allow getting bot, but not creating
DanielHougaard Feb 13, 2024
8c3569a
Check if project is v2 before allowing a bot to be created
DanielHougaard Feb 13, 2024
6090f86
Move check to inside service
DanielHougaard Feb 13, 2024
bb92cef
Fix dummy signup project to support V2
DanielHougaard Feb 13, 2024
31b5f77
Frontend bot logic
DanielHougaard Feb 13, 2024
04c12d9
Revert seed
DanielHougaard Feb 13, 2024
f378d6c
Update srp.ts
DanielHougaard Feb 13, 2024
5680b98
Update srp.ts
DanielHougaard Feb 13, 2024
592271d
Fix for commonJS
DanielHougaard Feb 13, 2024
e8ec5b8
Update check-api-for-breaking-changes.yml
DanielHougaard Feb 13, 2024
39ae66a
Update project-router.ts
DanielHougaard Feb 13, 2024
c0e0ddd
Update project-router.ts
DanielHougaard Feb 13, 2024
3415514
Update project-router.ts
DanielHougaard Feb 13, 2024
43aae87
Update project-router.ts
DanielHougaard Feb 13, 2024
ebb8d63
Fix for "random" crash on creation
DanielHougaard Feb 14, 2024
9b62937
More
DanielHougaard Feb 16, 2024
0c53eb8
Test decrypt fix
DanielHougaard Feb 16, 2024
9f9849c
Move migration to latest
DanielHougaard Feb 16, 2024
23e198d
Update UpgradeProjectAlert.tsx
DanielHougaard Feb 16, 2024
7ea5323
Update project-queue.ts
DanielHougaard Feb 16, 2024
b0356ba
More tests
DanielHougaard Feb 16, 2024
f7e6a96
Cleanup
DanielHougaard Feb 16, 2024
419916e
Block secret mutations during upgrade
DanielHougaard Feb 16, 2024
a6e263e
Requested changes
DanielHougaard Feb 17, 2024
108f3cf
Requested changes
DanielHougaard Feb 17, 2024
4121c1d
Requested changes
DanielHougaard Feb 17, 2024
c1c66da
Improved polling
DanielHougaard Feb 17, 2024
9ce7137
cx -> twMerge
DanielHougaard Feb 17, 2024
49d07a6
Fixed versioning bug
DanielHougaard Feb 17, 2024
1e9d490
Update project-service.ts
DanielHougaard Feb 17, 2024
41d3b93
Throw before completion (FOR TESTING!)
DanielHougaard Feb 17, 2024
2ef7e8f
Improved invite user to project (even though this function isn't actu…
DanielHougaard Feb 17, 2024
a7bc62f
Akhil requested changes
DanielHougaard Feb 17, 2024
bea24d9
Remove rate limiter
DanielHougaard Feb 17, 2024
c0b11b8
improve the styling of the project upgrade banner
vmatsiiako Feb 17, 2024
fb2a213
Refactor migration to work with conflict/merge update logic
DanielHougaard Feb 19, 2024
66e57d5
correct error log
maidul98 Feb 20, 2024
75813de
Fixed integrations & bulk update issue
DanielHougaard Feb 20, 2024
0f3ec51
Update project-queue.ts
DanielHougaard Feb 20, 2024
28287b8
Update project-queue.ts
DanielHougaard Feb 20, 2024
f35f105
Get last 700 secret versions instead of 100
DanielHougaard Feb 21, 2024
3ea529d
Update srp.ts
DanielHougaard Feb 21, 2024
ec6ec88
Moved
DanielHougaard Feb 21, 2024
ed353d3
Extra
DanielHougaard Feb 21, 2024
f178220
Documentation
DanielHougaard Feb 21, 2024
04b4e80
Documentation
DanielHougaard Feb 21, 2024
c16bf2a
Removed unused invite-signup endpoint (finally)
DanielHougaard Feb 21, 2024
0931a17
Convert check to a standalone DAL operation
DanielHougaard Feb 21, 2024
a0e25b8
Describe
DanielHougaard Feb 21, 2024
ae3606c
Optional slug on create project
DanielHougaard Feb 21, 2024
9c11226
Renaming
DanielHougaard Feb 21, 2024
0b7efa5
Proper update project endpoint
DanielHougaard Feb 21, 2024
82fe0bb
Update project-bot-service.ts
DanielHougaard Feb 21, 2024
cee8ead
Update org-dal.ts
DanielHougaard Feb 21, 2024
c20f6e5
Update project-router.ts
DanielHougaard Feb 21, 2024
65e3f0e
Update 3-project.ts
DanielHougaard Feb 21, 2024
0fa0e4e
Ghost user migration
DanielHougaard Feb 4, 2024
5b550a9
TS erros
DanielHougaard Feb 4, 2024
2a4bda4
Crypto stuff
DanielHougaard Feb 4, 2024
423ad49
Helper functions for adding workspace members on serverside
DanielHougaard Feb 4, 2024
a366dbb
Ghost user!
DanielHougaard Feb 4, 2024
4b37b2a
Wired most of the frontend to support ghost users
DanielHougaard Feb 5, 2024
863bbd4
Added DAL methods
DanielHougaard Feb 5, 2024
a1d11c0
Fixes
DanielHougaard Feb 5, 2024
5dfc841
Update bot-router.ts
DanielHougaard Feb 5, 2024
c33741d
Ghost user WIP
DanielHougaard Feb 5, 2024
e445970
More gohst user
DanielHougaard Feb 6, 2024
dc6497f
Update licence-fns.ts
DanielHougaard Feb 6, 2024
0cecf05
Fix project seed (seeds old projects that can be upgraded)
DanielHougaard Feb 9, 2024
6064c39
Ghost
DanielHougaard Feb 9, 2024
7f1963f
Update index.ts
DanielHougaard Feb 9, 2024
0f98fc9
Ghost user and migration finished!
DanielHougaard Feb 9, 2024
bb6e8b1
Finished migration
DanielHougaard Feb 13, 2024
9efece1
Update models.ts
DanielHougaard Feb 13, 2024
773756d
Add transaction support
DanielHougaard Feb 13, 2024
b587e6a
Update models.ts
DanielHougaard Feb 13, 2024
4c5100d
Update project-key-service.ts
DanielHougaard Feb 13, 2024
fb9cdb5
Error renaming
DanielHougaard Feb 13, 2024
178492e
Add logger to avoid crash
DanielHougaard Feb 13, 2024
198dc05
Allow getting bot, but not creating
DanielHougaard Feb 13, 2024
28b2411
Move check to inside service
DanielHougaard Feb 13, 2024
faa842c
Revert seed
DanielHougaard Feb 13, 2024
b5e64bc
Update srp.ts
DanielHougaard Feb 13, 2024
8a39276
Fix for commonJS
DanielHougaard Feb 13, 2024
021413f
Update project-router.ts
DanielHougaard Feb 13, 2024
4ab47ca
Fix for "random" crash on creation
DanielHougaard Feb 14, 2024
debf80c
More
DanielHougaard Feb 16, 2024
50128bb
Test decrypt fix
DanielHougaard Feb 16, 2024
5b1f07a
Move migration to latest
DanielHougaard Feb 16, 2024
27b4749
More tests
DanielHougaard Feb 16, 2024
8e49825
Cleanup
DanielHougaard Feb 16, 2024
bf9b47a
Requested changes
DanielHougaard Feb 17, 2024
fe7524f
Requested changes
DanielHougaard Feb 17, 2024
68ac1d2
Improved polling
DanielHougaard Feb 17, 2024
4657985
Update project-service.ts
DanielHougaard Feb 17, 2024
10fbb99
Refactor migration to work with conflict/merge update logic
DanielHougaard Feb 19, 2024
aa81711
Fixed integrations & bulk update issue
DanielHougaard Feb 20, 2024
cab47d0
Update project-queue.ts
DanielHougaard Feb 20, 2024
8be976a
Get last 700 secret versions instead of 100
DanielHougaard Feb 21, 2024
368974c
Moved
DanielHougaard Feb 21, 2024
2cbd2ee
Update project-router.ts
DanielHougaard Feb 21, 2024
9f0d09f
Update seed-data.ts
DanielHougaard Feb 21, 2024
816c793
Update index.tsx
DanielHougaard Feb 21, 2024
7816d85
Final changes
DanielHougaard Feb 22, 2024
bdb0ed3
Removed redundantcies
DanielHougaard Feb 22, 2024
0a5112d
Update run-backend-tests.yml
DanielHougaard Feb 22, 2024
554f0cf
Fix backend test
DanielHougaard Feb 22, 2024
4553c6b
Update scim-service.ts
DanielHougaard Feb 22, 2024
52cfa1b
Update UpgradeOverlay.tsx
DanielHougaard Feb 22, 2024
31cc3ec
Update srp.ts
DanielHougaard Feb 22, 2024
bbe769a
Increase SV migrate to 1000 & add billing page to Gamma
DanielHougaard Feb 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/check-api-for-breaking-changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ jobs:
run: |
docker-compose -f "docker-compose.dev.yml" down
docker stop infisical-api
docker remove infisical-api
docker remove infisical-api
2 changes: 1 addition & 1 deletion .github/workflows/run-backend-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ jobs:
ENCRYPTION_KEY: 4bnfe4e407b8921c104518903515b218
- name: cleanup
run: |
docker-compose -f "docker-compose.dev.yml" down
docker-compose -f "docker-compose.dev.yml" down
1 change: 1 addition & 0 deletions backend/e2e-test/vitest-environment-knex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export default {
{ expiresIn: cfg.JWT_AUTH_LIFETIME }
);
} catch (error) {
console.log("[TEST] Error setting up environment", error);
await db.destroy();
throw error;
}
Expand Down
39 changes: 39 additions & 0 deletions backend/src/db/migrations/20240216154123_ghost_users.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { Knex } from "knex";

import { ProjectVersion, TableName } from "../schemas";

export async function up(knex: Knex): Promise<void> {
const hasGhostUserColumn = await knex.schema.hasColumn(TableName.Users, "isGhost");
const hasProjectVersionColumn = await knex.schema.hasColumn(TableName.Project, "version");

if (!hasGhostUserColumn) {
await knex.schema.alterTable(TableName.Users, (t) => {
t.boolean("isGhost").defaultTo(false).notNullable();
});
}

if (!hasProjectVersionColumn) {
await knex.schema.alterTable(TableName.Project, (t) => {
t.integer("version").defaultTo(ProjectVersion.V1).notNullable();
t.string("upgradeStatus").nullable();
});
}
}

export async function down(knex: Knex): Promise<void> {
const hasGhostUserColumn = await knex.schema.hasColumn(TableName.Users, "isGhost");
const hasProjectVersionColumn = await knex.schema.hasColumn(TableName.Project, "version");

if (hasGhostUserColumn) {
await knex.schema.alterTable(TableName.Users, (t) => {
t.dropColumn("isGhost");
});
}

if (hasProjectVersionColumn) {
await knex.schema.alterTable(TableName.Project, (t) => {
t.dropColumn("version");
t.dropColumn("upgradeStatus");
});
}
}
11 changes: 11 additions & 0 deletions backend/src/db/schemas/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,17 @@ export enum SecretType {
Personal = "personal"
}

export enum ProjectVersion {
V1 = 1,
V2 = 2
}

export enum ProjectUpgradeStatus {
InProgress = "IN_PROGRESS",
// Completed -> Will be null if completed. So a completed status is not needed
Failed = "FAILED"
}

export enum IdentityAuthMethod {
Univeral = "universal-auth"
}
4 changes: 3 additions & 1 deletion backend/src/db/schemas/projects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ export const ProjectsSchema = z.object({
autoCapitalization: z.boolean().default(true).nullable().optional(),
orgId: z.string().uuid(),
createdAt: z.date(),
updatedAt: z.date()
updatedAt: z.date(),
version: z.number().default(1),
upgradeStatus: z.string().nullable().optional()
});

export type TProjects = z.infer<typeof ProjectsSchema>;
Expand Down
3 changes: 2 additions & 1 deletion backend/src/db/schemas/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ export const UsersSchema = z.object({
mfaMethods: z.string().array().nullable().optional(),
devices: z.unknown().nullable().optional(),
createdAt: z.date(),
updatedAt: z.date()
updatedAt: z.date(),
isGhost: z.boolean().default(false)
});

export type TUsers = z.infer<typeof UsersSchema>;
Expand Down
12 changes: 11 additions & 1 deletion backend/src/db/seed-data.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable import/no-mutable-exports */
import crypto from "node:crypto";

import argon2, { argon2id } from "argon2";
Expand All @@ -15,9 +16,12 @@ import {

import { TSecrets, TUserEncryptionKeys } from "./schemas";

export let userPrivateKey: string | undefined;
export let userPublicKey: string | undefined;

export const seedData1 = {
id: "3dafd81d-4388-432b-a4c5-f735616868c1",
email: "[email protected]",
email: process.env.TEST_USER_EMAIL || "[email protected]",
password: process.env.TEST_USER_PASSWORD || "testInfisical@1",
organization: {
id: "180870b7-f464-4740-8ffe-9d11c9245ea7",
Expand All @@ -42,6 +46,12 @@ export const seedData1 = {
},
token: {
id: "a9dfafba-a3b7-42e3-8618-91abb702fd36"
},

// We set these values during user creation, and later re-use them during project seeding.
encryptionKeys: {
publicKey: "",
privateKey: ""
}
};

Expand Down
1 change: 1 addition & 0 deletions backend/src/ee/services/audit-log/audit-log-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export const auditLogServiceFactory = ({
if (data.event.type !== EventType.LOGIN_IDENTITY_UNIVERSAL_AUTH) {
if (!data.projectId && !data.orgId) throw new BadRequestError({ message: "Must either project id or org id" });
}

return auditLogQueue.pushToLog(data);
};

Expand Down
3 changes: 2 additions & 1 deletion backend/src/ee/services/saml-config/saml-config-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,8 @@ export const samlConfigServiceFactory = ({
email,
firstName,
lastName,
authMethods: [AuthMethod.EMAIL]
authMethods: [AuthMethod.EMAIL],
isGhost: false
DanielHougaard marked this conversation as resolved.
Show resolved Hide resolved
},
tx
);
Expand Down
3 changes: 2 additions & 1 deletion backend/src/ee/services/scim/scim-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,8 @@ export const scimServiceFactory = ({
email,
firstName,
lastName,
authMethods: [AuthMethod.EMAIL]
authMethods: [AuthMethod.EMAIL],
isGhost: false
},
tx
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import { Knex } from "knex";

import { TDbClient } from "@app/db";
import { SecretApprovalRequestsSecretsSchema, TableName, TSecretTags } from "@app/db/schemas";
import { DatabaseError } from "@app/lib/errors";
import {
SecretApprovalRequestsSecretsSchema,
TableName,
TSecretApprovalRequestsSecrets,
TSecretTags
} from "@app/db/schemas";
import { BadRequestError, DatabaseError } from "@app/lib/errors";
import { ormify, selectAllTableCols, sqlNestRelationships } from "@app/lib/knex";

export type TSecretApprovalRequestSecretDALFactory = ReturnType<typeof secretApprovalRequestSecretDALFactory>;
Expand All @@ -11,6 +16,35 @@ export const secretApprovalRequestSecretDALFactory = (db: TDbClient) => {
const secretApprovalRequestSecretOrm = ormify(db, TableName.SecretApprovalRequestSecret);
const secretApprovalRequestSecretTagOrm = ormify(db, TableName.SecretApprovalRequestSecretTag);

const bulkUpdateNoVersionIncrement = async (data: TSecretApprovalRequestsSecrets[], tx?: Knex) => {
try {
const existingApprovalSecrets = await secretApprovalRequestSecretOrm.find(
{
$in: {
id: data.map((el) => el.id)
}
},
{ tx }
);

if (existingApprovalSecrets.length !== data.length) {
throw new BadRequestError({ message: "Some of the secret approvals do not exist" });
}

if (data.length === 0) return [];

const updatedApprovalSecrets = await (tx || db)(TableName.SecretApprovalRequestSecret)
.insert(data)
.onConflict("id") // this will cause a conflict then merge the data
.merge() // Merge the data with the existing data
.returning("*");

return updatedApprovalSecrets;
} catch (error) {
throw new DatabaseError({ error, name: "bulk update secret" });
}
};

const findByRequestId = async (requestId: string, tx?: Knex) => {
try {
const doc = await (tx || db)({
Expand Down Expand Up @@ -190,6 +224,7 @@ export const secretApprovalRequestSecretDALFactory = (db: TDbClient) => {
return {
...secretApprovalRequestSecretOrm,
findByRequestId,
bulkUpdateNoVersionIncrement,
insertApprovalSecretTags: secretApprovalRequestSecretTagOrm.insertMany
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { BadRequestError, UnauthorizedError } from "@app/lib/errors";
import { groupBy, pick, unique } from "@app/lib/fn";
import { alphaNumericNanoId } from "@app/lib/nanoid";
import { ActorType } from "@app/services/auth/auth-type";
import { TProjectDALFactory } from "@app/services/project/project-dal";
import { TSecretQueueFactory } from "@app/services/secret/secret-queue";
import { TSecretServiceFactory } from "@app/services/secret/secret-service";
import { TSecretVersionDALFactory } from "@app/services/secret/secret-version-dal";
Expand Down Expand Up @@ -47,6 +48,7 @@ type TSecretApprovalRequestServiceFactoryDep = {
secretBlindIndexDAL: Pick<TSecretBlindIndexDALFactory, "findOne">;
snapshotService: Pick<TSecretSnapshotServiceFactory, "performSnapshot">;
secretVersionDAL: Pick<TSecretVersionDALFactory, "findLatestVersionMany">;
projectDAL: Pick<TProjectDALFactory, "checkProjectUpgradeStatus">;
secretService: Pick<
TSecretServiceFactory,
| "fnSecretBulkInsert"
Expand All @@ -67,6 +69,7 @@ export const secretApprovalRequestServiceFactory = ({
secretApprovalRequestReviewerDAL,
secretApprovalRequestSecretDAL,
secretBlindIndexDAL,
projectDAL,
permissionService,
snapshotService,
secretService,
Expand Down Expand Up @@ -434,6 +437,8 @@ export const secretApprovalRequestServiceFactory = ({
subject(ProjectPermissionSub.Secrets, { environment, secretPath })
);

await projectDAL.checkProjectUpgradeStatus(projectId);

const folder = await folderDAL.findBySecretPath(projectId, environment, secretPath);
if (!folder) throw new BadRequestError({ message: "Folder not found", name: "GenSecretApproval" });
const folderId = folder.id;
Expand Down
3 changes: 3 additions & 0 deletions backend/src/lib/crypto/encryption.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import { SecretEncryptionAlgo, SecretKeyEncoding } from "@app/db/schemas";

import { getConfig } from "../config/env";

export const decodeBase64 = (s: string) => naclUtils.decodeBase64(s);
export const encodeBase64 = (u: Uint8Array) => naclUtils.encodeBase64(u);

export type TDecryptSymmetricInput = {
ciphertext: string;
iv: string;
Expand Down
8 changes: 8 additions & 0 deletions backend/src/lib/crypto/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
export {
buildSecretBlindIndexFromName,
createSecretBlindIndex,
decodeBase64,
decryptAsymmetric,
decryptSymmetric,
decryptSymmetric128BitHexKeyUTF8,
encodeBase64,
encryptAsymmetric,
encryptSymmetric,
encryptSymmetric128BitHexKeyUTF8,
generateAsymmetricKeyPair
} from "./encryption";
export {
decryptIntegrationAuths,
decryptSecretApprovals,
decryptSecrets,
decryptSecretVersions
} from "./secret-encryption";
export { generateSrpServerKey, srpCheckClientProof } from "./srp";
Loading
Loading