in modules/integration-vectors/src/build_get_keyring.ts [16:62]
export function buildGetKeyring<K>({
kmsKeyring,
kmsMrkAwareKeyring,
kmsMrkAwareDiscoveryKeyring,
aesKeyring,
rsaKeyring,
}: {
kmsKeyring(keyInfo: KmsKeyInfo, key: KMSKey): K
kmsMrkAwareKeyring(keyInfo: KmsMrkAwareKeyInfo, key: KMSKey): K
kmsMrkAwareDiscoveryKeyring(keyInfo: KmsMrkAwareDiscoveryKeyInfo): K
aesKeyring(keyInfo: AesKeyInfo, key: AESKey): K
rsaKeyring(keyInfo: RsaKeyInfo, key: RSAKey): K
}): (info: KeyInfoTuple) => K {
return function getKeyring([info, key]: KeyInfoTuple): K {
if (info.type === 'aws-kms' && key && key.type === 'aws-kms') {
return kmsKeyring(info, key)
}
if (info.type === 'aws-kms-mrk-aware' && key && key.type === 'aws-kms') {
return kmsMrkAwareKeyring(info, key)
}
if (info.type === 'aws-kms-mrk-aware-discovery' && !key) {
return kmsMrkAwareDiscoveryKeyring(info)
}
if (
info.type === 'raw' &&
info['encryption-algorithm'] === 'aes' &&
key &&
key.type === 'symmetric'
) {
return aesKeyring(info, key)
}
if (
info.type === 'raw' &&
info['encryption-algorithm'] === 'rsa' &&
key &&
(key.type === 'public' || key.type === 'private')
) {
return rsaKeyring(info, key)
}
throw new Error('Unsupported keyring type')
}
}