blockstack-auth
Version:
Blockstack Auth Library
96 lines (76 loc) • 3.44 kB
JavaScript
;
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;
}();