in modules/kms-keyring/src/aws_kms_mrk_are_unique.ts [8:44]
export function awsKmsMrkAreUnique(awsKmsIdentifers: string[]): void {
const multiRegionKeys = awsKmsIdentifers.filter((i) =>
isMultiRegionAwsKmsIdentifier(i)
)
//= compliance/framework/aws-kms/aws-kms-mrk-are-unique.txt#2.5
//# If the list does not contain any multi-Region keys (aws-kms-key-
//# arn.md#identifying-an-aws-kms-multi-region-key) this function MUST
//# exit successfully.
if (!multiRegionKeys.length) return
const multiRegionKeyIds = multiRegionKeys.map((mrk) => {
const arn = parseAwsKmsKeyArn(mrk)
return arn ? arn.ResourceId : mrk
})
//= compliance/framework/aws-kms/aws-kms-mrk-are-unique.txt#2.5
//# If there are zero duplicate resource ids between the multi-region
//# keys, this function MUST exit successfully
if (new Set(multiRegionKeyIds).size === multiRegionKeys.length) return
//= compliance/framework/aws-kms/aws-kms-mrk-are-unique.txt#2.5
//# If any duplicate multi-region resource ids exist, this function MUST
//# yield an error that includes all identifiers with duplicate resource
//# ids not only the first duplicate found.
const duplicateMultiRegionIdentifiers = multiRegionKeyIds
.map((mrk, i, a) => {
if (a.indexOf(mrk) !== a.lastIndexOf(mrk)) return multiRegionKeys[i]
/* Postcondition: Remove non-duplicate multi-Region keys. */
return false
})
.filter((dup) => dup)
.join(',')
throw new Error(
`Related multi-Region keys: ${duplicateMultiRegionIdentifiers} are not allowed.`
)
}