Repository navigation
Firmar con un certificado del Almacén de macOS #2005
Copy link
Copy link
Closed
Labels
ready-for-agentFully specified, an agent can pick it upFully specified, an agent can pick it up
Description
Parent
What to build
Quien elige un certificado de su llavero firma con él desde la ventana y desde una sede; macOS pide permiso o contraseña con su diálogo. Cancelar, la contraseña incorrecta y el resto de errores llegan como las situaciones de siempre.
Acceptance criteria
- Rust calcula el resumen y el sistema lo firma con RSA PKCS#1 v1.5, RSA PSS y ECDSA, con la rama SHA-1 explícita.
- Pruebas
cfg(macos)contra un llavero temporal firman con cada algoritmo y verifican la firma. - Los errores del sistema se traducen a cancelación, contraseña o PIN incorrecto, PIN bloqueado y tarjeta retirada.
Blocked by
Spec extract
Implementation Decisions (from #2000):
- ID-530: La firma sigue el ADR-0001: Rust calcula el resumen y el sistema firma el resumen ya calculado con RSA PKCS#1 v1.5, RSA PSS y ECDSA (que macOS ya devuelve en DER), SHA-1 incluido con su rama explícita (Windows: CNG firma con SHA-1 cuando la preferencia lo permite #1625). Los errores del sistema se traducen a las situaciones de siempre: cancelación, contraseña o PIN incorrecto, PIN bloqueado, tarjeta retirada.
- ID-537: Para el Almacén de macOS no hay diálogo propio: la contraseña o el PIN los pide macOS, como en Windows (ID-477).
Testing Decisions (from #2000):
- TD-131: Una buena prueba mira el comportamiento visible desde fuera: la lista que recibe la ventana con sus chips y su orden, el estado del lector, lo que se firma y si verifica, el estado de la CA y del manejador. No mira llamadas a Security.framework ni a LaunchServices.
- TD-134: El adaptador del Almacén de macOS con pruebas
cfg(macos)contra un llavero temporal que cada prueba crea, desbloquea y borra, con un certificado de pruebas propio (RSA y curva elíptica): listar, firmar con PKCS#1, PSS y ECDSA y verificar la firma; importar un.p12y quitarlo. Nunca tocan el llavero de inicio de sesión de quien las corre. Precedente: las pruebas CNG de TD-128, que crean y borran su certificado.
Complexity
complex — firma trifásica por una API nueva con cuatro algoritmos y traducción de errores. Estimación: unos 110k tokens.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ready-for-agentFully specified, an agent can pick it upFully specified, an agent can pick it up
Activity