Files
discord-decomp/sources/utils/MFAUtils.tsx
T
2026-07-28 01:06:53 +03:00

77 lines
4.0 KiB
TypeScript

/* Metro module 8980; source: utils/MFAUtils.tsx; dependencies: [27, 1581, 8981, 1216, 2] */
import SentryUtilsNative from './SentryUtils.native.tsx'; /* Metro dependency 1216 */
import Module08981 from '../by-id/module-08981.js'; /* Metro dependency 8981 */
import * as FileImportTrackerModule from '../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactNativeModule from '../by-id/module-00027-ReactNative.js'; /* Metro dependency 27 */
function _fun69993(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#69993, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9165:6, offset: 0x01ceaa90, size: 301 bytes, params: 8, frame: 22
var r4;
var value6;
const closure = function(a0) {
return a0.replace(RegExp('[\\s._-]+', 'g'), '').toUpperCase();
};
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const window = global.window;
let value = undefined;
const r10 = (window == null ? value : window.crypto) ?? (global.window == null ? value : global.window.msCrypto);
const r5 = r10 != null && 'getRandomValues' in r10 && 'Uint8Array' in global.window;
const NativeModules = (ReactNativeModule).NativeModules;
const DCDSecurityKeyManager = NativeModules.DCDSecurityKeyManager;
const value5 = DCDSecurityKeyManager != null;
if (value5) {
value6 = require(1581) /* metro dependency 1581: MetaQuestUtilsAndroid */;
r4 = !value6.isMetaQuest();
} else {
r4 = value5;
}
(FileImportTrackerModule).fileFinishedImporting('utils/MFAUtils.tsx');
exports.hasCrypto = r5;
exports.hasWebAuthn = r4;
exports.generateTotpSecret = generateTotpSecret;
exports.encodeTotpSecret = closure;
exports.encodeTotpSecretAsUrl = function(a0, a1) {
var r3;
var value = a2;
r3 = value !== undefined ? value : 'Discord';
return 'otpauth://totp/' + (0, global.encodeURI)(r3) + ':' + (0,
global.encodeURI)(a0) + '?secret=' + encodeTotpSecret(a1) + '&issuer=' + (0, global.encodeURIComponent)(r3);
};
exports.captureWebAuthnException = captureWebAuthnException;
return value;
function generateTotpSecret() { // fn#69995, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9165:508, offset: 0x01ceabe9, size: 180 bytes, params: 1, frame: 15
const binding = env0_2;
const getRandomValues = binding.getRandomValues;
const Uint8Array = global.Uint8Array;
const value2 = Object.create(Uint8Array.prototype, {constructor: {value: Uint8Array}});
const uint8Array = new Uint8Array(20);
const value4 = Reflect.apply(getRandomValues, binding, [uint8Array instanceof Object ? uint8Array : value2]);
let value = Module08981;
value = value.encode(value4);
value = value.toString('utf8');
value = value.replace(RegExp('=', 'g'), '');
value = value.toLowerCase();
value = value.replace(RegExp('(\\w{4})', 'g'), '$1 ');
return value.trim();
}
function captureWebAuthnException(a0, a1) { // fn#69997, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9165:1012, offset: 0x01cead0b, size: 108 bytes, params: 3, frame: 17
const value = undefined;
const defaultImport = SentryUtilsNative;
const captureException = defaultImport.captureException;
const object = {};
copyDataProperties(object, a1, undefined);
const object2 = {};
const value2 = a1 == null;
copyDataProperties(object2, value2 ? value : a1.tags, value2);
object2['app_context'] = 'webauthn';
object['tags'] = object2;
Reflect.apply(captureException, defaultImport, [a0, object]);
return value;
}
}
global.__d(_fun69993, 8980, [27, 1581, 8981, 1216,
2]) /* metro module 8980, dependencies: [27, 1581, 8981, 1216, 2] */;