Saltar al contenido

Windows en la práctica

Qué se implementa, qué se prueba y las incidencias típicas. Y la comparación con macOS, que deja claro qué es común y qué no.

Lo que se implementa

Las mismas cuatro operaciones, con dos diferencias respecto a macOS:

Rust
// el nombre es una sola cadena: la estructura la metes túfn nombre(cuenta: &str) -> String {    format!("dev.wandres.miapp:{cuenta}")}pub fn leer(cuenta: &str) -> Result<Option<String>, Error> {    match Entry::new(SERVICIO, cuenta)?.get_password() {        Ok(s) => Ok(Some(s)),        Err(keyring::Error::NoEntry) => Ok(None),        // aquí no hay "denegado" — no hay diálogo — pero sí "no descifra"        Err(e) if es_de_descifrado(&e) => {            let _ = borrar(cuenta);          // nivel 36.3: limpiar lo muerto            Ok(None)        }        Err(e) => Err(e.into()),    }}
  • No hay caso «denegado», porque no hay diálogo. En su lugar aparece «no descifra», que es el nivel 36.3.
  • Y ese caso borra, porque un secreto que no descifra no va a descifrar nunca.

El resto —guardar, borrar, la forma de los identificadores, que el secreto no cruce el puente— es idéntico. Ésa es la parte que una librería abstrae bien.

Lo que se prueba

Las incidencias, por su descripción

lo que dice el usuario qué es
«después de que soporte me cambiara la contraseña, perdí la sesión» restablecimiento externo · nivel 36.3
«en el portátil de la oficina no está mi sesión» otra máquina sin perfil viajero
«restauré el equipo y tengo que volver a entrar» el material de cifrado no se restaura
«da un error al iniciar sesión y no dice nada» casi siempre el límite de tamaño · nivel 36.1

Ninguna menciona el almacén de credenciales, y las cuatro son de eso. Por eso la primera pregunta de diagnóstico en Windows es distinta a la de macOS: no «¿has actualizado?» sino «¿ha cambiado algo en tu cuenta o en tu equipo?».

Los dos sistemas, lado a lado

Lo común, que es lo que se puede escribir una vez: las cuatro operaciones, los tres resultados de leer, el diseño de identificadores, borrar lo muerto, tratar cualquier fallo de lectura como «vuelve a iniciar sesión», y que el secreto no cruce el puente.

Lo distinto, que hay que tener en la cabeza aunque el código no lo vea: que en macOS tu aplicación tiene identidad y en Windows no; que macOS interrumpe y Windows nunca; y que lo que rompe el acceso es tu firma allí y la cuenta del usuario aquí.