diff --git a/node/package.json b/node/package.json index fb0b8e0..536be50 100644 --- a/node/package.json +++ b/node/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "arg": "^4.1.3", + "hash-wasm": "^4.8.0", "node-kakao": "4.5.0", "systemd-daemon": "^1.1.2" }, diff --git a/node/src/client.js b/node/src/client.js index 15b71f5..801a5c6 100644 --- a/node/src/client.js +++ b/node/src/client.js @@ -40,6 +40,7 @@ const { OpenChannelUserPerm } = openlink import chat from "node-kakao/chat" const { KnownChatType } = chat +import * as modutil from "./modutil.js" import { emitLines, promisify } from "./util.js" /** @@ -581,7 +582,7 @@ export default class PeerClient { * @param {string} uuid */ async #createAuthClient(uuid) { - return await AuthApiClient.create(this.deviceName, uuid) + return await AuthApiClient.create(this.deviceName, uuid, {}, modutil.ModXVCProvider) } // TODO Wrapper for per-user commands diff --git a/node/src/modutil.js b/node/src/modutil.js new file mode 100644 index 0000000..c1ea1da --- /dev/null +++ b/node/src/modutil.js @@ -0,0 +1,28 @@ +// matrix-appservice-kakaotalk - A Matrix-KakaoTalk puppeting bridge. +// Copyright (C) 2022 Tulir Asokan, Andrew Ferrazzutti +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +import { sha512 } from "hash-wasm" +import { DefaultConfiguration } from "node-kakao" + + +DefaultConfiguration.version = "3.4.2" +DefaultConfiguration.appVersion = "3.4.2.3187" + +export const ModXVCProvider = { + toFullXVCKey(deviceUUID, userAgent, email) { + const source = `WINTER|${userAgent}|ARTHUR|${email}|${deviceUUID}` + return sha512(source) + } +} \ No newline at end of file