Verificador de recibos: MikaPort Caribe
Comprueba, en tu propio navegador y sin conexión, que un dato estaba dentro del corpus sellado un día concreto. Esta página no envía nada a ningún servidor: guárdala y seguirá funcionando aunque la empresa desaparezca.
MikaPort publica cada día una huella criptográfica de sus datos en un repositorio público externo en Codeberg que MikaPort no controla. Así, cualquiera puede comprobar que un dato entregado en el pasado no fue alterado después.
Qué se comprueba exactamente
- Hoja. Se serializa el dato de forma canónica (claves ordenadas por punto de código, sin espacios, UTF-8) y se calcula
sha256. Debe coincidir con la hoja declarada en la prueba. - Camino. Se combina la hoja con cada hermano:
sha256(0x01 ‖ izquierda ‖ derecha), subiendo hasta la raíz. - Raíz. El resultado debe coincidir con la raíz que pegaste en el paso 3.
Lo que no comprueba esta página: que la raíz esté sellada en el tiempo. Eso se hace aparte,
con el fichero .tsr del día y OpenSSL:
openssl ts -verify -data raiz.bin -in freetsa.tsr -CAfile freetsa-cacert.pem -untrusted freetsa-tsa.crt
Reglas de canonicalización (idénticas en PostgreSQL, Python y aquí)
- Objetos: claves ordenadas por punto de código Unicode; sin espacios;
{"a":1,"b":2}. - Arreglos: se preserva el orden.
- Cadenas: escape JSON estándar, UTF-8 sin
\uinnecesarios. - Importes y tasas nuevos viajan como cadena (
"15.0000"). Para recibos históricos, esta página también prueba la representación decimal numérica que usaba su descarga, sin omitir campos ni alterar la hoja sellada. - Hoja:
sha256(canónico), sin prefijo. Nodo interno:sha256(0x01 ‖ izq ‖ der). - Nodo impar: se promueve al nivel superior sin duplicarlo.