From d88cedb6146410d5083fdc81e3018d9c8ea22b10 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Sat, 11 Aug 2018 04:27:18 +0300 Subject: [PATCH] Security module --- client/src/modules/modules.js | 1 + client/src/modules/security.js | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 client/src/modules/security.js diff --git a/client/src/modules/modules.js b/client/src/modules/modules.js index 95ca32d7..f8a78a41 100644 --- a/client/src/modules/modules.js +++ b/client/src/modules/modules.js @@ -24,3 +24,4 @@ export { default as EventHook } from './eventhook'; export { default as DiscordApi, Modules as DiscordApiModules } from './discordapi'; export { default as BdWebApi } from './bdwebapi'; export { default as Connectivity } from './connectivity'; +export { default as Security } from './security'; diff --git a/client/src/modules/security.js b/client/src/modules/security.js new file mode 100644 index 00000000..78630c6c --- /dev/null +++ b/client/src/modules/security.js @@ -0,0 +1,41 @@ +/** + * BetterDiscord Security Module + * Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks + * All rights reserved. + * https://betterdiscord.net + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. +*/ + +import aes256 from 'aes256'; + +export default class Security { + + static encrypt(key, content, prefix = '') { + return `${prefix}${aes256.encrypt(key, content)}`; + } + + static deepDecrypt(keys, content, prefix) { + let decrypt = null; + for (const key of keys.reverse()) { + if (decrypt === null) decrypt = this.decrypt(key, content, prefix); + else decrypt = this.decrypt(key, decrypt, prefix); + } + return decrypt; + } + + static decrypt(key, content, prefix = '') { + return aes256.decrypt(key, content.replace(prefix, '')); + } + + static deepEncrypt(keys, content, prefix) { + let encrypt = null; + for (const key of keys) { + if (encrypt === null) encrypt = this.encrypt(key, content, prefix); + else encrypt = this.encrypt(key, encrypt, prefix); + } + return encrypt; + } + +}