UNPKG

guide

Version:

Encrypted Globally Unique Identifier generator.

49 lines (34 loc) 1.35 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); var _base64Url = require('base64-url'); var _errors = require('./errors'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @param initializationVectorValue Initialization vector. Must be at least 128 characters long. * @param namespace A namespace of the GUID (e.g. company name or the application name). * @param type A resource type name (e.g. article). */ /*:: import type { ToGuideType } from './types';*/ // @flow var toGuide /*: ToGuideType*/ = function toGuide(initializationVectorValue, namespace, type, id) { if (initializationVectorValue.length !== 128) { throw new _errors.GuideError('Initialization vector must be at least 128 characters long.'); } var cipher = _crypto2.default.createCipher('aes-256-gcm', initializationVectorValue); var payload = JSON.stringify({ id, namespace, type }); var encrypted = Buffer.concat([cipher.update(payload, 'utf8'), cipher.final()]); var tag = cipher.getAuthTag(); var guide = Buffer.concat([tag, encrypted]); return (0, _base64Url.escape)(guide.toString('base64')); }; exports.default = toGuide; //# sourceMappingURL=toGuide.js.map