mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-25 17:25:18 +02:00
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
//
|
|
// Copyright 2021 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import { randomBytes } from 'node:crypto';
|
|
import * as Native from '../../Native.js';
|
|
import { RANDOM_LENGTH } from '../internal/Constants.js';
|
|
import ServerSecretParams from '../ServerSecretParams.js';
|
|
import ReceiptCredentialRequest from './ReceiptCredentialRequest.js';
|
|
import ReceiptCredentialResponse from './ReceiptCredentialResponse.js';
|
|
import ReceiptCredentialPresentation from './ReceiptCredentialPresentation.js';
|
|
|
|
export default class ServerZkReceiptOperations {
|
|
serverSecretParams: ServerSecretParams;
|
|
|
|
constructor(serverSecretParams: ServerSecretParams) {
|
|
this.serverSecretParams = serverSecretParams;
|
|
}
|
|
|
|
issueReceiptCredential(
|
|
receiptCredentialRequest: ReceiptCredentialRequest,
|
|
receiptExpirationTime: number,
|
|
receiptLevel: bigint
|
|
): ReceiptCredentialResponse {
|
|
const random = randomBytes(RANDOM_LENGTH);
|
|
return this.issueReceiptCredentialWithRandom(
|
|
random,
|
|
receiptCredentialRequest,
|
|
receiptExpirationTime,
|
|
receiptLevel
|
|
);
|
|
}
|
|
|
|
issueReceiptCredentialWithRandom(
|
|
random: Uint8Array<ArrayBuffer>,
|
|
receiptCredentialRequest: ReceiptCredentialRequest,
|
|
receiptExpirationTime: number,
|
|
receiptLevel: bigint
|
|
): ReceiptCredentialResponse {
|
|
return new ReceiptCredentialResponse(
|
|
Native.ServerSecretParams_IssueReceiptCredentialDeterministic(
|
|
this.serverSecretParams,
|
|
random,
|
|
receiptCredentialRequest.getContents(),
|
|
receiptExpirationTime,
|
|
receiptLevel
|
|
)
|
|
);
|
|
}
|
|
|
|
verifyReceiptCredentialPresentation(
|
|
receiptCredentialPresentation: ReceiptCredentialPresentation
|
|
): void {
|
|
Native.ServerSecretParams_VerifyReceiptCredentialPresentation(
|
|
this.serverSecretParams,
|
|
receiptCredentialPresentation.getContents()
|
|
);
|
|
}
|
|
}
|