'How do I use the an AWS data key to encrypt a string in typescript?
I am working on a project that uses the result of GenerateDataKey from the AWS KMS SDK. The result is the following:
{
"PrivateKeyCiphertextBlob":".......",
"PrivateKeyPlaintext":".....",
"PublicKey": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8zpg35PbIC/+KCHiGSZr/SY80uZIlNYkO3P2YRL9bMdk6m2Syj+TjOpjx67Wj+vrHyVYabY8WgN5S/Qu3qJro08rBkT3cxIwHVB7iJr5geJ6/SwK3j8T2ZyA8ZaiCx3+qf6YOGzAoik2X5krIkol+SpNxs9vEhmMcJ4jwWW/8+/CZN0CjQ0QAyjjaojKcBZdxhzDZ2Vqe7vWp5AjRzlcwLnygCkywgkvSStAheePIQ6hyFdFbHJVCIE7zeG+ata9q6ouGspo4CFNdrVGn/MRb79vzeTnbnsuUvGIXcPSqONKCZeMRA+IzStkzxpZ2OoUYjPalFHv2kM+fLUFrJR4FO4d+w6WdMPlLFDD7qKaw3jnDSOmTPM73Isw4bYIjmSa00JQuMK1Nh0duW9nsR0XOuWKHo9uYDlwm43Sd9zij2wVzmy0FIXbj8ipt4ggZGkDiczK/q7XXsgMEGCgdPn0hcWUjoCqBlh0++cOLRTpHf52APVMhEJdsjimoOdGh97jZmQUwTKxA5l3hKkxEhHgVehRZDexHdQWgZpi28cEH5vCMUNCJo29awtp3YnUkO19lVEY18dourdeFji+FfELlqtl1VVh0DIohqneLBemDef2fT1olQyez//JckWJYIGwqRIk0AfxUSMe0hRT5evdotJ5guQCKZmoNvgwUXBKG8kCAwEAAQ==",
"KeyId": "arn:aws:kms:us-east-1:xxxxxxxxxxxx:key/yyyyyyyyyyyy",
"KeyPairSpec": "RSA_4096"
}
How do I use the result of PublicKey to encrypt a random string in Javascript/Typescript? Newbie to TS here, so would appreciate the help!
UPDATE: Here's what I'm doing so far:
import { publicEncrypt } from 'crypto';
import {
KMSClient,
DataKeyPairSpec,
GenerateDataKeyPairCommand,
} from '@aws-sdk/client-kms';
...
const cdkPublicKey = 'MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8zpg35PbIC/+KCHiGSZr/SY80uZIlNYkO3P2YRL9bMdk6m2Syj+TjOpjx67Wj+vrHyVYabY8WgN5S/Qu3qJro08rBkT3cxIwHVB7iJr5geJ6/SwK3j8T2ZyA8ZaiCx3+qf6YOGzAoik2X5krIkol+SpNxs9vEhmMcJ4jwWW/8+/CZN0CjQ0QAyjjaojKcBZdxhzDZ2Vqe7vWp5AjRzlcwLnygCkywgkvSStAheePIQ6hyFdFbHJVCIE7zeG+ata9q6ouGspo4CFNdrVGn/MRb79vzeTnbnsuUvGIXcPSqONKCZeMRA+IzStkzxpZ2OoUYjPalFHv2kM+fLUFrJR4FO4d+w6WdMPlLFDD7qKaw3jnDSOmTPM73Isw4bYIjmSa00JQuMK1Nh0duW9nsR0XOuWKHo9uYDlwm43Sd9zij2wVzmy0FIXbj8ipt4ggZGkDiczK/q7XXsgMEGCgdPn0hcWUjoCqBlh0++cOLRTpHf52APVMhEJdsjimoOdGh97jZmQUwTKxA5l3hKkxEhHgVehRZDexHdQWgZpi28cEH5vCMUNCJo29awtp3YnUkO19lVEY18dourdeFji+FfELlqtl1VVh0DIohqneLBemDef2fT1olQyez//JckWJYIGwqRIk0AfxUSMe0hRT5evdotJ5guQCKZmoNvgwUXBKG8kCAwEAAQ==';
const encryptedSecret = publicEncrypt(
Buffer.from(cdkPublicKey),
Buffer.from('Hello World!'),
);
And I get:
error:0909006C:PEM routines:get_name:no start line
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
