@contexttrust/seal
v1.3.0
Published
Implementação de referência do selo cøntextTrust V1.2 — normalização canônica, BLAKE3, composite hash, assinatura Ed25519 e verificação. Código puro: sem rede, sem banco, sem servidor.
Maintainers
Readme
@contexttrust/seal
Implementação de referência do selo cøntextTrust V1.2.
A especificação é
SPEC.md. Quando código e spec divergirem, a spec é a autoridade e o código é o bug.
O que este pacote é
Código puro: normalização canônica, BLAKE3-256, composite hash, assinatura
Ed25519 e verificação. Sem fetch, sem banco, sem variável de ambiente, sem
DOM, sem domínio padrão.
É essa pureza que torna o cøntextTrust um protocolo e não uma API: verificar um selo não exige servidor de ninguém — nem o nosso.
O que este pacote NÃO é
Não faz armazenamento, identidade, cobrança, ancoragem on-chain nem descoberta. Isso é papel de uma aplicação. O trustLayers é uma dessas aplicações — a primeira, não a única.
Uso
import { sealContent, verifySeal, generateKeyPair } from '@contexttrust/seal'
const kp = await generateKeyPair()
const { envelope } = await sealContent({
text: 'Conteúdo a selar',
author: { displayName: 'Fulano', pubkey: bytesToHex(kp.publicKey) },
privateKey: kp.privateKey,
platforms: [],
baseUrl: 'https://sua-aplicacao.exemplo', // obrigatório: o protocolo não tem domínio
})
const r = await verifySeal(envelope)
r.valid // trueVerificar um selo de terceiro exige apenas o envelope:
const r = await verifySeal(JSON.parse(await fs.readFile('prova.json', 'utf8')).envelope)Conformidade
npm testA suíte não importa este pacote para checar a spec: reimplementa a SPEC.md
do zero e confere contra selos reais de produção (test/vectors.json). Se a
spec estiver ambígua ou incompleta, o teste quebra. Depois disso, compara o
pacote com a spec para garantir que não divergiram.
Armadilhas conhecidas
- A mensagem assinada é a string hexadecimal do
compositeHash, não os 32 bytes que ela representa. Errar isso falha em 100% dos selos (SPEC §5). verifyUrlnão é assinado. Um selo não prova onde foi criado (SPEC §4, §8).bindingDomainé fixo emcøntextTrust:polygon-mainnet:137, com ø (U+00F8). Mudar de chain invalida toda assinatura existente — de propósito.
Licença
Apache-2.0. Ver LICENSE e NOTICE na raiz do
repositório. A licença cobre o código; a marca cøntextTrust não é licenciada
por ela.
