Page MenuHomePhabricator

D7026.diff
No OneTemporary

D7026.diff

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

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)

Event Timeline