forked from mystiq/hydrogen-web
Convert common.js to ts
This commit is contained in:
parent
d91aaabeb3
commit
f9f59fec39
5 changed files with 35 additions and 16 deletions
|
@ -15,7 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const DEHYDRATION_LIBOLM_PICKLE_ALGORITHM = "org.matrix.msc2697.v1.olm.libolm_pickle";
|
const DEHYDRATION_LIBOLM_PICKLE_ALGORITHM = "org.matrix.msc2697.v1.olm.libolm_pickle";
|
||||||
import {KeyDescription} from "../ssss/common.js";
|
import {KeyDescription} from "../ssss/common";
|
||||||
import {keyFromCredentialAndDescription} from "../ssss/index.js";
|
import {keyFromCredentialAndDescription} from "../ssss/index.js";
|
||||||
|
|
||||||
export async function getDehydratedDevice(hsApi, olm, platform, log) {
|
export async function getDehydratedDevice(hsApi, olm, platform, log) {
|
||||||
|
|
|
@ -14,25 +14,41 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import type {Platform} from "../../platform/web/Platform.js";
|
||||||
|
|
||||||
|
interface IKeyDescription {
|
||||||
|
algorithm: string;
|
||||||
|
passphrase: {
|
||||||
|
algorithm: string;
|
||||||
|
iterations: number;
|
||||||
|
salt: string;
|
||||||
|
};
|
||||||
|
mac: string;
|
||||||
|
iv: string;
|
||||||
|
}
|
||||||
|
|
||||||
export class KeyDescription {
|
export class KeyDescription {
|
||||||
constructor(id, keyDescription) {
|
private readonly _id: string;
|
||||||
|
private readonly _keyDescription: IKeyDescription;
|
||||||
|
|
||||||
|
constructor(id: string, keyDescription: IKeyDescription) {
|
||||||
this._id = id;
|
this._id = id;
|
||||||
this._keyDescription = keyDescription;
|
this._keyDescription = keyDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
get id() {
|
get id(): string {
|
||||||
return this._id;
|
return this._id;
|
||||||
}
|
}
|
||||||
|
|
||||||
get passphraseParams() {
|
get passphraseParams(): IKeyDescription["passphrase"] {
|
||||||
return this._keyDescription?.passphrase;
|
return this._keyDescription?.passphrase;
|
||||||
}
|
}
|
||||||
|
|
||||||
get algorithm() {
|
get algorithm(): string {
|
||||||
return this._keyDescription?.algorithm;
|
return this._keyDescription?.algorithm;
|
||||||
}
|
}
|
||||||
|
|
||||||
async isCompatible(key, platform) {
|
async isCompatible(key: Key, platform: Platform): Promise<boolean> {
|
||||||
if (this.algorithm === "m.secret_storage.v1.aes-hmac-sha2") {
|
if (this.algorithm === "m.secret_storage.v1.aes-hmac-sha2") {
|
||||||
const kd = this._keyDescription;
|
const kd = this._keyDescription;
|
||||||
if (kd.mac) {
|
if (kd.mac) {
|
||||||
|
@ -53,33 +69,36 @@ export class KeyDescription {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Key {
|
export class Key {
|
||||||
constructor(keyDescription, binaryKey) {
|
private readonly _keyDescription: KeyDescription;
|
||||||
|
private readonly _binaryKey: Uint8Array;
|
||||||
|
|
||||||
|
constructor(keyDescription: KeyDescription, binaryKey: Uint8Array) {
|
||||||
this._keyDescription = keyDescription;
|
this._keyDescription = keyDescription;
|
||||||
this._binaryKey = binaryKey;
|
this._binaryKey = binaryKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
withDescription(description) {
|
withDescription(description: KeyDescription): Key {
|
||||||
return new Key(description, this._binaryKey);
|
return new Key(description, this._binaryKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
get description() {
|
get description(): KeyDescription {
|
||||||
return this._keyDescription;
|
return this._keyDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
get id() {
|
get id(): string {
|
||||||
return this._keyDescription.id;
|
return this._keyDescription.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
get binaryKey() {
|
get binaryKey(): Uint8Array {
|
||||||
return this._binaryKey;
|
return this._binaryKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
get algorithm() {
|
get algorithm(): string {
|
||||||
return this._keyDescription.algorithm;
|
return this._keyDescription.algorithm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function calculateKeyMac(key, ivStr, platform) {
|
async function calculateKeyMac(key: BufferSource, ivStr: string, platform: Platform): Promise<string> {
|
||||||
const {crypto, encoding} = platform;
|
const {crypto, encoding} = platform;
|
||||||
const {utf8, base64} = encoding;
|
const {utf8, base64} = encoding;
|
||||||
const {derive, aes, hmac} = crypto;
|
const {derive, aes, hmac} = crypto;
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {KeyDescription, Key} from "./common.js";
|
import {KeyDescription, Key} from "./common";
|
||||||
import {keyFromPassphrase} from "./passphrase.js";
|
import {keyFromPassphrase} from "./passphrase.js";
|
||||||
import {keyFromRecoveryKey} from "./recoveryKey.js";
|
import {keyFromRecoveryKey} from "./recoveryKey.js";
|
||||||
import {SESSION_E2EE_KEY_PREFIX} from "../e2ee/common.js";
|
import {SESSION_E2EE_KEY_PREFIX} from "../e2ee/common.js";
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Key} from "./common.js";
|
import {Key} from "./common";
|
||||||
|
|
||||||
const DEFAULT_ITERATIONS = 500000;
|
const DEFAULT_ITERATIONS = 500000;
|
||||||
const DEFAULT_BITSIZE = 256;
|
const DEFAULT_BITSIZE = 256;
|
||||||
|
|
|
@ -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 {Key} from "./common.js";
|
import {Key} from "./common";
|
||||||
|
|
||||||
const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01];
|
const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue