feat(fips): requested changes (function renaming)

This commit is contained in:
Daniel Hougaard
2025-07-14 21:48:13 +04:00
parent dad5153f61
commit 260ef05644
39 changed files with 718 additions and 531 deletions
+42 -30
View File
@@ -234,14 +234,14 @@ export const interpolateSecrets = ({ projectId, secretEncKey, secretDAL, folderD
const secrets = await secretDAL.findByFolderId(folder.id);
const decryptedSec = secrets.reduce<Record<string, string>>((prev, secret) => {
const decryptedSecretKey = crypto.encryption().decryptSymmetric({
const decryptedSecretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
key: secretEncKey,
keySize: SymmetricKeySize.Bits128
});
const decryptedSecretValue = crypto.encryption().decryptSymmetric({
const decryptedSecretValue = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,
@@ -363,7 +363,7 @@ export const decryptSecretRaw = (
},
key: string
) => {
const secretKey = crypto.encryption().decryptSymmetric({
const secretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
@@ -372,7 +372,7 @@ export const decryptSecretRaw = (
});
const secretValue = !secret.secretValueHidden
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,
@@ -384,7 +384,7 @@ export const decryptSecretRaw = (
let secretComment = "";
if (secret.secretCommentCiphertext && secret.secretCommentIV && secret.secretCommentTag) {
secretComment = crypto.encryption().decryptSymmetric({
secretComment = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretCommentCiphertext,
iv: secret.secretCommentIV,
tag: secret.secretCommentTag,
@@ -879,22 +879,28 @@ export const createManySecretsRawFnFactory = ({
});
const inputSecrets = secrets.map((secret) => {
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
const secretKeyEncrypted = crypto.encryption().symmetric().encrypt({
plaintext: secret.secretName,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secret.secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secret.secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretReferences = getAllNestedSecretReferences(secret.secretValue || "");
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secret.secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secret.secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
return {
type: secret.type,
@@ -1078,22 +1084,28 @@ export const updateManySecretsRawFnFactory = ({
throw new BadRequestError({ message: "New secret name cannot be empty" });
}
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
const secretKeyEncrypted = crypto.encryption().symmetric().encrypt({
plaintext: secret.secretName,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secret.secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secret.secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretReferences = getAllNestedSecretReferences(secret.secretValue || "");
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secret.secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secret.secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
return {
type: secret.type,
@@ -1176,7 +1188,7 @@ export const decryptSecretWithBot = (
>,
key: string
) => {
const secretKey = crypto.encryption().decryptSymmetric({
const secretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
@@ -1184,7 +1196,7 @@ export const decryptSecretWithBot = (
keySize: SymmetricKeySize.Bits128
});
const secretValue = crypto.encryption().decryptSymmetric({
const secretValue = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,
@@ -1195,7 +1207,7 @@ export const decryptSecretWithBot = (
let secretComment = "";
if (secret.secretCommentCiphertext && secret.secretCommentIV && secret.secretCommentTag) {
secretComment = crypto.encryption().decryptSymmetric({
secretComment = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretCommentCiphertext,
iv: secret.secretCommentIV,
tag: secret.secretCommentTag,
+27 -23
View File
@@ -503,7 +503,7 @@ export const secretQueueFactory = ({
const secrets = await secretDAL.findByFolderId(dto.folderId);
await Promise.allSettled(
secrets.map(async (secret) => {
const secretKey = crypto.encryption().decryptSymmetric({
const secretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
@@ -511,7 +511,7 @@ export const secretQueueFactory = ({
keySize: SymmetricKeySize.Bits128
});
const secretValue = crypto.encryption().decryptSymmetric({
const secretValue = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,
@@ -528,7 +528,7 @@ export const secretQueueFactory = ({
content[secretKey] = { value: expandedSecretValue || "" };
if (secret.secretCommentCiphertext && secret.secretCommentIV && secret.secretCommentTag) {
const commentValue = crypto.encryption().decryptSymmetric({
const commentValue = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretCommentCiphertext,
iv: secret.secretCommentIV,
tag: secret.secretCommentTag,
@@ -954,13 +954,16 @@ export const secretQueueFactory = ({
integrationAuth.awsAssumeIamRoleArnIV &&
integrationAuth.awsAssumeIamRoleArnCipherText
) {
awsAssumeRoleArn = crypto.encryption().decryptSymmetric({
ciphertext: integrationAuth.awsAssumeIamRoleArnCipherText,
iv: integrationAuth.awsAssumeIamRoleArnIV,
tag: integrationAuth.awsAssumeIamRoleArnTag,
key: botKey as string,
keySize: SymmetricKeySize.Bits128
});
awsAssumeRoleArn = crypto
.encryption()
.symmetric()
.decrypt({
ciphertext: integrationAuth.awsAssumeIamRoleArnCipherText,
iv: integrationAuth.awsAssumeIamRoleArnIV,
tag: integrationAuth.awsAssumeIamRoleArnTag,
key: botKey as string,
keySize: SymmetricKeySize.Bits128
});
}
const suffixedSecrets: typeof secrets = {};
@@ -1241,6 +1244,7 @@ export const secretQueueFactory = ({
);
const { iv, tag, ciphertext, encoding, algorithm } = crypto
.encryption()
.symmetric()
.encryptWithRootEncryptionKey(ghostUser.keys.plainPrivateKey);
await projectBotDAL.updateById(
bot.id,
@@ -1275,14 +1279,14 @@ export const secretQueueFactory = ({
await secretV2BridgeDAL.batchInsert(
projectV1Secrets.map((el) => {
const key = crypto.encryption().decryptSymmetric({
const key = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretKeyCiphertext,
iv: el.secretKeyIV,
tag: el.secretKeyTag,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const value = crypto.encryption().decryptSymmetric({
const value = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretValueCiphertext,
iv: el.secretValueIV,
tag: el.secretValueTag,
@@ -1291,7 +1295,7 @@ export const secretQueueFactory = ({
});
const comment =
el.secretCommentCiphertext && el.secretCommentTag && el.secretCommentIV
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.secretCommentCiphertext,
iv: el.secretCommentIV,
tag: el.secretCommentTag,
@@ -1346,14 +1350,14 @@ export const secretQueueFactory = ({
});
if (projectV3SecretVersionsGroupById[el.id]) return;
const key = crypto.encryption().decryptSymmetric({
const key = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretKeyCiphertext,
iv: el.secretKeyIV,
tag: el.secretKeyTag,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const value = crypto.encryption().decryptSymmetric({
const value = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretValueCiphertext,
iv: el.secretValueIV,
tag: el.secretValueTag,
@@ -1362,7 +1366,7 @@ export const secretQueueFactory = ({
});
const comment =
el.secretCommentCiphertext && el.secretCommentTag && el.secretCommentIV
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.secretCommentCiphertext,
iv: el.secretCommentIV,
tag: el.secretCommentTag,
@@ -1408,14 +1412,14 @@ export const secretQueueFactory = ({
);
Object.values(latestSecretVersionByFolder).forEach((el) => {
if (projectV3SecretVersionsGroupById[el.id]) return;
const key = crypto.encryption().decryptSymmetric({
const key = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretKeyCiphertext,
iv: el.secretKeyIV,
tag: el.secretKeyTag,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const value = crypto.encryption().decryptSymmetric({
const value = crypto.encryption().symmetric().decrypt({
ciphertext: el.secretValueCiphertext,
iv: el.secretValueIV,
tag: el.secretValueTag,
@@ -1424,7 +1428,7 @@ export const secretQueueFactory = ({
});
const comment =
el.secretCommentCiphertext && el.secretCommentTag && el.secretCommentIV
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.secretCommentCiphertext,
iv: el.secretCommentIV,
tag: el.secretCommentTag,
@@ -1496,7 +1500,7 @@ export const secretQueueFactory = ({
projectV1IntegrationAuths.map((el) => {
const accessToken =
el.accessIV && el.accessTag && el.accessCiphertext
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.accessCiphertext,
iv: el.accessIV,
tag: el.accessTag,
@@ -1506,7 +1510,7 @@ export const secretQueueFactory = ({
: undefined;
const accessId =
el.accessIdIV && el.accessIdTag && el.accessIdCiphertext
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.accessIdCiphertext,
iv: el.accessIdIV,
tag: el.accessIdTag,
@@ -1516,7 +1520,7 @@ export const secretQueueFactory = ({
: undefined;
const refreshToken =
el.refreshIV && el.refreshTag && el.refreshCiphertext
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.refreshCiphertext,
iv: el.refreshIV,
tag: el.refreshTag,
@@ -1526,7 +1530,7 @@ export const secretQueueFactory = ({
: undefined;
const awsAssumeRoleArn =
el.awsAssumeIamRoleArnCipherText && el.awsAssumeIamRoleArnIV && el.awsAssumeIamRoleArnTag
? crypto.encryption().decryptSymmetric({
? crypto.encryption().symmetric().decrypt({
ciphertext: el.awsAssumeIamRoleArnCipherText,
iv: el.awsAssumeIamRoleArnIV,
tag: el.awsAssumeIamRoleArnTag,
+98 -65
View File
@@ -158,13 +158,16 @@ export const secretServiceFactory = ({
return (el: { ciphertext?: string; iv: string; tag: string }) =>
projectBot?.botKey
? getAllNestedSecretReferences(
crypto.encryption().decryptSymmetric({
ciphertext: el.ciphertext || "",
iv: el.iv,
tag: el.tag,
key: projectBot.botKey,
keySize: SymmetricKeySize.Bits128
})
crypto
.encryption()
.symmetric()
.decrypt({
ciphertext: el.ciphertext || "",
iv: el.iv,
tag: el.tag,
key: projectBot.botKey,
keySize: SymmetricKeySize.Bits128
})
)
: undefined;
};
@@ -1695,21 +1698,27 @@ export const secretServiceFactory = ({
name: "bot_not_found_error"
});
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
const secretKeyEncrypted = crypto.encryption().symmetric().encrypt({
plaintext: secretName,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
if (policy) {
const approval = await secretApprovalRequestService.generateSecretApprovalRequest({
policy,
@@ -1875,22 +1884,31 @@ export const secretServiceFactory = ({
name: "bot_not_found_error"
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
plaintext: newSecretName || secretName,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretKeyEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: newSecretName || secretName,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
if (policy) {
const approval = await secretApprovalRequestService.generateSecretApprovalRequest({
@@ -2137,21 +2155,27 @@ export const secretServiceFactory = ({
const sanitizedSecrets = inputSecrets.map(
({ secretComment, secretKey, metadata, tagIds, secretValue, skipMultilineEncoding }) => {
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
const secretKeyEncrypted = crypto.encryption().symmetric().encrypt({
plaintext: secretKey,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
return {
secretName: secretKey,
skipMultilineEncoding,
@@ -2303,21 +2327,30 @@ export const secretServiceFactory = ({
secretReminderNote,
secretReminderRepeatDays
}) => {
const secretKeyEncrypted = crypto.encryption().encryptSymmetric({
plaintext: newSecretName || secretKey,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto.encryption().encryptSymmetric({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretKeyEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: newSecretName || secretKey,
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretValueEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretValue || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
const secretCommentEncrypted = crypto
.encryption()
.symmetric()
.encrypt({
plaintext: secretComment || "",
key: botKey,
keySize: SymmetricKeySize.Bits128
});
return {
secretName: secretKey,
newSecretName,
@@ -2528,7 +2561,7 @@ export const secretServiceFactory = ({
});
return secretVersions.map((el) => {
const secretKey = crypto.encryption().decryptSymmetric({
const secretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
@@ -2850,7 +2883,7 @@ export const secretServiceFactory = ({
secrets.map(({ id, secretValueCiphertext, secretValueIV, secretValueTag }) => ({
secretId: id,
references: getAllNestedSecretReferences(
crypto.encryption().decryptSymmetric({
crypto.encryption().symmetric().decrypt({
ciphertext: secretValueCiphertext,
iv: secretValueIV,
tag: secretValueTag,
@@ -2955,7 +2988,7 @@ export const secretServiceFactory = ({
const destinationActions = [ProjectPermissionSecretActions.Create, ProjectPermissionSecretActions.Edit] as const;
const decryptedSourceSecrets = sourceSecrets.map((secret) => {
const secretKey = crypto.encryption().decryptSymmetric({
const secretKey = crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
@@ -2996,7 +3029,7 @@ export const secretServiceFactory = ({
return {
...secret,
secretKey,
secretValue: crypto.encryption().decryptSymmetric({
secretValue: crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,
@@ -3022,14 +3055,14 @@ export const secretServiceFactory = ({
const decryptedDestinationSecrets = destinationSecretsFromDB.map((secret) => {
return {
...secret,
secretKey: crypto.encryption().decryptSymmetric({
secretKey: crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretKeyCiphertext,
iv: secret.secretKeyIV,
tag: secret.secretKeyTag,
key: botKey,
keySize: SymmetricKeySize.Bits128
}),
secretValue: crypto.encryption().decryptSymmetric({
secretValue: crypto.encryption().symmetric().decrypt({
ciphertext: secret.secretValueCiphertext,
iv: secret.secretValueIV,
tag: secret.secretValueTag,