UNPKG

blockstack-auth

Version:
96 lines (76 loc) 3.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthRequest = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); exports.createRequestPayload = createRequestPayload; exports.createUnsignedRequest = createUnsignedRequest; var _keyEncoder = require('key-encoder'); var _keyEncoder2 = _interopRequireDefault(_keyEncoder); var _jsontokens = require('jsontokens'); var _ellipticCurve = require('elliptic-curve'); var _nodeUuid = require('node-uuid'); var _nodeUuid2 = _interopRequireDefault(_nodeUuid); var _base64url = require('base64url'); var _base64url2 = _interopRequireDefault(_base64url); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function createRequestPayload(issuer) { var provisions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var unsignedRequest = { issuer: issuer, issuedAt: new Date().getTime() }; if (provisions) { unsignedRequest.provisions = provisions; } return unsignedRequest; } function createUnsignedRequest(issuer) { var header = { typ: 'JWT' }; var payload = createRequestPayload(issuer); var unsignedToken = (0, _jsontokens.createUnsignedToken)(header, payload) + '.0'; return unsignedToken; } var AuthRequest = exports.AuthRequest = function () { function AuthRequest(privateKey) { _classCallCheck(this, AuthRequest); this.privateKey = privateKey; this.keyEncoder = new _keyEncoder2.default('secp256k1'); this.publicKey = _ellipticCurve.secp256k1.getPublicKey(privateKey); this.tokenSigner = new _jsontokens.TokenSigner('ES256k', privateKey); this.issuer = { publicKey: this.publicKey }; this.provisions = [{ action: 'sign', data: _nodeUuid2.default.v4() }, { action: 'disclose', scope: 'username' }]; } _createClass(AuthRequest, [{ key: 'setIssuer', value: function setIssuer(issuer) { var newIssuer = this.issuer; for (var attrname in issuer) { newIssuer[attrname] = issuer[attrname]; } this.issuer = newIssuer; } }, { key: 'setProvisions', value: function setProvisions(provisions) { this.provisions = provisions; } }, { key: 'payload', value: function payload() { return { issuer: this.issuer, issuedAt: new Date().getTime(), provisions: this.provisions }; } }, { key: 'sign', value: function sign() { return this.tokenSigner.sign(this.payload()); } }]); return AuthRequest; }();