Files
cybercore-signer/sdk/examples/README.md
T

2.3 KiB

Exemplos de Integração — CyberCore Signer Web SDK

Este diretório contém exemplos práticos e prontos para uso demonstrando os principais fluxos de integração do @cybercore/signer-sdk com aplicações web.


📁 Arquivos de Exemplo

Arquivo Descrição
01-crypto-login.js Autenticação segura por desafio criptográfico (Challenge-Response) sem senhas.
02-sign-digest.js Assinatura desacoplada em que o navegador calcula o hash SHA-256 e o CyberCore assina apenas o digest.
03-sign-pades.js Assinatura digital completa de PDF (PAdES) com selo gráfico posicionado (ICP-Brasil / Gov.br).
04-error-handling.js Captura e tratamento estruturado de todos os erros do protocolo CCSP/1 com guia acionável.

🚀 Como Executar

Pré-requisitos

  1. Agente desktop CyberCore Signer em execução na máquina (127.0.0.1:21325).
  2. Node.js 18+ instalado.

Execução direta via Node.js

Como o pacote usa módulos ES ("type": "module"), você pode testar diretamente com:

# Executar exemplo de login
node examples/01-crypto-login.js

# Executar exemplo de assinatura de digest
node examples/02-sign-digest.js

# Executar exemplo de assinatura PAdES com selo
node examples/03-sign-pades.js

# Executar exemplo de tratamento de erros
node examples/04-error-handling.js

💡 Uso em Projetos Frontend (React, Vue, Angular, Svelte, Vanilla)

Instale o pacote a partir do seu registry npm privado:

npm install @cybercore/signer-sdk

Importe os métodos e tipos em qualquer componente ou serviço web:

import { CyberCoreSigner, AgentNotRunningError } from '@cybercore/signer-sdk';

const signer = new CyberCoreSigner({
  applicationName: 'Meu Sistema Web'
});

async function assinarDocumento(arquivoPdf: File, certId: string) {
  try {
    const resultado = await signer.signPdfDocument({
      pdf: arquivoPdf,
      certificateId: certId,
      position: 'BOTTOM_RIGHT',
      sealThemeId: 'icp-brasil'
    });

    // Baixa o documento assinado no navegador
    resultado.download('documento_assinado.pdf');
  } catch (err) {
    if (err instanceof AgentNotRunningError) {
      alert(err.actionableGuidance);
    }
  }
}