|
|
2 days ago | |
|---|---|---|
| lib | 2 days ago | |
| test | 2 days ago | |
| testdata | 2 days ago | |
| tool | 2 days ago | |
| .gitattributes | 2 days ago | |
| .gitignore | 2 days ago | |
| CHANGELOG.md | 2 days ago | |
| LICENSE | 2 days ago | |
| README.md | 2 days ago | |
| analysis_options.yaml | 2 days ago | |
| pubspec.lock | 2 days ago | |
| pubspec.yaml | 2 days ago | |
README.md
datekeys-dart
Librería Dart del protocolo DateKeys: DateKey, DateKeyCap (.dkc) y DateKeys Access Key (.dkk). Es Dart puro, sin Flutter ni plataforma, para que la app Flutter la use como dependencia de ruta (datekeys: { path: ../datekeys-dart }).
Es la tercera implementación de la especificación, después de la de referencia en Go (datekeys-go) y la de TypeScript (datekeys-ts). Como la de TypeScript, no genera datos de prueba propios: se contrasta con el testdata/ de datekeys-go.
Estado
Está hecha la etapa 0 del plan (docs/PLAN_dart.md del espacio de trabajo): el paquete, sus herramientas y testdata/ sincronizado. Todavía no implementa nada del protocolo. Las etapas siguientes lo traen en este orden:
| Etapa | Contenido |
|---|---|
| 1 | Bytes, errores normativos, CBOR determinista (§58) y DER estricto |
| 2 | Primitivas: HKDF, PBKDF2, scrypt, ChaCha20-Poly1305, X25519, Ed25519 estricto y age |
| 3 | BLS12-381 y tlock |
| 4 | Formatos, inspección (pasos 1 a 8) y apertura (pasos 9 a 18) |
| 5 | Firma y sello, con los textos de los veredictos |
| 6 | Escritor |
| 7 | Localizador y claves de autor |
Versiones
| Número | Dónde | Hoy |
|---|---|---|
| Librería | version de lib/src/version.dart y de pubspec.yaml, que una prueba mantiene iguales |
0.1.0-dev |
| Especificación | specVersion de lib/src/version.dart: la que nombra el campo spec de cada fichero de testdata/ |
0.11 |
La rama sigue la versión de la especificación: v0.11, hasta que datekeys-go cierre la v0.12. La etapa 5 se sincronizará ya con la v0.12.
Dependencias
- En ejecución: solo
package:crypto, para SHA-1, SHA-2 y HMAC. Todo lo demás es código propio: HKDF, PBKDF2, scrypt, ChaCha20-Poly1305, X25519, Ed25519, BLS12-381, ECDSA, RSA, DER, CMS y CBOR. - En desarrollo: solo
package:test, aprobado el 5 de octubre de 2026. No hay paquete de lints: las reglas del análisis están enanalysis_options.yaml. pubspec.lockva en el repositorio, para que las pruebas usen siempre las mismas versiones.
Nada nuevo sin aprobación escrita del autor.
Comprobar
dart pub get
tool/check.sh
tool/check.sh es el gate local, como scripts/check.sh en datekeys-go y npm run verify en datekeys-ts. Comprueba:
- el formato;
dart analyze --fatal-infos;dart test;- la copia de
testdata/frente al repositorio de Go, que debe estar al lado, en../datekeys-go.
Datos de prueba
testdata/ es una copia de datekeys-go/testdata en un commit fijo. testdata/SOURCE.json registra el commit y el SHA-256 de cada fichero, igual que en datekeys-ts. La copia actual es la del tag spec-v0.11 (ae33434).
dart run tool/sync_testdata.dart sync --commit spec-v0.11
dart run tool/sync_testdata.dart check --against ../datekeys-go
synclee los ficheros con git en ese commit, así que nunca entran cambios sin commit del repositorio de Go.- Los ficheros de
testdata/no se editan ni se generan aquí. - En cada
dart test,test/testdata_test.dartcomprueba la copia, y que cada fichero nombrespecVersion.
Licencia
Apache-2.0 (LICENSE), como datekeys-go y datekeys-ts. La especificación tiene su propia licencia, CC-BY-4.0.