UNPKG

pqp

Version:
80 lines (53 loc) 2.83 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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; }; }(); var _private_key = require('./private_key'); var _private_key2 = _interopRequireDefault(_private_key); var _public_key = require('./public_key'); var _public_key2 = _interopRequireDefault(_public_key); var _randomgen = require('../operations/randomgen'); var _randomgen2 = _interopRequireDefault(_randomgen); var _arithmetic = require('../operations/arithmetic'); var _config = require('../utils/config'); var _config2 = _interopRequireDefault(_config); var _bignum = require('bignum'); var _bignum2 = _interopRequireDefault(_bignum); 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"); } } var private_key = _config2.default.private_key; var Keygen = function () { function Keygen() { _classCallCheck(this, Keygen); this.block_length = private_key.length; this.block_weight = private_key.weight; this.block_error = private_key.error; this.rate = [1, 2]; this.randgen = new _randomgen2.default(); } _createClass(Keygen, [{ key: 'generate', value: function generate() { // create keypair var priv_key = new _private_key2.default(); var pub_key = new _public_key2.default(); // set private-key parameters priv_key.H_0 = this.randgen.get_random_weight_vector(this.block_length, this.block_weight); var h1 = this.randgen.get_random_weight_vector(this.block_length, this.block_weight); priv_key.H_1inv = (0, _arithmetic.exp_poly)(h1, (0, _bignum2.default)(2).pow(1200).sub(2)); priv_key.H_1 = h1; priv_key.block_length = this.block_length; priv_key.block_weight = this.block_weight; priv_key.block_error = this.block_error; // set public-key parameters pub_key.G = (0, _arithmetic.mul_poly)(priv_key.H_0, priv_key.H_1inv); pub_key.block_length = this.block_length; pub_key.block_weight = this.block_weight; pub_key.block_error = this.block_error; return [priv_key, pub_key]; } }]); return Keygen; }(); exports.default = Keygen;