# Núcleo de assinatura A1/A3 — v1.1.0

## A1
O CLI `bin/sign-a1-xml.php` assina localmente XML com elemento único e atributo `Id` usando RSA-SHA256 e XMLDSig enveloped; senha apenas por variável de ambiente. Exemplo: `AMASYSTEM_A1_PASSWORD='...' php bin/sign-a1-xml.php entrada.xml certificado.pfx infNFe saida.xml`. **É um assinador técnico genérico**, não uma implementação completa da NF-e: requer XML de leiaute válido, XSD, contexto e verificações adicionais antes de operar.

O arquivo assinado deve permanecer fora do diretório público, com permissões restritas. Não registrar senha ou PFX no banco, logs ou API. Exigir validação externa da assinatura e do XML gerado antes de habilitar produção.

## A3
`app/Fiscal/SigningProvider.php` define contrato de assinatura independente do tipo de certificado. A integração operacional A3 **não está pronta**: exige agente Windows local com autenticação mútua, confirmação do usuário, acesso ao token via CSP/PKCS#11, nonce anti-replay, timeout e correlação auditável. PIN deve ser inserido no computador do titular e nunca enviado ao servidor.

## Transmissão e segurança
Não foram implementados, nem habilitados, SOAP SEFAZ, DPS NFS-e, lote CT-e/MDF-e, validação XSD oficial ou recepção de protocolo. Os endpoints da API de rascunhos seguem inalterados; `emit` permanece HTTP 501. A validação de política tributária e do ambiente de homologação/produção continua necessária por modelo.

## Testes
Execute `php -l` sobre todos os PHPs. Para teste completo de assinatura instale `ext-dom` e `ext-openssl` e valide com um verificador independente de XMLDSig, usando somente certificados de teste; rejeite certificados expirados e XML com DTD, Id duplicado ou Signature preexistente.
