fix: credentials hash calculation in external kms

This commit is contained in:
Piyush Gupta
2025-12-12 19:43:14 +05:30
parent 05ad73756a
commit 5aa4864ec4
2 changed files with 16 additions and 4 deletions
@@ -88,9 +88,11 @@ export const registerExternalKmsEndpoints = <
...rest ...rest
} = externalKms; } = externalKms;
const credentialsToHash = JSON.stringify(configuration.credential);
const credentialsHash = crypto.nativeCrypto const credentialsHash = crypto.nativeCrypto
.createHash("sha256") .createHash("sha256")
.update(externalKmsData.encryptedProviderInputs) .update(Buffer.from(credentialsToHash))
.digest("hex"); .digest("hex");
return { ...rest, externalKms: { ...externalKmsData, configuration, credentialsHash } }; return { ...rest, externalKms: { ...externalKmsData, configuration, credentialsHash } };
} }
@@ -153,9 +155,12 @@ export const registerExternalKmsEndpoints = <
external: { providerInput: externalKmsConfiguration, ...externalKmsData }, external: { providerInput: externalKmsConfiguration, ...externalKmsData },
...rest ...rest
} = externalKms; } = externalKms;
const credentialsToHash = JSON.stringify(externalKmsConfiguration.credential);
const credentialsHash = crypto.nativeCrypto const credentialsHash = crypto.nativeCrypto
.createHash("sha256") .createHash("sha256")
.update(externalKmsData.encryptedProviderInputs) .update(Buffer.from(credentialsToHash))
.digest("hex"); .digest("hex");
return { ...rest, externalKms: { ...externalKmsData, configuration: externalKmsConfiguration, credentialsHash } }; return { ...rest, externalKms: { ...externalKmsData, configuration: externalKmsConfiguration, credentialsHash } };
} }
@@ -222,9 +227,12 @@ export const registerExternalKmsEndpoints = <
external: { providerInput: externalKmsConfiguration, ...externalKmsData }, external: { providerInput: externalKmsConfiguration, ...externalKmsData },
...rest ...rest
} = externalKms; } = externalKms;
const credentialsToHash = JSON.stringify(externalKmsConfiguration.credential);
const credentialsHash = crypto.nativeCrypto const credentialsHash = crypto.nativeCrypto
.createHash("sha256") .createHash("sha256")
.update(externalKmsData.encryptedProviderInputs) .update(Buffer.from(credentialsToHash))
.digest("hex"); .digest("hex");
return { ...rest, externalKms: { ...externalKmsData, configuration: externalKmsConfiguration, credentialsHash } }; return { ...rest, externalKms: { ...externalKmsData, configuration: externalKmsConfiguration, credentialsHash } };
} }
@@ -277,9 +285,12 @@ export const registerExternalKmsEndpoints = <
external: { providerInput: configuration, ...externalKmsData }, external: { providerInput: configuration, ...externalKmsData },
...rest ...rest
} = externalKms; } = externalKms;
const credentialsToHash = JSON.stringify(configuration.credential);
const credentialsHash = crypto.nativeCrypto const credentialsHash = crypto.nativeCrypto
.createHash("sha256") .createHash("sha256")
.update(externalKmsData.encryptedProviderInputs) .update(Buffer.from(credentialsToHash))
.digest("hex"); .digest("hex");
return { ...rest, externalKms: { ...externalKmsData, configuration, credentialsHash } }; return { ...rest, externalKms: { ...externalKmsData, configuration, credentialsHash } };
@@ -380,6 +380,7 @@ export const externalKmsServiceFactory = ({
const findById = async ({ actor, actorId, actorOrgId, actorAuthMethod, id: kmsId }: TGetExternalKmsByIdDTO) => { const findById = async ({ actor, actorId, actorOrgId, actorAuthMethod, id: kmsId }: TGetExternalKmsByIdDTO) => {
const kmsDoc = await kmsDAL.findById(kmsId); const kmsDoc = await kmsDAL.findById(kmsId);
if (!kmsDoc) throw new NotFoundError({ message: `Could not find KMS with ID '${kmsId}'` });
const { permission } = await permissionService.getOrgPermission({ const { permission } = await permissionService.getOrgPermission({
scope: OrganizationActionScope.Any, scope: OrganizationActionScope.Any,
actor, actor,