UNPKG

cdk-secure-string-parameter

Version:

SecureStringParameter Custom Resource for CDK. Enables storing encrypted secrets in version control and using those values in creating SSM SecureString Parameters

37 lines (36 loc) 1.34 kB
import parse from './parse.js'; import { unsafeStringify } from './stringify.js'; export function stringToBytes(str) { str = unescape(encodeURIComponent(str)); const bytes = new Uint8Array(str.length); for (let i = 0; i < str.length; ++i) { bytes[i] = str.charCodeAt(i); } return bytes; } export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; export default function v35(version, hash, value, namespace, buf, offset) { const valueBytes = typeof value === 'string' ? stringToBytes(value) : value; const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace; if (typeof namespace === 'string') { namespace = parse(namespace); } if (namespace?.length !== 16) { throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); } let bytes = new Uint8Array(16 + valueBytes.length); bytes.set(namespaceBytes); bytes.set(valueBytes, namespaceBytes.length); bytes = hash(bytes); bytes[6] = (bytes[6] & 0x0f) | version; bytes[8] = (bytes[8] & 0x3f) | 0x80; if (buf) { offset = offset || 0; for (let i = 0; i < 16; ++i) { buf[offset + i] = bytes[i]; } return buf; } return unsafeStringify(bytes); }