/** * Implementação de segurança PDF conforme especificação ISO 32000. * Suporta criptografia Standard (RC4 e AES) para PDFs versões 1.4-2.0. */ import PDFDict from "../objects/PDFDict"; import PDFRef from "../objects/PDFRef"; import PDFContext from "../PDFContext"; /** * Permissões de documento PDF. */ export interface PDFPermissions { /** Permite impressão */ printing?: boolean; /** Permite impressão em alta qualidade */ printingHighQuality?: boolean; /** Permite modificar o documento */ modifying?: boolean; /** Permite copiar conteúdo */ copying?: boolean; /** Permite adicionar/modificar anotações e campos de formulário */ annotating?: boolean; /** Permite preencher campos de formulário */ fillingForms?: boolean; /** Permite extração de conteúdo para acessibilidade */ contentAccessibility?: boolean; /** Permite montar o documento */ documentAssembly?: boolean; } /** * Opções de criptografia para salvar PDFs. */ export interface EncryptionOptions { /** Senha do usuário (permite abrir o documento) */ userPassword?: string; /** Senha do proprietário (permite acesso total) */ ownerPassword: string; /** Permissões do documento */ permissions?: PDFPermissions; /** Versão da criptografia: 1=40-bit RC4, 2=128-bit RC4, 4=128-bit AES, 5=256-bit AES */ version?: 1 | 2 | 4 | 5; } /** * Opções para carregar PDFs criptografados. */ export interface DecryptionOptions { /** Senha para abrir o documento */ password?: string; } /** * Classe principal de segurança PDF. */ export declare class PDFSecurity { private context; private encryptionKey; private version; private revision; private keyLength; private permissions; private useAES; private ownerKey; private userKey; private documentId; constructor(context: PDFContext, documentId?: Uint8Array); /** * Gera um ID de documento único. */ private generateDocumentId; /** * Prepara a senha com padding conforme especificação PDF. */ private padPassword; /** * Computa o valor O (owner key) para criptografia. */ private computeOwnerKey; /** * Computa a chave de criptografia do documento. */ private computeEncryptionKey; /** * Computa o valor U (user key) para criptografia. */ private computeUserKey; /** * Verifica se uma senha está correta. */ private verifyPassword; private computeUserKeyForVerification; private arraysEqual; /** * Configura a criptografia para um novo documento. */ setupEncryption(options: EncryptionOptions): void; /** * Carrega configurações de criptografia de um dicionário Encrypt existente. */ loadFromEncryptDict(encryptDict: PDFDict, password?: string): boolean; private extractBytes; private recoverUserPasswordFromOwner; private isPadding; /** * Cria o dicionário Encrypt para o documento. */ createEncryptDict(): PDFDict; /** * Computa a chave para um objeto específico. */ computeObjectKey(ref: PDFRef): Uint8Array; /** * Encripta dados de um objeto. */ encryptData(ref: PDFRef, data: Uint8Array): Uint8Array; /** * Decripta dados de um objeto. */ decryptData(ref: PDFRef, data: Uint8Array): Uint8Array; /** * Encripta uma string. */ encryptString(ref: PDFRef, str: Uint8Array): Uint8Array; /** * Decripta uma string. */ decryptString(ref: PDFRef, str: Uint8Array): Uint8Array; /** * Encripta um stream. */ encryptStream(ref: PDFRef, data: Uint8Array): Uint8Array; /** * Decripta um stream. */ decryptStream(ref: PDFRef, data: Uint8Array): Uint8Array; /** * Retorna o ID do documento. */ getDocumentId(): Uint8Array; /** * Retorna as permissões do documento. */ getPermissions(): PDFPermissions; /** * Verifica se a criptografia está configurada. */ isEncrypted(): boolean; /** * Retorna a versão da criptografia. */ getVersion(): number; /** * Retorna se usa AES. */ usesAES(): boolean; } export default PDFSecurity; //# sourceMappingURL=PDFSecurity.d.ts.map