pqp
Version:
NodeJS version of libPQP
80 lines (53 loc) • 2.83 kB
JavaScript
;
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;