docs(sdk): add comprehensive integration examples in sdk/examples
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Exemplo 02: Assinatura Desacoplada de Digest (Hash SHA-256)
|
||||
*
|
||||
* Demonstra a arquitetura recomendada do CCSP/1:
|
||||
* O documento NUNCA sai do navegador / servidor da aplicação. Apenas o hash
|
||||
* de 32 bytes (SHA-256) é enviado ao CyberCore Signer para ser assinado localmente.
|
||||
*/
|
||||
|
||||
import { CyberCoreSigner } from '@cybercore/signer-sdk';
|
||||
|
||||
async function main() {
|
||||
const signer = new CyberCoreSigner({
|
||||
applicationName: 'Sistema de Prontuário Eletrônico'
|
||||
});
|
||||
|
||||
await signer.connect();
|
||||
|
||||
const certs = await signer.getCertificates();
|
||||
if (certs.length === 0) {
|
||||
throw new Error('Nenhum certificado disponível.');
|
||||
}
|
||||
|
||||
const selectedCert = certs[0];
|
||||
|
||||
// Simula o documento clínico ou contrato gerado na aplicação
|
||||
const documentoTexto = 'Evolução clínica do paciente João da Silva - 20/10/2026. Procedimento sem intercorrências.';
|
||||
|
||||
// 1. Calcula o SHA-256 no próprio ambiente local
|
||||
const digestBase64 = await signer._calculateSha256(documentoTexto);
|
||||
console.log('Hash SHA-256 gerado localmente:', digestBase64);
|
||||
|
||||
// 2. Envia apenas o digest para o CyberCore Signer
|
||||
console.log('Aguardando confirmação do usuário no diálogo nativo...');
|
||||
const result = await signer.sign({
|
||||
certificateId: selectedCert.id,
|
||||
digest: digestBase64,
|
||||
documentName: 'evolucao_clinica_1048.txt',
|
||||
documentType: 'TXT',
|
||||
purpose: 'Assinatura de Prontuário Médico',
|
||||
expiresInSeconds: 120
|
||||
});
|
||||
|
||||
console.log('Documento assinado com sucesso!');
|
||||
console.log('Status:', result.status);
|
||||
console.log('Request ID:', result.requestId);
|
||||
console.log('Algoritmo:', result.algorithm);
|
||||
console.log('Assinatura (Base64):', result.signature.substring(0, 48) + '...');
|
||||
console.log('Cadeia X.509 recebida:', result.certificateChain.length, 'certificado(s)');
|
||||
|
||||
// 3. Validação preliminar da assinatura no client
|
||||
const isValid = await signer.verify({
|
||||
signature: result.signature,
|
||||
digest: result.digest,
|
||||
certificate: result.certificate
|
||||
});
|
||||
console.log('Assinatura é consistente?', isValid);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user