From 954d6f98ebd13efa275cace915e3a3a52c063915 Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Fri, 24 Apr 2020 17:27:55 -0400 Subject: [PATCH 1/3] initial TypeScript definition file --- javascript/index.d.ts | 89 +++++++++++++++++++++++++++++++++++++++++ javascript/package.json | 1 + 2 files changed, 90 insertions(+) create mode 100644 javascript/index.d.ts diff --git a/javascript/index.d.ts b/javascript/index.d.ts new file mode 100644 index 0000000..2bf756a --- /dev/null +++ b/javascript/index.d.ts @@ -0,0 +1,89 @@ +/* +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. +*/ + +export as namespace Olm; + +declare class Account { + constructor(); + free(); + create(); + identity_keys(): string; + sign(message: string): string; + one_time_keys(): string; + mark_keys_as_published(); + max_number_of_one_time_keys(): number; + generate_one_time_keys(number_of_keys: number); + remove_one_time_keys(session: Session); + pickle(key: string): string; + unpickle(key: string, pickle: string); +} + +declare class Session { + constructor(); + free(): void; + pickle(key: string): string; + unpickle(key: string, pickle: string); + create_outbound( + account: Account, their_identity_key: string, their_one_time_key: string, + ): void; + create_inbound(account: Account, one_time_key_message: string): void; + create_inbound_from( + account: Account, identity_key: string, one_time_key_message: string, + ): void; + session_id(): string; + has_received_message(): boolean; + matches_inbound(one_time_key_message: string): boolean; + matches_inbound_from(identity_key: string, one_time_key_message: string): boolean; + encrypt(plaintext: string): object; + decrypt(message_type: number, message: string): string; + describe(): string; +} + +declare class Utility { + constructor(); + free(): void; + sha256(input: string): string; + ed25519verify(key: string, message: string, signature: string): void; +} + +declare class PkEncryption { + constructor(); + free(): void; + set_recipient_key(key: string): void; + encrypt(plaintext: string): object; +} + +declare class PkDecryption { + constructor(); + free(): void; + init_with_private_key(key: Uint8Array): string; + generate_key(): string; + get_private_key(): Uint8Array; + pickle(key: string): string; + unpickle(key: string, pickle: string): string; +} + +declare class PkSigning { + constructor(); + free(): void; + init_with_seed(seed: Uint8Array): string; + generate_seed(): Uint8Array; + sign(message: string): string; +} + +export function init(): Promise; + +export function get_library_version(): [number, number, number]; diff --git a/javascript/package.json b/javascript/package.json index d68020a..5123c8c 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -7,6 +7,7 @@ "olm.js", "olm.wasm", "olm_legacy.js", + "index.d.ts", "README.md" ], "scripts": { From f409b69e889038393dc5992e01e58843f335e8aa Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Fri, 24 Apr 2020 17:44:28 -0400 Subject: [PATCH 2/3] add declarations for Inbound/OutboundGroupSession --- javascript/index.d.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/javascript/index.d.ts b/javascript/index.d.ts index 2bf756a..44041e3 100644 --- a/javascript/index.d.ts +++ b/javascript/index.d.ts @@ -59,6 +59,31 @@ declare class Utility { ed25519verify(key: string, message: string, signature: string): void; } +declare class InboundGroupSession { + constructor(); + free(): void; + pickle(key: string): string; + unpickle(key: string, pickle: string): string; + create(session_key: string): string; + import_session(session_key: string): string; + decrypt(message: string): object; + session_id(): string; + first_known_index(): number; + export_session(message_index: number): string; +} + +declare class OutboundGroupSession { + constructor(); + free(): void; + pickle(key: string): string; + unpickle(key: string): string; + create(): void; + encrypt(plaintext: string): string; + session_id(): string; + session_key(): string; + message_index(): number; +} + declare class PkEncryption { constructor(); free(): void; From e6f8a99b344cfc73741cec5710ed867aba912276 Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Wed, 29 Apr 2020 12:39:41 -0400 Subject: [PATCH 3/3] add missing declaration for PkDecryption#decrypt and SAS class --- javascript/index.d.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/javascript/index.d.ts b/javascript/index.d.ts index 44041e3..682041e 100644 --- a/javascript/index.d.ts +++ b/javascript/index.d.ts @@ -99,6 +99,7 @@ declare class PkDecryption { get_private_key(): Uint8Array; pickle(key: string): string; unpickle(key: string, pickle: string): string; + decrypt(ephemeral_key: string, mac: string, ciphertext: string): string; } declare class PkSigning { @@ -109,6 +110,16 @@ declare class PkSigning { sign(message: string): string; } +declare class SAS { + constructor(); + free(): void; + get_pubkey(): string; + set_their_key(their_key: string): void; + generate_bytes(info: string, length: number): Uint8Array; + calculate_mac(input: string, info: string): string; + calculate_mac_long_kdf(input: string, info: string): string; +} + export function init(): Promise; export function get_library_version(): [number, number, number];