/** * Erros padronizados do SDK CyberCore Signer alinhados ao protocolo CCSP/1. */ export class CyberCoreError extends Error { constructor(message, code = 'COMMUNICATION_ERROR', originalError = null) { super(message); this.name = 'CyberCoreError'; this.code = code; this.originalError = originalError; } } export class AgentNotRunningError extends CyberCoreError { constructor( message = 'O agente desktop CyberCore Signer não está em execução ou não foi detectado em 127.0.0.1:21325. Certifique-se de que o aplicativo está instalado e aberto na bandeja do sistema (system tray).', options = {} ) { super(message, 'AGENT_NOT_RUNNING'); this.name = 'AgentNotRunningError'; this.host = options.host || '127.0.0.1'; this.port = options.port || 21325; this.actionableGuidance = [ '1. Verifique se o ícone do CyberCore Signer está ativo na barra de tarefas / bandeja do sistema.', '2. Se o aplicativo ainda não estiver instalado, baixe e execute o instalador oficial do CyberCore Signer.', '3. Certifique-se de que a porta local 21325 não está bloqueada por firewall ou softwares antivírus.' ].join('\n'); } } export class ApplicationNotAuthorizedError extends CyberCoreError { constructor(message = 'A aplicação web não foi autorizada pelo usuário no CyberCore Signer.') { super(message, 'APPLICATION_NOT_AUTHORIZED'); this.name = 'ApplicationNotAuthorizedError'; } } export class UserCancelledError extends CyberCoreError { constructor(message = 'A operação de assinatura foi cancelada pelo usuário no diálogo nativo.') { super(message, 'USER_CANCELLED'); this.name = 'UserCancelledError'; } } export class CertificateNotFoundError extends CyberCoreError { constructor(message = 'Certificado digital não encontrado ou não selecionado no agente.') { super(message, 'CERTIFICATE_NOT_FOUND'); this.name = 'CertificateNotFoundError'; } } export class CertificateExpiredError extends CyberCoreError { constructor(message = 'O certificado digital selecionado expirou e não pode ser utilizado para assinatura.') { super(message, 'CERTIFICATE_EXPIRED'); this.name = 'CertificateExpiredError'; } } export class CertificateInvalidError extends CyberCoreError { constructor(message = 'O certificado digital é inválido, foi revogado ou possui estrutura X.509 corrompida.') { super(message, 'CERTIFICATE_INVALID'); this.name = 'CertificateInvalidError'; } } export class PrivateKeyNotAvailableError extends CyberCoreError { constructor(message = 'A chave privada do certificado não está acessível no computador ou o dispositivo físico está ausente.') { super(message, 'PRIVATE_KEY_NOT_AVAILABLE'); this.name = 'PrivateKeyNotAvailableError'; } } export class PinRequiredError extends CyberCoreError { constructor(message = 'O PIN do token USB ou smart card A3 é obrigatório para autorizar a chave privada.') { super(message, 'PIN_REQUIRED'); this.name = 'PinRequiredError'; } } export class PinIncorrectError extends CyberCoreError { constructor(message = 'O PIN informado para o dispositivo A3 está incorreto.') { super(message, 'PIN_INCORRECT'); this.name = 'PinIncorrectError'; } } export class TokenNotFoundError extends CyberCoreError { constructor(message = 'Token USB ou smart card não foi detectado no computador ou foi removido.') { super(message, 'TOKEN_NOT_FOUND'); this.name = 'TokenNotFoundError'; } } export class RequestExpiredError extends CyberCoreError { constructor(message = 'A solicitação de assinatura expirou antes de ser processada.') { super(message, 'REQUEST_EXPIRED'); this.name = 'RequestExpiredError'; } } export class ReplayDetectedError extends CyberCoreError { constructor(message = 'Requisição duplicada detectada (ataque de replay prevenido).') { super(message, 'REPLAY_DETECTED'); this.name = 'ReplayDetectedError'; } } export class InvalidOriginError extends CyberCoreError { constructor(message = 'A origem web solicitante não confere com os domínios homologados para esta aplicação.') { super(message, 'INVALID_ORIGIN'); this.name = 'InvalidOriginError'; } } export class UnsupportedAlgorithmError extends CyberCoreError { constructor(message = 'O algoritmo criptográfico solicitado não é suportado pelo provedor de certificados.') { super(message, 'UNSUPPORTED_ALGORITHM'); this.name = 'UnsupportedAlgorithmError'; } } export class ProviderNotAvailableError extends CyberCoreError { constructor(message = 'O provedor criptográfico necessário não está disponível no sistema operacional.') { super(message, 'PROVIDER_NOT_AVAILABLE'); this.name = 'ProviderNotAvailableError'; } } export class SignatureFailedError extends CyberCoreError { constructor(message = 'Falha durante o cálculo da assinatura digital.') { super(message, 'SIGNATURE_FAILED'); this.name = 'SignatureFailedError'; } } export class TimeoutError extends CyberCoreError { constructor(message = 'Tempo limite esgotado na comunicação com o agente local.') { super(message, 'TIMEOUT_ERROR'); this.name = 'TimeoutError'; } }