/** * 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.') { super(message, 'AGENT_NOT_RUNNING'); this.name = 'AgentNotRunningError'; } } 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.') { super(message, 'USER_CANCELLED'); this.name = 'UserCancelledError'; } } export class CertificateNotFoundError extends CyberCoreError { constructor(message = 'Certificado digital não encontrado ou não selecionado.') { super(message, 'CERTIFICATE_NOT_FOUND'); this.name = 'CertificateNotFoundError'; } } export class PinRequiredError extends CyberCoreError { constructor(message = 'PIN do token ou smart card A3 é obrigatório.') { 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.') { super(message, 'TOKEN_NOT_FOUND'); this.name = 'TokenNotFoundError'; } } export class RequestExpiredError extends CyberCoreError { constructor(message = 'A solicitação de assinatura expirou.') { 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'; } }