fix: public key encoding as DER

This commit is contained in:
Daniel Hougaard
2025-04-04 11:08:06 +04:00
parent cd83efb060
commit 83206aad93
2 changed files with 13 additions and 8 deletions

View File

@@ -302,7 +302,9 @@ export const cmekServiceFactory = ({ kmsService, kmsDAL, permissionService, proj
const publicKey = await kmsService.getPublicKey({ kmsId: keyId });
return { publicKey, projectId: key.projectId };
const base64EncodedPublicKey = publicKey.toString("base64");
return { publicKey: base64EncodedPublicKey, projectId: key.projectId };
};
const cmekSign = async ({ keyId, data, signingAlgorithm }: TCmekSignDTO, actor: OrgServiceActor) => {

View File

@@ -454,13 +454,16 @@ export const kmsServiceFactory = ({
const publicKeyBuffer = signingService(encryptionAlgorithm).getPublicKeyFromPrivateKey(kmsKey);
return crypto
.createPublicKey({
key: publicKeyBuffer,
format: "pem",
type: "spki"
})
.export({ type: "spki", format: "pem" }) as string; // format 'pem' makes it a string
return (
crypto
.createPublicKey({
key: publicKeyBuffer,
format: "pem",
type: "spki"
})
// We return as a DER encoded X.509 certificate (https://datatracker.ietf.org/doc/html/rfc5280)
.export({ type: "spki", format: "der" })
);
};
const signWithKmsKey = async ({ kmsId }: Pick<TSignWithKmsDTO, "kmsId">) => {