Files
libsignal/node/ts/zkgroup/calllinks/CreateCallLinkCredentialRequestContext.ts
2026-03-16 18:55:17 -07:00

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
)
);
}
}