Files
private_image/backend/src/modules/upload/dto/CreateZkUploadDto.ts
T

26 lines
913 B
TypeScript

import { IsBoolean, IsNotEmpty, ValidateIf } from 'class-validator';
import { AES_GCM_IV_BYTE_LENGTH } from '../../../consts/crypto/aesGcmIvByteLength';
import { IsBase64 } from '../../../validation/decorators/isBase64';
import { UploadCiphertextOptionsDto } from './UploadCiphertextOptionsDto';
export class CreateZkUploadDto extends UploadCiphertextOptionsDto {
@IsNotEmpty()
@IsBoolean()
passwordProtected: boolean;
@ValidateIf((dto: CreateZkUploadDto) => dto.passwordProtected === true)
@IsNotEmpty()
@IsBase64({ maxByteLength: 128 })
wrappedDek?: string;
@ValidateIf((dto: CreateZkUploadDto) => dto.passwordProtected === true)
@IsNotEmpty()
@IsBase64({ byteLength: AES_GCM_IV_BYTE_LENGTH })
wrapIv?: string;
@ValidateIf((dto: CreateZkUploadDto) => dto.passwordProtected === true)
@IsNotEmpty()
@IsBase64({ maxByteLength: 64 })
salt?: string;
}