in modules/kms-keyring/src/helpers.ts [23:48]
export async function generateDataKey<Client extends AwsEsdkKMSInterface>(
clientProvider: KmsClientSupplier<Client> | Client,
NumberOfBytes: number,
KeyId: string,
EncryptionContext: EncryptionContext,
GrantTokens?: string[]
): Promise<RequiredGenerateDataKeyResponse | false> {
const client =
typeof clientProvider === 'function'
? clientProvider(getRegionFromIdentifier(KeyId))
: clientProvider
/* Check for early return (Postcondition): clientProvider did not return a client for generateDataKey. */
if (!client) return false
const v2vsV3Response = client.generateDataKey({
KeyId,
GrantTokens,
NumberOfBytes,
EncryptionContext,
})
const v2vsV3Promise =
'promise' in v2vsV3Response ? v2vsV3Response.promise() : v2vsV3Response
const dataKey = await v2vsV3Promise
return safeGenerateDataKey(dataKey)
}