From 891f179ab4f4882ca8527c6e6c76f259b110d5da Mon Sep 17 00:00:00 2001 From: Lachie Date: Wed, 2 Oct 2024 09:13:47 +1000 Subject: [PATCH] fix(deemix): blowfish package breaking downloads --- .changeset/red-cooks-hang.md | 5 + deemix/package.json | 1 - deemix/src/utils/blowfish.cjs | 556 ++++++++++++++++++++++++++++++++++ deemix/src/utils/crypto.ts | 11 +- pnpm-lock.yaml | 8 - 5 files changed, 570 insertions(+), 11 deletions(-) create mode 100644 .changeset/red-cooks-hang.md create mode 100644 deemix/src/utils/blowfish.cjs diff --git a/.changeset/red-cooks-hang.md b/.changeset/red-cooks-hang.md new file mode 100644 index 00000000..20cb4ffe --- /dev/null +++ b/.changeset/red-cooks-hang.md @@ -0,0 +1,5 @@ +--- +"deemix": minor +--- + +Fix blowfish library causing downloaded tracks to have inconsistent playback speed diff --git a/deemix/package.json b/deemix/package.json index 1e807fba..67837b1a 100644 --- a/deemix/package.json +++ b/deemix/package.json @@ -23,7 +23,6 @@ "dependencies": { "@spotify/web-api-ts-sdk": "^1.2.0", "async": "^3.2.0", - "blowfish-node": "^1.1.4", "browser-id3-writer": "^6.1.0", "deezer-sdk": "workspace:*", "got": "^14.4.2", diff --git a/deemix/src/utils/blowfish.cjs b/deemix/src/utils/blowfish.cjs new file mode 100644 index 00000000..b44675fc --- /dev/null +++ b/deemix/src/utils/blowfish.cjs @@ -0,0 +1,556 @@ +/* eslint-disable */ +!(function (r, e) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = e()) + : "function" == typeof define && define.amd + ? define(e) + : ((r = + "undefined" != typeof globalThis ? globalThis : r || self).Blowfish = + e()); +})(this, function () { + "use strict"; + function i(r, e) { + for (var t = 0; t < e.length; t++) { + var n = e[t]; + (n.enumerable = n.enumerable || !1), + (n.configurable = !0), + "value" in n && (n.writable = !0), + Object.defineProperty(r, n.key, n); + } + } + var d = { ECB: 0, CBC: 1 }, + v = { PKCS5: 0, ONE_AND_ZEROS: 1, LAST_BYTE: 2, NULL: 3, SPACES: 4 }, + o = { STRING: 0, UINT8_ARRAY: 1 }, + p = [ + 608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, + 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, + 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731, + ], + g = [ + 3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, + 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, + 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, + 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, + 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, + 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, + 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, + 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, + 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, + 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, + 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, + 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, + 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, + 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, + 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, + 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, + 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, + 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, + 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, + 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, + 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, + 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, + 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, + 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, + 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, + 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, + 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, + 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, + 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, + 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, + 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, + 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, + 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, + 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, + 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, + 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, + 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, + 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, + 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, + 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, + 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, + 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, + 1404054877, 2845806497, 146425753, 1854211946, + ], + y = [ + 1266315497, 3048417604, 3681880366, 3289982499, 290971e4, 1235738493, + 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, + 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, + 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, + 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, + 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, + 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, + 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, + 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, + 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, + 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, + 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, + 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, + 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, + 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, + 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, + 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, + 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, + 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, + 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, + 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, + 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, + 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, + 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, + 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, + 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, + 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, + 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, + 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, + 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, + 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, + 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, + 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, + 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, + 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, + 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, + 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, + 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, + 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, + 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, + 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, + 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, + 356393447, 2410691914, 3873677099, 3682840055, + ], + C = [ + 3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, + 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, + 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, + 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, + 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, + 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, + 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, + 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, + 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, + 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, + 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, + 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, + 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, + 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, + 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, + 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, + 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, + 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, + 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, + 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, + 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, + 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, + 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, + 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, + 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, + 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, + 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, + 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, + 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, + 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, + 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, + 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, + 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, + 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, + 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, + 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, + 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, + 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, + 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, + 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, + 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, + 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, + 3617206836, 2455994898, 1729034894, 1080033504, + ], + w = [ + 976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, + 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, + 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, + 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, + 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, + 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, + 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, + 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, + 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, + 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, + 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, + 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, + 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, + 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, + 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, + 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, + 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, + 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, + 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, + 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, + 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, + 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, + 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, + 886195818, 18198404, 3786409e3, 2509781533, 112762804, 3463356488, + 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, + 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, + 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, + 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, + 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, + 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, + 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, + 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, + 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, + 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, + 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, + 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, + 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, + 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, + 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, + 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, + 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, + 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, + 3075367218, 3463963227, 1469046755, 985887462, + ]; + function s(r) { + return r >>> 0; + } + function B(r, e) { + return s(r ^ e); + } + function h(r, e) { + return s((r + e) | 0); + } + function E(r, e, t, n) { + return s((r << 24) | (e << 16) | (t << 8) | n); + } + function a(r) { + return [(r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]; + } + function e(r) { + return "string" == typeof r; + } + function t(r) { + return "object" == typeof r && "byteLength" in r; + } + function b(r) { + return e(r) || t(r); + } + function _(e, t) { + var n = !1; + return ( + Object.keys(e).forEach(function (r) { + e[r] === t && (n = !0); + }), + n + ); + } + function A(r) { + if (e(r)) + return (function (r) { + for ( + var e = new Uint8Array(4 * r.length), t = 0, n = 0; + n !== r.length; + n++ + ) { + var i = r.charCodeAt(n); + if (i < 128) e[t++] = i; + else { + if (i < 2048) e[t++] = (i >> 6) | 192; + else { + if (55295 < i && i < 56320) { + if (++n >= r.length) + return ( + console.error("Incomplete surrogate pair"), e.subarray(0, t) + ); + var o = r.charCodeAt(n); + if (o < 56320 || 57343 < o) + return ( + console.error( + "Second surrogate character 0x" + + o.toString(16) + + " at index " + + n + + " out of range" + ), + e.subarray(0, t) + ); + (e[t++] = + ((i = 65536 + ((1023 & i) << 10) + (1023 & o)) >> 18) | 240), + (e[t++] = ((i >> 12) & 63) | 128); + } else e[t++] = (i >> 12) | 224; + e[t++] = ((i >> 6) & 63) | 128; + } + e[t++] = (63 & i) | 128; + } + } + return e.subarray(0, t); + })(r); + if (t(r)) return new Uint8Array(r); + throw new Error("Unsupported type"); + } + return (function () { + function r(r, e, t) { + if ((void 0 === e && (e = d.ECB), void 0 === t && (t = v.PKCS5), !b(r))) + throw new Error("Key should be a string or an ArrayBuffer / Buffer"); + if (!_(d, e)) throw new Error("Unsupported mode"); + if (!_(v, t)) throw new Error("Unsupported padding"); + (this.mode = e), + (this.padding = t), + (this.iv = null), + (this.p = p.slice()), + (this.s = [g.slice(), y.slice(), C.slice(), w.slice()]), + (r = (function (r) { + if (72 <= r.length) return r; + for (var e = []; e.length < 72; ) + for (var t = 0; t < r.length; t++) e.push(r[t]); + return new Uint8Array(e); + })(A(r))); + for (var n = 0, i = 0; n < 18; n++, i += 4) { + var o = E(r[i], r[i + 1], r[i + 2], r[i + 3]); + this.p[n] = B(this.p[n], o); + } + for (var s = 0, h = 0, f = 0; f < 18; f += 2) { + var u = this._encryptBlock(s, h), + s = u[0], + h = u[1]; + (this.p[f] = s), (this.p[f + 1] = h); + } + for (var a = 0; a < 4; a++) + for (var c = 0; c < 256; c += 2) { + var l = this._encryptBlock(s, h); + (s = l[0]), (h = l[1]), (this.s[a][c] = s), (this.s[a][c + 1] = h); + } + } + var e, + t, + n = r.prototype; + return ( + (n.setIv = function (r) { + if (!b(r)) + throw new Error("IV should be a string or an ArrayBuffer / Buffer"); + if (8 !== (r = A(r)).length) + throw new Error("IV should be 8 byte length"); + this.iv = r; + }), + (n.encode = function (r) { + if (!b(r)) + throw new Error( + "Encode data should be a string or an ArrayBuffer / Buffer" + ); + if (this.mode !== d.ECB && !this.iv) throw new Error("IV is not set"); + return ( + (r = (function (r, e) { + var t = 8 - (r.length % 8); + if (8 == t && 0 < r.length && e !== v.PKCS5) return r; + var n = new Uint8Array(r.length + t), + i = [], + o = t, + s = 0; + switch (e) { + case v.PKCS5: + s = t; + break; + case v.ONE_AND_ZEROS: + i.push(128), o--; + break; + case v.SPACES: + s = 32; + } + for (; 0 < o; ) { + if (e === v.LAST_BYTE && 1 === o) { + i.push(t); + break; + } + i.push(s), o--; + } + return n.set(r), n.set(i, r.length), n; + })(A(r), this.padding)), + this.mode === d.ECB + ? this._encodeECB(r) + : this.mode === d.CBC + ? this._encodeCBC(r) + : void 0 + ); + }), + (n.decode = function (r, e) { + if ((void 0 === e && (e = o.STRING), !b(r))) + throw new Error( + "Decode data should be a string or an ArrayBuffer / Buffer" + ); + if (this.mode !== d.ECB && !this.iv) throw new Error("IV is not set"); + if ((r = A(r)).length % 8 != 0) + throw new Error("Decoded data should be multiple of 8 bytes"); + switch (this.mode) { + case d.ECB: + r = this._decodeECB(r); + break; + case d.CBC: + r = this._decodeCBC(r); + } + switch (e) { + case o.UINT8_ARRAY: + return r; + case o.STRING: + return (function (r) { + for (var e = 0, t = ""; e < r.length; ) { + var n = r[e++]; + if (127 < n) + if (191 < n && n < 224) { + if (e >= r.length) + return console.error("Incomplete 2-byte sequence"), t; + n = ((31 & n) << 6) | (63 & r[e++]); + } else if (223 < n && n < 240) { + if (e + 1 >= r.length) + return console.error("Incomplete 3-byte sequence"), t; + n = ((15 & n) << 12) | ((63 & r[e++]) << 6) | (63 & r[e++]); + } else { + if (!(239 < n && n < 248)) + return ( + console.error( + "Unknown multibyte start 0x" + + n.toString(16) + + " at index " + + (e - 1) + ), + t + ); + if (e + 2 >= r.length) + return console.error("Incomplete 4-byte sequence"), t; + n = + ((7 & n) << 18) | + ((63 & r[e++]) << 12) | + ((63 & r[e++]) << 6) | + (63 & r[e++]); + } + if (n <= 65535) t += String.fromCharCode(n); + else { + if (!(n <= 1114111)) + return ( + console.error( + "Code point 0x" + + n.toString(16) + + " exceeds UTF-16 reach" + ), + t + ); + (n -= 65536), + (t += String.fromCharCode((n >> 10) | 55296)), + (t += String.fromCharCode((1023 & n) | 56320)); + } + } + return t; + })(r); + default: + throw new Error("Unsupported return type"); + } + }), + (n._encryptBlock = function (r, e) { + for (var t = 0; t < 16; t++) { + r = B(r, this.p[t]); + var n = [(e = B(e, this._f(r))), r]; + (r = n[0]), (e = n[1]); + } + var i = [e, r]; + return ( + (e = B((e = i[1]), this.p[16])), [(r = B((r = i[0]), this.p[17])), e] + ); + }), + (n._decryptBlock = function (r, e) { + for (var t = 17; 1 < t; t--) { + r = B(r, this.p[t]); + var n = [(e = B(e, this._f(r))), r]; + (r = n[0]), (e = n[1]); + } + var i = [e, r]; + return ( + (e = B((e = i[1]), this.p[1])), [(r = B((r = i[0]), this.p[0])), e] + ); + }), + (n._f = function (r) { + var e = h(this.s[0][(r >>> 24) & 255], this.s[1][(r >>> 16) & 255]); + return h((e = B(e, this.s[2][(r >>> 8) & 255])), this.s[3][255 & r]); + }), + (n._encodeECB = function (r) { + for (var e = new Uint8Array(r.length), t = 0; t < r.length; t += 8) { + var n = E(r[t], r[t + 1], r[t + 2], r[t + 3]), + i = E(r[t + 4], r[t + 5], r[t + 6], r[t + 7]), + o = this._encryptBlock(n, i), + n = o[0], + i = o[1]; + e.set(a(n), t), e.set(a(i), t + 4); + } + return e; + }), + (n._encodeCBC = function (r) { + for ( + var e = new Uint8Array(r.length), + t = E(this.iv[0], this.iv[1], this.iv[2], this.iv[3]), + n = E(this.iv[4], this.iv[5], this.iv[6], this.iv[7]), + i = 0; + i < r.length; + i += 8 + ) { + var o = E(r[i], r[i + 1], r[i + 2], r[i + 3]), + s = E(r[i + 4], r[i + 5], r[i + 6], r[i + 7]), + h = [B(t, o), B(n, s)], + h = this._encryptBlock((o = h[0]), (s = h[1])); + (o = h[0]), (n = s = h[1]), e.set(a((t = o)), i), e.set(a(s), i + 4); + } + return e; + }), + (n._decodeECB = function (r) { + for (var e = new Uint8Array(r.length), t = 0; t < r.length; t += 8) { + var n = E(r[t], r[t + 1], r[t + 2], r[t + 3]), + i = E(r[t + 4], r[t + 5], r[t + 6], r[t + 7]), + o = this._decryptBlock(n, i), + n = o[0], + i = o[1]; + e.set(a(n), t), e.set(a(i), t + 4); + } + return e; + }), + (n._decodeCBC = function (r) { + for ( + var e = new Uint8Array(r.length), + t = E(this.iv[0], this.iv[1], this.iv[2], this.iv[3]), + n = E(this.iv[4], this.iv[5], this.iv[6], this.iv[7]), + i = 0; + i < r.length; + i += 8 + ) { + var o = (f = E(r[i], r[i + 1], r[i + 2], r[i + 3])), + s = (u = E(r[i + 4], r[i + 5], r[i + 6], r[i + 7])), + h = this._decryptBlock(f, u), + f = h[0], + u = h[1], + h = [B(t, f), B(n, u)]; + (u = h[1]), + (t = o), + (n = s), + e.set(a((f = h[0])), i), + e.set(a(u), i + 4); + } + return e; + }), + (e = r), + (t = [ + { + key: "MODE", + get: function () { + return d; + }, + }, + { + key: "PADDING", + get: function () { + return v; + }, + }, + { + key: "TYPE", + get: function () { + return o; + }, + }, + ]), + (n = null) && i(e.prototype, n), + t && i(e, t), + r + ); + })(); +}); diff --git a/deemix/src/utils/crypto.ts b/deemix/src/utils/crypto.ts index e7c214c1..46445c17 100644 --- a/deemix/src/utils/crypto.ts +++ b/deemix/src/utils/crypto.ts @@ -1,4 +1,3 @@ -import Blowfish from "blowfish-node"; import { createCipheriv, createHash, @@ -6,6 +5,15 @@ import { getCiphers, } from "crypto"; +let Blowfish; + +try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + Blowfish = require("./blowfish.cjs"); +} catch (e) { + console.error(e); +} + export function _md5(data, type: BufferEncoding = "binary") { const md5sum = createHash("md5"); md5sum.update(Buffer.from(data, type)); @@ -60,7 +68,6 @@ export function decryptChunk(chunk, blowFishKey) { return Buffer.concat([cipher.update(chunk), cipher.final()]); } if (Blowfish) { - // @ts-expect-error TODO: figure out why this is not working const cipher = new Blowfish( blowFishKey, Blowfish.MODE.CBC, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cc1630a..8f2236e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ importers: async: specifier: ^3.2.0 version: 3.2.6 - blowfish-node: - specifier: ^1.1.4 - version: 1.1.4 browser-id3-writer: specifier: ^6.1.0 version: 6.1.0 @@ -1704,9 +1701,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blowfish-node@1.1.4: - resolution: {integrity: sha512-Iahpxc/cutT0M0tgwV5goklB+EzDuiYLgwJg050AmUG2jSIOpViWMLdnRgBxzZuNfswAgHSUiIdvmNdgL2v6DA==} - bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -6894,8 +6888,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blowfish-node@1.1.4: {} - bluebird@3.7.2: {} body-parser@1.20.3: