Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3393921
D7026.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
13 KB
Referenced Files
None
Subscribers
None
D7026.diff
View Options
diff --git a/keyserver/flow-typed/npm/@matrix-org/olm_vx.x.x.js b/keyserver/flow-typed/npm/@matrix-org/olm_vx.x.x.js
new file mode 100644
--- /dev/null
+++ b/keyserver/flow-typed/npm/@matrix-org/olm_vx.x.x.js
@@ -0,0 +1,171 @@
+// flow-typed signature: 085f002da86534cfd8cee47ffa99dd67
+// flow-typed version: <<STUB>>/@matrix-org/olm_v3.2.4/flow_v0.182.0
+
+declare module '@matrix-org/olm' {
+
+/*
+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.
+*/
+
+ declare export class Account {
+ constructor(): void;
+ free(): void;
+ create(): void;
+ identity_keys(): string;
+ sign(message: string | Uint8Array): string;
+ one_time_keys(): string;
+ mark_keys_as_published(): void;
+ max_number_of_one_time_keys(): number;
+ generate_one_time_keys(number_of_keys: number): void;
+ remove_one_time_keys(session: Session): void;
+ generate_fallback_key(): void;
+ fallback_key(): string;
+ unpublished_fallback_key(): string;
+ forget_old_fallback_key(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ }
+
+ declare export type EncryptResult = {
+ +type: 0 | 1, // 0: PreKey, 1: Message
+ +body: string,
+ };
+ declare export class Session {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ 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): EncryptResult;
+ decrypt(message_type: number, message: string): string;
+ describe(): string;
+ }
+
+ declare export class Utility {
+ constructor(): void;
+ free(): void;
+ sha256(input: string | Uint8Array): string;
+ ed25519_verify(
+ key: string,
+ message: string | Uint8Array,
+ signature: string,
+ ): void;
+ }
+
+ declare export type DecryptResult = {
+ +message_index: string,
+ +plaintext: string,
+ };
+
+ declare export class InboundGroupSession {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ create(session_key: string): string;
+ import_session(session_key: string): string;
+ decrypt(message: string): DecryptResult;
+ session_id(): string;
+ first_known_index(): number;
+ export_session(message_index: number): string;
+ }
+
+ declare export class OutboundGroupSession {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ create(): void;
+ encrypt(plaintext: string): string;
+ session_id(): string;
+ session_key(): string;
+ message_index(): number;
+ }
+
+ declare export type PkEncryptionEncryptResult = {
+ +ciphertext: string,
+ +mac: string,
+ +ephemeral: string,
+ };
+
+ declare export class PkEncryption {
+ constructor(): void;
+ free(): void;
+ set_recipient_key(key: string): void;
+ encrypt(plaintext: string): PkEncryptionEncryptResult;
+ }
+
+ declare export class PkDecryption {
+ constructor(): void;
+ free(): void;
+ init_with_private_key(key: Uint8Array): string;
+ generate_key(): string;
+ get_private_key(): Uint8Array;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): string;
+ decrypt(ephemeral_key: string, mac: string, ciphertext: string): string;
+ }
+
+ declare export class PkSigning {
+ constructor(): void;
+ free(): void;
+ init_with_seed(seed: Uint8Array): string;
+ generate_seed(): Uint8Array;
+ sign(message: string): string;
+ }
+
+ declare export class SAS {
+ constructor(): void;
+ 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_fixed_base64(input: string, info: string): string;
+ calculate_mac_long_kdf(input: string, info: string): string;
+ }
+
+ declare export function init(opts?: Object): Promise<void>;
+
+ declare export function get_library_version(): [number, number, number];
+
+ declare export var PRIVATE_KEY_LENGTH: number;
+
+ declare export default {
+ init: typeof init,
+ get_library_version: typeof get_library_version,
+ PRIVATE_KEY_LENGTH: typeof PRIVATE_KEY_LENGTH,
+ Account: typeof Account,
+ Utility: typeof Utility,
+ };
+
+}
diff --git a/keyserver/src/responders/user-responders.js b/keyserver/src/responders/user-responders.js
--- a/keyserver/src/responders/user-responders.js
+++ b/keyserver/src/responders/user-responders.js
@@ -1,5 +1,6 @@
// @flow
+import type { Utility as OlmUtility } from '@matrix-org/olm';
import invariant from 'invariant';
import { getRustAPI } from 'rust-node-addon';
import { ErrorTypes, SiweMessage } from 'siwe';
@@ -102,8 +103,7 @@
} from '../updaters/account-updaters.js';
import { userSubscriptionUpdater } from '../updaters/user-subscription-updaters.js';
import { viewerAcknowledgmentUpdater } from '../updaters/viewer-acknowledgment-updater.js';
-import { getOLMUtility } from '../utils/olm-utils.js';
-import type { OLMUtility } from '../utils/olm-utils.js';
+import { getOlmUtility } from '../utils/olm-utils.js';
import { validateInput } from '../utils/validation-utils.js';
const subscriptionUpdateRequestInputValidator = tShape({
@@ -227,7 +227,7 @@
throw new ServerError('invalid_identity_keys_blob');
}
- const olmUtil: OLMUtility = getOLMUtility();
+ const olmUtil: OlmUtility = getOlmUtility();
try {
olmUtil.ed25519_verify(
identityKeys.primaryIdentityPublicKeys.ed25519,
@@ -371,7 +371,7 @@
if (signedIdentityKeysBlob) {
identityKeys = JSON.parse(signedIdentityKeysBlob.payload);
- const olmUtil: OLMUtility = getOLMUtility();
+ const olmUtil: OlmUtility = getOlmUtility();
try {
olmUtil.ed25519_verify(
identityKeys.primaryIdentityPublicKeys.ed25519,
@@ -540,7 +540,7 @@
throw new ServerError('invalid_identity_keys_blob');
}
- const olmUtil: OLMUtility = getOLMUtility();
+ const olmUtil: OlmUtility = getOlmUtility();
try {
olmUtil.ed25519_verify(
identityKeys.primaryIdentityPublicKeys.ed25519,
diff --git a/keyserver/src/utils/olm-utils.js b/keyserver/src/utils/olm-utils.js
--- a/keyserver/src/utils/olm-utils.js
+++ b/keyserver/src/utils/olm-utils.js
@@ -1,6 +1,7 @@
// @flow
import olm from '@matrix-org/olm';
+import type { Utility as OlmUtility } from '@matrix-org/olm';
import invariant from 'invariant';
import { importJSON } from './import-json.js';
@@ -16,18 +17,8 @@
return olmConfig;
}
-export type OLMUtility = {
- +free: () => void,
- +sha256: (input: string | Uint8Array) => string,
- +ed25519_verify: (
- key: string,
- message: string | Uint8Array,
- signature: string,
- ) => void,
-};
-
-let cachedOLMUtility: OLMUtility;
-function getOLMUtility(): OLMUtility {
+let cachedOLMUtility: OlmUtility;
+function getOlmUtility(): OlmUtility {
if (cachedOLMUtility) {
return cachedOLMUtility;
}
@@ -35,4 +26,4 @@
return cachedOLMUtility;
}
-export { getOlmConfig, getOLMUtility };
+export { getOlmConfig, getOlmUtility };
diff --git a/web/flow-typed/npm/@matrix-org/olm_vx.x.x.js b/web/flow-typed/npm/@matrix-org/olm_vx.x.x.js
new file mode 100644
--- /dev/null
+++ b/web/flow-typed/npm/@matrix-org/olm_vx.x.x.js
@@ -0,0 +1,171 @@
+// flow-typed signature: 085f002da86534cfd8cee47ffa99dd67
+// flow-typed version: <<STUB>>/@matrix-org/olm_v3.2.4/flow_v0.182.0
+
+declare module '@matrix-org/olm' {
+
+/*
+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.
+*/
+
+ declare export class Account {
+ constructor(): void;
+ free(): void;
+ create(): void;
+ identity_keys(): string;
+ sign(message: string | Uint8Array): string;
+ one_time_keys(): string;
+ mark_keys_as_published(): void;
+ max_number_of_one_time_keys(): number;
+ generate_one_time_keys(number_of_keys: number): void;
+ remove_one_time_keys(session: Session): void;
+ generate_fallback_key(): void;
+ fallback_key(): string;
+ unpublished_fallback_key(): string;
+ forget_old_fallback_key(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ }
+
+ declare export type EncryptResult = {
+ +type: 0 | 1, // 0: PreKey, 1: Message
+ +body: string,
+ };
+ declare export class Session {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ 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): EncryptResult;
+ decrypt(message_type: number, message: string): string;
+ describe(): string;
+ }
+
+ declare export class Utility {
+ constructor(): void;
+ free(): void;
+ sha256(input: string | Uint8Array): string;
+ ed25519_verify(
+ key: string,
+ message: string | Uint8Array,
+ signature: string,
+ ): void;
+ }
+
+ declare export type DecryptResult = {
+ +message_index: string,
+ +plaintext: string,
+ };
+
+ declare export class InboundGroupSession {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ create(session_key: string): string;
+ import_session(session_key: string): string;
+ decrypt(message: string): DecryptResult;
+ session_id(): string;
+ first_known_index(): number;
+ export_session(message_index: number): string;
+ }
+
+ declare export class OutboundGroupSession {
+ constructor(): void;
+ free(): void;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): void;
+ create(): void;
+ encrypt(plaintext: string): string;
+ session_id(): string;
+ session_key(): string;
+ message_index(): number;
+ }
+
+ declare export type PkEncryptionEncryptResult = {
+ +ciphertext: string,
+ +mac: string,
+ +ephemeral: string,
+ };
+
+ declare export class PkEncryption {
+ constructor(): void;
+ free(): void;
+ set_recipient_key(key: string): void;
+ encrypt(plaintext: string): PkEncryptionEncryptResult;
+ }
+
+ declare export class PkDecryption {
+ constructor(): void;
+ free(): void;
+ init_with_private_key(key: Uint8Array): string;
+ generate_key(): string;
+ get_private_key(): Uint8Array;
+ pickle(key: string | Uint8Array): string;
+ unpickle(key: string | Uint8Array, pickle: string): string;
+ decrypt(ephemeral_key: string, mac: string, ciphertext: string): string;
+ }
+
+ declare export class PkSigning {
+ constructor(): void;
+ free(): void;
+ init_with_seed(seed: Uint8Array): string;
+ generate_seed(): Uint8Array;
+ sign(message: string): string;
+ }
+
+ declare export class SAS {
+ constructor(): void;
+ 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_fixed_base64(input: string, info: string): string;
+ calculate_mac_long_kdf(input: string, info: string): string;
+ }
+
+ declare export function init(opts?: Object): Promise<void>;
+
+ declare export function get_library_version(): [number, number, number];
+
+ declare export var PRIVATE_KEY_LENGTH: number;
+
+ declare export default {
+ init: typeof init,
+ get_library_version: typeof get_library_version,
+ PRIVATE_KEY_LENGTH: typeof PRIVATE_KEY_LENGTH,
+ Account: typeof Account,
+ Utility: typeof Utility,
+ };
+
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 1, 4:31 PM (20 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2605568
Default Alt Text
D7026.diff (13 KB)
Attached To
Mode
D7026: [keyserver][web] Add types for @matrix-org/olm
Attached
Detach File
Event Timeline
Log In to Comment