mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Merge pull request #4834 from Infisical/fix/pki-csr-key-usage-check
Fix CSR KU/EKU check
This commit is contained in:
@@ -613,39 +613,6 @@ describe("CertificateTemplateV2Service", () => {
|
||||
expect(result.isValid).toBe(true);
|
||||
});
|
||||
|
||||
it("should handle camelCase key usage mapping correctly", async () => {
|
||||
const templateWithOptionalUsages = {
|
||||
...sampleTemplate,
|
||||
keyUsages: {
|
||||
requiredUsages: {
|
||||
all: [CertKeyUsageType.DIGITAL_SIGNATURE, CertKeyUsageType.NON_REPUDIATION, CertKeyUsageType.KEY_AGREEMENT]
|
||||
},
|
||||
optionalUsages: { all: [CertKeyUsageType.CRL_SIGN, CertKeyUsageType.DECIPHER_ONLY] }
|
||||
},
|
||||
extendedKeyUsages: {
|
||||
requiredUsages: { all: [CertExtendedKeyUsageType.CLIENT_AUTH, CertExtendedKeyUsageType.CODE_SIGNING] },
|
||||
optionalUsages: { all: [CertExtendedKeyUsageType.SERVER_AUTH, CertExtendedKeyUsageType.OCSP_SIGNING] }
|
||||
}
|
||||
};
|
||||
mockCertificateTemplateV2DAL.findById.mockResolvedValue(templateWithOptionalUsages);
|
||||
|
||||
const requestWithCamelCaseUsages = {
|
||||
...validRequest,
|
||||
keyUsages: [
|
||||
CertKeyUsageType.DIGITAL_SIGNATURE,
|
||||
CertKeyUsageType.NON_REPUDIATION,
|
||||
CertKeyUsageType.KEY_AGREEMENT,
|
||||
CertKeyUsageType.CRL_SIGN,
|
||||
CertKeyUsageType.DECIPHER_ONLY
|
||||
],
|
||||
extendedKeyUsages: [CertExtendedKeyUsageType.CLIENT_AUTH, CertExtendedKeyUsageType.CODE_SIGNING]
|
||||
};
|
||||
|
||||
const result = await service.validateCertificateRequest("template-123", requestWithCamelCaseUsages);
|
||||
expect(result.isValid).toBe(true);
|
||||
expect(result.errors).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("should validate wildcard patterns in allow attributes", async () => {
|
||||
const wildcardTemplate = {
|
||||
...sampleTemplate,
|
||||
|
||||
@@ -482,7 +482,7 @@ export const certificateTemplateV2ServiceFactory = ({
|
||||
}
|
||||
|
||||
// Check ALLOWED key usages - if present, all usages must be in allowed list
|
||||
if (request.keyUsages && keyUsagePolicy && keyUsagePolicy.allowed && keyUsagePolicy.allowed.length > 0) {
|
||||
if (request.keyUsages && keyUsagePolicy) {
|
||||
const allAllowedUsages = [...(keyUsagePolicy.required || []), ...(keyUsagePolicy.allowed || [])];
|
||||
const invalidUsages = request.keyUsages.filter((usage) => !allAllowedUsages.includes(usage));
|
||||
if (invalidUsages.length > 0) {
|
||||
@@ -517,12 +517,7 @@ export const certificateTemplateV2ServiceFactory = ({
|
||||
}
|
||||
|
||||
// Check ALLOWED extended key usages - if present, all usages must be in allowed list
|
||||
if (
|
||||
request.extendedKeyUsages &&
|
||||
extendedKeyUsagePolicy &&
|
||||
extendedKeyUsagePolicy.allowed &&
|
||||
extendedKeyUsagePolicy.allowed.length > 0
|
||||
) {
|
||||
if (request.extendedKeyUsages && extendedKeyUsagePolicy) {
|
||||
const allAllowedExtendedUsages = [
|
||||
...(extendedKeyUsagePolicy.required || []),
|
||||
...(extendedKeyUsagePolicy.allowed || [])
|
||||
|
||||
@@ -543,6 +543,10 @@ export const certificateV3ServiceFactory = ({
|
||||
const { keyAlgorithm: extractedKeyAlgorithm, signatureAlgorithm: extractedSignatureAlgorithm } =
|
||||
extractAlgorithmsFromCSR(csr);
|
||||
|
||||
mappedCertificateRequest.keyAlgorithm = extractedKeyAlgorithm;
|
||||
mappedCertificateRequest.signatureAlgorithm = extractedSignatureAlgorithm;
|
||||
mappedCertificateRequest.validity = validity;
|
||||
|
||||
const validationResult = await certificateTemplateV2Service.validateCertificateRequest(
|
||||
profile.certificateTemplateId,
|
||||
mappedCertificateRequest
|
||||
|
||||
Reference in New Issue
Block a user