mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-25 17:25:18 +02:00
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
//
|
|
// Copyright 2023 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import { randomBytes } from 'node:crypto';
|
|
|
|
import ByteArray from '../internal/ByteArray.js';
|
|
import { RANDOM_LENGTH } from '../internal/Constants.js';
|
|
import * as Native from '../../Native.js';
|
|
|
|
import CreateCallLinkCredentialRequest from './CreateCallLinkCredentialRequest.js';
|
|
import CreateCallLinkCredentialResponse from './CreateCallLinkCredentialResponse.js';
|
|
import CreateCallLinkCredential from './CreateCallLinkCredential.js';
|
|
import GenericServerPublicParams from '../GenericServerPublicParams.js';
|
|
import { Aci } from '../../Address.js';
|
|
|
|
export default class CreateCallLinkCredentialRequestContext extends ByteArray {
|
|
private readonly __type?: never;
|
|
|
|
constructor(contents: Uint8Array<ArrayBuffer>) {
|
|
super(
|
|
contents,
|
|
Native.CreateCallLinkCredentialRequestContext_CheckValidContents
|
|
);
|
|
}
|
|
|
|
static forRoomId(
|
|
roomId: Uint8Array<ArrayBuffer>
|
|
): CreateCallLinkCredentialRequestContext {
|
|
const random = randomBytes(RANDOM_LENGTH);
|
|
return this.forRoomIdWithRandom(roomId, random);
|
|
}
|
|
|
|
static forRoomIdWithRandom(
|
|
roomId: Uint8Array<ArrayBuffer>,
|
|
random: Uint8Array<ArrayBuffer>
|
|
): CreateCallLinkCredentialRequestContext {
|
|
return new CreateCallLinkCredentialRequestContext(
|
|
Native.CreateCallLinkCredentialRequestContext_NewDeterministic(
|
|
roomId,
|
|
random
|
|
)
|
|
);
|
|
}
|
|
|
|
getRequest(): CreateCallLinkCredentialRequest {
|
|
return new CreateCallLinkCredentialRequest(
|
|
Native.CreateCallLinkCredentialRequestContext_GetRequest(this.contents)
|
|
);
|
|
}
|
|
|
|
receive(
|
|
response: CreateCallLinkCredentialResponse,
|
|
userId: Aci,
|
|
params: GenericServerPublicParams
|
|
): CreateCallLinkCredential {
|
|
return new CreateCallLinkCredential(
|
|
Native.CreateCallLinkCredentialRequestContext_ReceiveResponse(
|
|
this.contents,
|
|
response.contents,
|
|
userId.getServiceIdFixedWidthBinary(),
|
|
params.contents
|
|
)
|
|
);
|
|
}
|
|
}
|