Stage 5 of Dart: 5a reviewed and integrated over 5b, 5c running

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main
dev 2 days ago
parent 20249cf2af
commit 5d5982557e

@ -25,12 +25,11 @@ Las revisiones de las dos etapas están en [PLAN_dart.md](PLAN_dart.md), al fina
La etapa 4 está completa: 4a, 4b y 4c hechas, revisadas e integradas en `v0.11`, hasta `8e0e993`. La salida `-dart` del generador de tablas está en `c531e93` de `datekeys-go`, subido.
La etapa 5 se reparte en 5a, 5b y 5c, descritas en [PLAN_dart.md](PLAN_dart.md), al final. La 5a trabaja en el worktree `datekeys-dart-stage5a`, rama `stage5a`, y la 5b en la copia principal. Si la sesión se cierra a medias:
1. mira qué commits hay en `v0.11` después de `8e0e993` y en `stage5a`;
La etapa 5 se reparte en 5a, 5b y 5c, descritas en [PLAN_dart.md](PLAN_dart.md), al final. La 5a y la 5b ya están hechas, revisadas e integradas en `v0.11`, hasta `6ba6893`. Con la 5b, `testdata` pasó a `c531e93`, el borrador v0.12. La 5c corre en la copia principal. Si la sesión se cierra a medias:
1. mira qué commits hay en `v0.11` después de `6ba6893`;
2. revísalos;
3. integra `stage5a` encima de `v0.11` y pasa el gate;
4. borra el worktree;
5. lanza la 5c.
3. pasa el gate;
4. si quedó a medias, relanza la 5c con el esquema de [PLAN_dart.md](PLAN_dart.md).
2. Lo que sigue abierto de la lista de abajo:
- la aprobación del borrador v0.12 y la medida del área de 32 KiB, que el autor dejó para luego;
- el TypeScript sin urgencia;

@ -203,3 +203,20 @@ Qué hizo:
- **Pruebas:** 23 de los 24 casos de `security.json` coinciden con Go; el que falta es de la 5c. Un diferencial de 1 730 evaluaciones de Go coincide también, y las pruebas detectaron los 12 fallos inyectados.
La revisión de la sesión comparó con Go los compromisos, byte a byte, y `EvaluateSecurityIn`, `evaluateSignature` y `setSeal`. Coinciden también en que un pánico o un fallo de una parte solo afecta a su propio veredicto. No encontró fallos.
**La 5a, hecha, revisada e integrada encima de la 5b el 5-10:** `68eb96e` a `6ba6893`. El gate pasa con 1 422 pruebas en la VM y 322 en Node. El worktree y la rama `stage5a` están borrados.
Qué hizo: `cms.dart`, el port de `internal/cms` con el perfil de certificado de la v0.12, sobre `nist_curves.dart`, `ecdsa.dart` (P-256, P-384 y P-521, porque Go la acepta) y `rsa.dart` (PKCS#1 v1.5 y PSS, de 2048 a 4096 bits).
- **Vectores:** salen de Go como una prueba de Go en una exportación, porque Go 1.26 no deja fijar el azar de las firmas fuera de un binario de pruebas.
- **Pruebas:** detectaron los 8 fallos inyectados en la VM.
La revisión de la sesión comparó con la librería criptográfica de Go:
- ECDSA, con r y s de 1 a n − 1, s alta aceptada, el hash recortado a los bits del orden y la lectura `cryptobyte` de la firma;
- RSA, con la codificación PKCS#1 v1.5 completa, PSS con la sal igual al hash y la comprobación de longitudes;
- los límites de las claves RSA de `internal/cms`.
El resto del lector lo cubren los vectores de Go.
Una observación sin decisión: según el agente, `cms.ParseCert` de Go no comprueba que el certificado sea DER y el de TypeScript sí. Puede ser otra diferencia de paridad entre los dos, si llega a darse dentro de una firma.
**La 5c corre desde el 5-10** en la copia principal, sobre `6ba6893`: `securitycms.dart`, que pone `alg` 2 y `seal_type` 2 en los veredictos.

Loading…
Cancel
Save

Powered by TurnKey Linux.