Qué es un elemento del llavero
El modelo de macOS: llaveros, elementos, atributos y clases. Qué se guarda de verdad cuando guardas una contraseña, y por qué los atributos son la parte que importa.
Las cuatro piezas
La identidad de un elemento
El detalle que explica el comportamiento raro: un elemento no se identifica por un identificador que tú pongas, sino por la combinación de unos atributos concretos — para una contraseña genérica, el servicio y la cuenta.
De ahí salen tres consecuencias prácticas:
- Guardar con el mismo servicio y la misma cuenta actualiza. No crea otro.
- Guardar cambiando cualquiera de los dos crea uno nuevo, y el anterior sigue ahí. Es el origen de los llaveros con seis entradas de la misma aplicación.
- Y buscar solo por servicio devuelve varios si hay varias cuentas. Si tu código coge el primero, coge uno cualquiera.
// mismo servicio + misma cuenta = el mismo elemento, se actualizaEntry::new("dev.wandres.miapp", "ana@ejemplo.com")?.set_password(&testigo)?;// cambia la cuenta y aparece un elemento nuevo; el de ana sigue en el llaveroEntry::new("dev.wandres.miapp", "luis@ejemplo.com")?.set_password(&otro)?;Por eso el criterio del nivel 34.3 —la cuenta identifica al sujeto— no era estética: es lo que decide si tu aplicación actualiza o acumula.
Lo que sí se cifra y lo que no
Una distinción que casi nadie hace y que importa:
La consecuencia práctica: no metas información delicada en los atributos. Un servicio llamado con el nombre de tu aplicación está bien; una cuenta que sea el correo del usuario es normal y aceptado; un atributo que revele qué plan tiene contratado o qué hace con tu aplicación, no.
La clase, en una línea
Para lo que hace una aplicación de escritorio normal, contraseña genérica y punto. Es la clase pensada para «un secreto que mi aplicación guarda», con servicio y cuenta como identidad, y es lo que usan las librerías.
Las otras clases existen por razones concretas que probablemente no son la tuya: la de internet lleva servidor, protocolo, puerto y ruta —está pensada para navegadores y clientes de correo—; las de claves y certificados son para material criptográfico que el sistema usa, no para cadenas que tú guardas.