UNPKG

pqp

Version:
135 lines (114 loc) 4.47 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 _asn = require('asn1.js'); var _asn2 = _interopRequireDefault(_asn); var _nodeBitarray = require('node-bitarray'); var _nodeBitarray2 = _interopRequireDefault(_nodeBitarray); require('../utils/polyfill'); var _private_key = require('../crypto/private_key'); var _private_key2 = _interopRequireDefault(_private_key); var _public_key = require('../crypto/public_key'); var _public_key2 = _interopRequireDefault(_public_key); var _conversion = require('./conversion'); 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 ASN1PublicKey = _asn2.default.define('ASN1PublicKey', function () { this.seq().obj(this.key('G').bitstr()); }); var ASN1PrivateKey = _asn2.default.define('ASN1PrivateKey', function () { this.seq().obj(this.key('H0').bitstr(), this.key('H1').bitstr(), this.key('H1inv').bitstr()); }); var ASN1Ciphertext = _asn2.default.define('ASN1Ciphertext', function () { this.seq().obj(this.key('C0').bitstr(), this.key('C1').bitstr(), this.key('Sym').octstr()); }); var IO = function () { function IO() { _classCallCheck(this, IO); } _createClass(IO, [{ key: 'extract_der_priv_key', value: function extract_der_priv_key(seq) { var der = ASN1PrivateKey.decode(seq, 'pem', { label: 'PQP PRIVATE KEY' }); var priv_key = new _private_key2.default(); priv_key.H_0 = (0, _conversion.toBitArray)(der['H0']); priv_key.H_1 = (0, _conversion.toBitArray)(der['H1']); priv_key.H_1inv = (0, _conversion.toBitArray)(der['H1inv']); priv_key.block_length = priv_key.H_0.length; return priv_key; } }, { key: 'get_der_priv_key', value: function get_der_priv_key(priv_key) { var der = ASN1PrivateKey.encode({ H0: { data: _nodeBitarray2.default.toBuffer(priv_key.H_0), unused: 7 }, H1: { data: _nodeBitarray2.default.toBuffer(priv_key.H_1), unused: 7 }, H1inv: { data: _nodeBitarray2.default.toBuffer(priv_key.H_1inv), unused: 7 } }, 'pem', { label: 'PQP PRIVATE KEY' }); return der; } }, { key: 'extract_der_pub_key', value: function extract_der_pub_key(seq) { var der = ASN1PublicKey.decode(seq, 'pem', { label: 'PQP PUBLIC KEY' }); var pub_key = new _public_key2.default(); pub_key.G = (0, _conversion.toBitArray)(der['G']); pub_key.block_length = pub_key.G.length; return pub_key; } }, { key: 'get_der_pub_key', value: function get_der_pub_key(pub_key) { return ASN1PublicKey.encode({ G: { data: _nodeBitarray2.default.toBuffer(pub_key.G), unused: 7 } }, 'pem', { label: 'PQP PUBLIC KEY' }); } }, { key: 'get_der_ciphertext', value: function get_der_ciphertext(c_0, c_1, symmetric_stream) { var der = ASN1Ciphertext.encode({ C0: { data: _nodeBitarray2.default.toBuffer(c_0), unused: 7 }, C1: { data: _nodeBitarray2.default.toBuffer(c_1), unused: 7 }, Sym: symmetric_stream }, 'pem', { label: 'PQP MESSAGE' }); return der; } }, { key: 'extract_der_ciphertext', value: function extract_der_ciphertext(seq) { var der = ASN1Ciphertext.decode(seq, 'pem', { label: 'PQP MESSAGE' }); var c_0 = (0, _conversion.toBitArray)(der['C0']); var c_1 = (0, _conversion.toBitArray)(der['C1']); var symmetric_stream = der['Sym']; return [c_0, c_1, symmetric_stream]; } }]); return IO; }(); exports.default = IO;