forked from mystiq/hydrogen-web
go back to bs58 and use other base64 decoder
as base-x isn't meant for base64
This commit is contained in:
parent
9d622434fb
commit
5752cca69c
7 changed files with 30 additions and 37 deletions
|
@ -49,7 +49,8 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aes-js": "^3.1.2",
|
"aes-js": "^3.1.2",
|
||||||
"another-json": "^0.2.0",
|
"another-json": "^0.2.0",
|
||||||
"base-x": "^3.0.8",
|
"base64-arraybuffer": "^0.2.0",
|
||||||
|
"bs58": "^4.0.1",
|
||||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz"
|
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,11 +75,17 @@ async function populateLib() {
|
||||||
path.join(modulesDir, 'another-json/another-json.js'),
|
path.join(modulesDir, 'another-json/another-json.js'),
|
||||||
path.join(libDir, "another-json/index.js")
|
path.join(libDir, "another-json/index.js")
|
||||||
);
|
);
|
||||||
// transpile base-x to esm
|
// transpile bs58 to esm
|
||||||
await fs.mkdir(path.join(libDir, "base-x/"));
|
await fs.mkdir(path.join(libDir, "bs58/"));
|
||||||
await commonjsToESM(
|
await commonjsToESM(
|
||||||
path.join(modulesDir, 'base-x/src/index.js'),
|
path.join(modulesDir, 'bs58/index.js'),
|
||||||
path.join(libDir, "base-x/index.js")
|
path.join(libDir, "bs58/index.js")
|
||||||
|
);
|
||||||
|
// transpile base64-arraybuffer to esm
|
||||||
|
await fs.mkdir(path.join(libDir, "base64-arraybuffer/"));
|
||||||
|
await commonjsToESM(
|
||||||
|
path.join(modulesDir, 'base64-arraybuffer/lib/base64-arraybuffer.js'),
|
||||||
|
path.join(libDir, "base64-arraybuffer/index.js")
|
||||||
);
|
);
|
||||||
// transpile aesjs to esm
|
// transpile aesjs to esm
|
||||||
await fs.mkdir(path.join(libDir, "aes-js/"));
|
await fs.mkdir(path.join(libDir, "aes-js/"));
|
||||||
|
@ -87,7 +93,6 @@ async function populateLib() {
|
||||||
path.join(modulesDir, 'aes-js/index.js'),
|
path.join(modulesDir, 'aes-js/index.js'),
|
||||||
path.join(libDir, "aes-js/index.js")
|
path.join(libDir, "aes-js/index.js")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
populateLib();
|
populateLib();
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {base64} from "../../utils/base-encoding.js";
|
import base64 from "../../../../lib/base64-arraybuffer/index.js";
|
||||||
|
|
||||||
export class SessionBackup {
|
export class SessionBackup {
|
||||||
constructor({backupInfo, decryption, hsApi}) {
|
constructor({backupInfo, decryption, hsApi}) {
|
||||||
|
@ -40,7 +40,7 @@ export class SessionBackup {
|
||||||
static async fromSecretStorage({olm, secretStorage, hsApi, txn}) {
|
static async fromSecretStorage({olm, secretStorage, hsApi, txn}) {
|
||||||
const base64PrivateKey = await secretStorage.readSecret("m.megolm_backup.v1", txn);
|
const base64PrivateKey = await secretStorage.readSecret("m.megolm_backup.v1", txn);
|
||||||
if (base64PrivateKey) {
|
if (base64PrivateKey) {
|
||||||
const privateKey = base64.decode(base64PrivateKey);
|
const privateKey = new Uint8Array(base64.decode(base64PrivateKey));
|
||||||
const backupInfo = await hsApi.roomKeysVersion().response();
|
const backupInfo = await hsApi.roomKeysVersion().response();
|
||||||
const expectedPubKey = backupInfo.auth_data.public_key;
|
const expectedPubKey = backupInfo.auth_data.public_key;
|
||||||
const decryption = new olm.PkDecryption();
|
const decryption = new olm.PkDecryption();
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {base64} from "../../utils/base-encoding.js";
|
import base64 from "../../../lib/base64-arraybuffer/index.js";
|
||||||
|
|
||||||
export class SecretStorage {
|
export class SecretStorage {
|
||||||
constructor({key, cryptoDriver}) {
|
constructor({key, cryptoDriver}) {
|
||||||
|
|
|
@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
import {base58} from "../../utils/base-encoding.js";
|
import bs58 from "../../../lib/bs58/index.js";
|
||||||
import {Key} from "./common.js";
|
import {Key} from "./common.js";
|
||||||
|
|
||||||
const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01];
|
const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01];
|
||||||
|
@ -25,7 +25,7 @@ const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01];
|
||||||
* @return {Key}
|
* @return {Key}
|
||||||
*/
|
*/
|
||||||
export function keyFromRecoveryKey(olm, keyDescription, recoveryKey) {
|
export function keyFromRecoveryKey(olm, keyDescription, recoveryKey) {
|
||||||
const result = base58.decode(recoveryKey.replace(/ /g, ''));
|
const result = bs58.decode(recoveryKey.replace(/ /g, ''));
|
||||||
|
|
||||||
let parity = 0;
|
let parity = 0;
|
||||||
for (const b of result) {
|
for (const b of result) {
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import base from "../../lib/base-x/index.js";
|
|
||||||
|
|
||||||
// Dictionaries come from https://github.com/cryptocoinjs/base-x/, MIT licenced.
|
|
||||||
const BASE58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
||||||
const BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
||||||
|
|
||||||
|
|
||||||
export const base58 = base(BASE58);
|
|
||||||
export const base64 = base(BASE64);
|
|
14
yarn.lock
14
yarn.lock
|
@ -945,13 +945,18 @@ balanced-match@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||||
|
|
||||||
base-x@^3.0.8:
|
base-x@^3.0.2:
|
||||||
version "3.0.8"
|
version "3.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d"
|
resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d"
|
||||||
integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==
|
integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==
|
||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
|
base64-arraybuffer@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz#4b944fac0191aa5907afe2d8c999ccc57ce80f45"
|
||||||
|
integrity sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==
|
||||||
|
|
||||||
boolbase@~1.0.0:
|
boolbase@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
||||||
|
@ -975,6 +980,13 @@ browserslist@^4.12.0, browserslist@^4.8.5:
|
||||||
escalade "^3.0.2"
|
escalade "^3.0.2"
|
||||||
node-releases "^1.1.60"
|
node-releases "^1.1.60"
|
||||||
|
|
||||||
|
bs58@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a"
|
||||||
|
integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo=
|
||||||
|
dependencies:
|
||||||
|
base-x "^3.0.2"
|
||||||
|
|
||||||
builtin-modules@^3.1.0:
|
builtin-modules@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
|
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
|
||||||
|
|
Loading…
Reference in a new issue