SPB Git forge

spb/admin-ka

Public
41commits 1branches 0releases
172.9 MBsize
maindefault branch
19 days agolast push
JavaScript 65.5% Python 17.8% CSS 13% HTML 3.7%
15.3 KB · 374 lines javascript
Raw Blame History
1"use strict";23Object.defineProperty(exports, "__esModule", {4  value: true5});6exports.DESECBCipher = exports.DESCBCCipher = void 0;7function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }8function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }9function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }10function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }11function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }12function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }13/*14 * Ported from Flashlight VNC ActionScript implementation:15 *     http://www.wizhelp.com/flashlight-vnc/16 *17 * Full attribution follows:18 *19 * -------------------------------------------------------------------------20 *21 * This DES class has been extracted from package Acme.Crypto for use in VNC.22 * The unnecessary odd parity code has been removed.23 *24 * These changes are:25 *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.26 *27 * This software is distributed in the hope that it will be useful,28 * but WITHOUT ANY WARRANTY; without even the implied warranty of29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.30 *3132 * DesCipher - the DES encryption method33 *34 * The meat of this code is by Dave Zimmerman <dzimm@widget.com>, and is:35 *36 * Copyright (c) 1996 Widget Workshop, Inc. All Rights Reserved.37 *38 * Permission to use, copy, modify, and distribute this software39 * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and40 * without fee is hereby granted, provided that this copyright notice is kept41 * intact.42 *43 * WIDGET WORKSHOP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY44 * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED45 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A46 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WIDGET WORKSHOP SHALL NOT BE LIABLE47 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR48 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.49 *50 * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE51 * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE52 * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT53 * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE54 * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE55 * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE56 * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  WIDGET WORKSHOP57 * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR58 * HIGH RISK ACTIVITIES.59 *60 *61 * The rest is:62 *63 * Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>.  All rights reserved.64 *65 * Redistribution and use in source and binary forms, with or without66 * modification, are permitted provided that the following conditions67 * are met:68 * 1. Redistributions of source code must retain the above copyright69 *    notice, this list of conditions and the following disclaimer.70 * 2. Redistributions in binary form must reproduce the above copyright71 *    notice, this list of conditions and the following disclaimer in the72 *    documentation and/or other materials provided with the distribution.73 *74 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND75 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE76 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE77 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE78 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL79 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS80 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)81 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT82 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY83 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF84 * SUCH DAMAGE.85 *86 * Visit the ACME Labs Java page for up-to-date versions of this and other87 * fine Java utilities: http://www.acme.com/java/88 */8990/* eslint-disable comma-spacing */9192// Tables, permutations, S-boxes, etc.93var PC2 = [13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31],94  totrot = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];95var z = 0x0;96var a, b, c, d, e, f;97a = 1 << 16;98b = 1 << 24;99c = a | b;100d = 1 << 2;101e = 1 << 10;102f = d | e;103var SP1 = [c | e, z | z, a | z, c | f, c | d, a | f, z | d, a | z, z | e, c | e, c | f, z | e, b | f, c | d, b | z, z | d, z | f, b | e, b | e, a | e, a | e, c | z, c | z, b | f, a | d, b | d, b | d, a | d, z | z, z | f, a | f, b | z, a | z, c | f, z | d, c | z, c | e, b | z, b | z, z | e, c | d, a | z, a | e, b | d, z | e, z | d, b | f, a | f, c | f, a | d, c | z, b | f, b | d, z | f, a | f, c | e, z | f, b | e, b | e, z | z, a | d, a | e, z | z, c | d];104a = 1 << 20;105b = 1 << 31;106c = a | b;107d = 1 << 5;108e = 1 << 15;109f = d | e;110var SP2 = [c | f, b | e, z | e, a | f, a | z, z | d, c | d, b | f, b | d, c | f, c | e, b | z, b | e, a | z, z | d, c | d, a | e, a | d, b | f, z | z, b | z, z | e, a | f, c | z, a | d, b | d, z | z, a | e, z | f, c | e, c | z, z | f, z | z, a | f, c | d, a | z, b | f, c | z, c | e, z | e, c | z, b | e, z | d, c | f, a | f, z | d, z | e, b | z, z | f, c | e, a | z, b | d, a | d, b | f, b | d, a | d, a | e, z | z, b | e, z | f, b | z, c | d, c | f, a | e];111a = 1 << 17;112b = 1 << 27;113c = a | b;114d = 1 << 3;115e = 1 << 9;116f = d | e;117var SP3 = [z | f, c | e, z | z, c | d, b | e, z | z, a | f, b | e, a | d, b | d, b | d, a | z, c | f, a | d, c | z, z | f, b | z, z | d, c | e, z | e, a | e, c | z, c | d, a | f, b | f, a | e, a | z, b | f, z | d, c | f, z | e, b | z, c | e, b | z, a | d, z | f, a | z, c | e, b | e, z | z, z | e, a | d, c | f, b | e, b | d, z | e, z | z, c | d, b | f, a | z, b | z, c | f, z | d, a | f, a | e, b | d, c | z, b | f, z | f, c | z, a | f, z | d, c | d, a | e];118a = 1 << 13;119b = 1 << 23;120c = a | b;121d = 1 << 0;122e = 1 << 7;123f = d | e;124var SP4 = [c | d, a | f, a | f, z | e, c | e, b | f, b | d, a | d, z | z, c | z, c | z, c | f, z | f, z | z, b | e, b | d, z | d, a | z, b | z, c | d, z | e, b | z, a | d, a | e, b | f, z | d, a | e, b | e, a | z, c | e, c | f, z | f, b | e, b | d, c | z, c | f, z | f, z | z, z | z, c | z, a | e, b | e, b | f, z | d, c | d, a | f, a | f, z | e, c | f, z | f, z | d, a | z, b | d, a | d, c | e, b | f, a | d, a | e, b | z, c | d, z | e, b | z, a | z, c | e];125a = 1 << 25;126b = 1 << 30;127c = a | b;128d = 1 << 8;129e = 1 << 19;130f = d | e;131var SP5 = [z | d, a | f, a | e, c | d, z | e, z | d, b | z, a | e, b | f, z | e, a | d, b | f, c | d, c | e, z | f, b | z, a | z, b | e, b | e, z | z, b | d, c | f, c | f, a | d, c | e, b | d, z | z, c | z, a | f, a | z, c | z, z | f, z | e, c | d, z | d, a | z, b | z, a | e, c | d, b | f, a | d, b | z, c | e, a | f, b | f, z | d, a | z, c | e, c | f, z | f, c | z, c | f, a | e, z | z, b | e, c | z, z | f, a | d, b | d, z | e, z | z, b | e, a | f, b | d];132a = 1 << 22;133b = 1 << 29;134c = a | b;135d = 1 << 4;136e = 1 << 14;137f = d | e;138var SP6 = [b | d, c | z, z | e, c | f, c | z, z | d, c | f, a | z, b | e, a | f, a | z, b | d, a | d, b | e, b | z, z | f, z | z, a | d, b | f, z | e, a | e, b | f, z | d, c | d, c | d, z | z, a | f, c | e, z | f, a | e, c | e, b | z, b | e, z | d, c | d, a | e, c | f, a | z, z | f, b | d, a | z, b | e, b | z, z | f, b | d, c | f, a | e, c | z, a | f, c | e, z | z, c | d, z | d, z | e, c | z, a | f, z | e, a | d, b | f, z | z, c | e, b | z, a | d, b | f];139a = 1 << 21;140b = 1 << 26;141c = a | b;142d = 1 << 1;143e = 1 << 11;144f = d | e;145var SP7 = [a | z, c | d, b | f, z | z, z | e, b | f, a | f, c | e, c | f, a | z, z | z, b | d, z | d, b | z, c | d, z | f, b | e, a | f, a | d, b | e, b | d, c | z, c | e, a | d, c | z, z | e, z | f, c | f, a | e, z | d, b | z, a | e, b | z, a | e, a | z, b | f, b | f, c | d, c | d, z | d, a | d, b | z, b | e, a | z, c | e, z | f, a | f, c | e, z | f, b | d, c | f, c | z, a | e, z | z, z | d, c | f, z | z, a | f, c | z, z | e, b | d, b | e, z | e, a | d];146a = 1 << 18;147b = 1 << 28;148c = a | b;149d = 1 << 6;150e = 1 << 12;151f = d | e;152var SP8 = [b | f, z | e, a | z, c | f, b | z, b | f, z | d, b | z, a | d, c | z, c | f, a | e, c | e, a | f, z | e, z | d, c | z, b | d, b | e, z | f, a | e, a | d, c | d, c | e, z | f, z | z, z | z, c | d, b | d, b | e, a | f, a | z, a | f, a | z, c | e, z | e, z | d, c | d, z | e, a | f, b | e, z | d, b | d, c | z, c | d, b | z, a | z, b | f, z | z, c | f, a | d, b | d, c | z, b | e, b | f, z | z, c | f, a | e, a | e, z | f, z | f, a | d, b | z, c | e];153154/* eslint-enable comma-spacing */155var DES = /*#__PURE__*/function () {156  function DES(password) {157    _classCallCheck(this, DES);158    this.keys = [];159160    // Set the key.161    var pc1m = [],162      pcr = [],163      kn = [];164    for (var j = 0, l = 56; j < 56; ++j, l -= 8) {165      l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1166      var m = l & 0x7;167      pc1m[j] = (password[l >>> 3] & 1 << m) !== 0 ? 1 : 0;168    }169    for (var i = 0; i < 16; ++i) {170      var _m = i << 1;171      var n = _m + 1;172      kn[_m] = kn[n] = 0;173      for (var o = 28; o < 59; o += 28) {174        for (var _j = o - 28; _j < o; ++_j) {175          var _l = _j + totrot[i];176          pcr[_j] = _l < o ? pc1m[_l] : pc1m[_l - 28];177        }178      }179      for (var _j2 = 0; _j2 < 24; ++_j2) {180        if (pcr[PC2[_j2]] !== 0) {181          kn[_m] |= 1 << 23 - _j2;182        }183        if (pcr[PC2[_j2 + 24]] !== 0) {184          kn[n] |= 1 << 23 - _j2;185        }186      }187    }188189    // cookey190    for (var _i = 0, rawi = 0, KnLi = 0; _i < 16; ++_i) {191      var raw0 = kn[rawi++];192      var raw1 = kn[rawi++];193      this.keys[KnLi] = (raw0 & 0x00fc0000) << 6;194      this.keys[KnLi] |= (raw0 & 0x00000fc0) << 10;195      this.keys[KnLi] |= (raw1 & 0x00fc0000) >>> 10;196      this.keys[KnLi] |= (raw1 & 0x00000fc0) >>> 6;197      ++KnLi;198      this.keys[KnLi] = (raw0 & 0x0003f000) << 12;199      this.keys[KnLi] |= (raw0 & 0x0000003f) << 16;200      this.keys[KnLi] |= (raw1 & 0x0003f000) >>> 4;201      this.keys[KnLi] |= raw1 & 0x0000003f;202      ++KnLi;203    }204  }205206  // Encrypt 8 bytes of text207  return _createClass(DES, [{208    key: "enc8",209    value: function enc8(text) {210      var b = text.slice();211      var i = 0,212        l,213        r,214        x; // left, right, accumulator215216      // Squash 8 bytes to 2 ints217      l = b[i++] << 24 | b[i++] << 16 | b[i++] << 8 | b[i++];218      r = b[i++] << 24 | b[i++] << 16 | b[i++] << 8 | b[i++];219      x = (l >>> 4 ^ r) & 0x0f0f0f0f;220      r ^= x;221      l ^= x << 4;222      x = (l >>> 16 ^ r) & 0x0000ffff;223      r ^= x;224      l ^= x << 16;225      x = (r >>> 2 ^ l) & 0x33333333;226      l ^= x;227      r ^= x << 2;228      x = (r >>> 8 ^ l) & 0x00ff00ff;229      l ^= x;230      r ^= x << 8;231      r = r << 1 | r >>> 31 & 1;232      x = (l ^ r) & 0xaaaaaaaa;233      l ^= x;234      r ^= x;235      l = l << 1 | l >>> 31 & 1;236      for (var _i2 = 0, keysi = 0; _i2 < 8; ++_i2) {237        x = r << 28 | r >>> 4;238        x ^= this.keys[keysi++];239        var fval = SP7[x & 0x3f];240        fval |= SP5[x >>> 8 & 0x3f];241        fval |= SP3[x >>> 16 & 0x3f];242        fval |= SP1[x >>> 24 & 0x3f];243        x = r ^ this.keys[keysi++];244        fval |= SP8[x & 0x3f];245        fval |= SP6[x >>> 8 & 0x3f];246        fval |= SP4[x >>> 16 & 0x3f];247        fval |= SP2[x >>> 24 & 0x3f];248        l ^= fval;249        x = l << 28 | l >>> 4;250        x ^= this.keys[keysi++];251        fval = SP7[x & 0x3f];252        fval |= SP5[x >>> 8 & 0x3f];253        fval |= SP3[x >>> 16 & 0x3f];254        fval |= SP1[x >>> 24 & 0x3f];255        x = l ^ this.keys[keysi++];256        fval |= SP8[x & 0x0000003f];257        fval |= SP6[x >>> 8 & 0x3f];258        fval |= SP4[x >>> 16 & 0x3f];259        fval |= SP2[x >>> 24 & 0x3f];260        r ^= fval;261      }262      r = r << 31 | r >>> 1;263      x = (l ^ r) & 0xaaaaaaaa;264      l ^= x;265      r ^= x;266      l = l << 31 | l >>> 1;267      x = (l >>> 8 ^ r) & 0x00ff00ff;268      r ^= x;269      l ^= x << 8;270      x = (l >>> 2 ^ r) & 0x33333333;271      r ^= x;272      l ^= x << 2;273      x = (r >>> 16 ^ l) & 0x0000ffff;274      l ^= x;275      r ^= x << 16;276      x = (r >>> 4 ^ l) & 0x0f0f0f0f;277      l ^= x;278      r ^= x << 4;279280      // Spread ints to bytes281      x = [r, l];282      for (i = 0; i < 8; i++) {283        b[i] = (x[i >>> 2] >>> 8 * (3 - i % 4)) % 256;284        if (b[i] < 0) {285          b[i] += 256;286        } // unsigned287      }288      return b;289    }290  }]);291}();292var DESECBCipher = exports.DESECBCipher = /*#__PURE__*/function () {293  function DESECBCipher() {294    _classCallCheck(this, DESECBCipher);295    this._cipher = null;296  }297  return _createClass(DESECBCipher, [{298    key: "algorithm",299    get: function get() {300      return {301        name: "DES-ECB"302      };303    }304  }, {305    key: "_importKey",306    value: function _importKey(key, _extractable, _keyUsages) {307      this._cipher = new DES(key);308    }309  }, {310    key: "encrypt",311    value: function encrypt(_algorithm, plaintext) {312      var x = new Uint8Array(plaintext);313      if (x.length % 8 !== 0 || this._cipher === null) {314        return null;315      }316      var n = x.length / 8;317      for (var i = 0; i < n; i++) {318        x.set(this._cipher.enc8(x.slice(i * 8, i * 8 + 8)), i * 8);319      }320      return x;321    }322  }], [{323    key: "importKey",324    value: function importKey(key, _algorithm, _extractable, _keyUsages) {325      var cipher = new DESECBCipher();326      cipher._importKey(key);327      return cipher;328    }329  }]);330}();331var DESCBCCipher = exports.DESCBCCipher = /*#__PURE__*/function () {332  function DESCBCCipher() {333    _classCallCheck(this, DESCBCCipher);334    this._cipher = null;335  }336  return _createClass(DESCBCCipher, [{337    key: "algorithm",338    get: function get() {339      return {340        name: "DES-CBC"341      };342    }343  }, {344    key: "_importKey",345    value: function _importKey(key) {346      this._cipher = new DES(key);347    }348  }, {349    key: "encrypt",350    value: function encrypt(algorithm, plaintext) {351      var x = new Uint8Array(plaintext);352      var y = new Uint8Array(algorithm.iv);353      if (x.length % 8 !== 0 || this._cipher === null) {354        return null;355      }356      var n = x.length / 8;357      for (var i = 0; i < n; i++) {358        for (var j = 0; j < 8; j++) {359          y[j] ^= plaintext[i * 8 + j];360        }361        y = this._cipher.enc8(y);362        x.set(y, i * 8);363      }364      return x;365    }366  }], [{367    key: "importKey",368    value: function importKey(key, _algorithm, _extractable, _keyUsages) {369      var cipher = new DESCBCCipher();370      cipher._importKey(key);371      return cipher;372    }373  }]);374}();