Advertisement
Medusaaa

js

Mar 12th, 2025
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.LT_HASH_ANTI_TAMPERING = void 0;
  4. const crypto_1 = require("./crypto");
  5.  
  6. /**
  7.  * LT Hash adalah algoritma hash berbasis penjumlahan yang menjaga integritas data
  8.  * melalui serangkaian mutasi.
  9.  */
  10. const o = 128;
  11.  
  12. // Helper function to convert data to ArrayBuffer
  13. async function toArrayBuffer(data) {
  14.     if (!data) {
  15.         throw new TypeError("Data cannot be null or undefined");
  16.     }
  17.  
  18.     // Jika data adalah Promise, tunggu hingga selesai
  19.     if (data instanceof Promise) {
  20.         data = await data;
  21.     }
  22.  
  23.     if (data instanceof ArrayBuffer) {
  24.         return data;
  25.     }
  26.  
  27.     if (data instanceof Uint8Array) {
  28.         return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
  29.     }
  30.  
  31.     if (Buffer.isBuffer(data)) {
  32.         return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
  33.     }
  34.  
  35.     console.error("Invalid data type received:", typeof data, data);
  36.     throw new TypeError(`Invalid data type for DataView: ${typeof data}`);
  37. }
  38.  
  39. class d {
  40.     constructor(e) {
  41.         this.salt = e;
  42.     }
  43.  
  44.     async add(e, t) {
  45.         var r = this;
  46.         for (const item of t) {
  47.             e = await r._addSingle(e, item);
  48.         }
  49.         return e;
  50.     }
  51.  
  52.     async subtract(e, t) {
  53.         var r = this;
  54.         for (const item of t) {
  55.             e = await r._subtractSingle(e, item);
  56.         }
  57.         return e;
  58.     }
  59.  
  60.     async subtractThenAdd(e, t, r) {
  61.         var n = this;
  62.         return n.add(await n.subtract(e, r), t);
  63.     }
  64.  
  65.     async _addSingle(e, t) {
  66.         var r = this;
  67.         const n = new Uint8Array(await toArrayBuffer((0, crypto_1.hkdf)(Buffer.from(t), o, { info: r.salt }))).buffer;
  68.         return r.performPointwiseWithOverflow(await e, n, ((e, t) => e + t));
  69.     }
  70.  
  71.     async _subtractSingle(e, t) {
  72.         var r = this;
  73.         const n = new Uint8Array(await toArrayBuffer((0, crypto_1.hkdf)(Buffer.from(t), o, { info: r.salt }))).buffer;
  74.         return r.performPointwiseWithOverflow(await e, n, ((e, t) => e - t));
  75.     }
  76.  
  77.     async performPointwiseWithOverflow(e, t, r) {
  78.         const n = new DataView(await toArrayBuffer(e));
  79.         const i = new DataView(await toArrayBuffer(t));
  80.         const a = new ArrayBuffer(n.byteLength);
  81.         const s = new DataView(a);
  82.  
  83.         for (let e = 0; e < n.byteLength; e += 2) {
  84.             s.setUint16(e, r(n.getUint16(e, !0), i.getUint16(e, !0)), !0);
  85.         }
  86.         return a;
  87.     }
  88. }
  89.  
  90. exports.LT_HASH_ANTI_TAMPERING = new d('WhatsApp Patch Integrity');
  91.  
Tags: js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement