guide
Version:
Encrypted Globally Unique Identifier generator.
49 lines (34 loc) • 1.35 kB
JavaScript
;
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