SamKeyChain es un envoltorio simple para acceder a cuentas, obtener contraseñas, configurar contraseñas y eliminar contraseñas utilizando el llavero del sistema en Mac OS X e iOS.
Simplemente agregue lo siguiente a su Podfile si está usando Cocoapods:
pod 'SAMKeychain'o Cartfile si está usando Cartago:
github "soffes/SAMKeychain"
Para agregar manualmente a su proyecto:
Security.framework a su objetivoSAMKeychain.h , SAMKeychain.m , SAMKeychainQuery.h y SAMKeychainQuery.m a su proyecto.Samkeychain requiere arco.
Nota: Actualmente SamKeyChain no admite Mac OS 10.6.
SamKeyChain tiene los siguientes métodos de clase para trabajar con el llavero del sistema:
+ ( NSArray *)allAccounts;
+ ( NSArray *)accountsForService:( NSString *)serviceName;
+ ( NSString *)passwordForService:( NSString *)serviceName account:( NSString *)account;
+ ( BOOL )deletePasswordForService:( NSString *)serviceName account:( NSString *)account;
+ ( void )setAccessibilityType:( CFTypeRef )accessibilityType;
+ ( BOOL )setPassword:( NSString *)password forService:( NSString *)serviceName account:( NSString *)account;Fácil como eso. (Ver samkeychain.h y samkeychainQuery.h para todos los métodos).
Lea la documentación en línea.
Si su ahorro en el llavero falla, use el objeto nserror para manejarlo. Puede invocar [error code] para obtener el código de error numérico. Algunos valores se definen en Samkeychain.h, y el resto en Secbase.h.
NSError *error = nil ;
SAMKeychainQuery *query = [[SAMKeychainQuery alloc ] init ];
query.service = @" MyService " ;
query.account = @" soffes " ;
[query fetch: &error];
if ([error code ] == errSecItemNotFound) {
NSLog ( @" Password not found " );
} else if (error != nil ) {
NSLog ( @" Some other error occurred: %@ " , [error localizedDescription ]);
} Obviamente, debes hacer algo más sofisticado. Puede llamar a [error localizedDescription] si todo lo que necesita es el mensaje de error.
Trabajar con el llavero es bastante sucio. Realmente debe verificar los errores y las fallas. Esta biblioteca no lo hace más estable, solo envuelve todas las molestas API C.
Tampoco debería usar el valor predeterminado, sino establecer el accessibilityType . kSecAttrAccessibleWhenUnlocked debería funcionar para la mayoría de las aplicaciones. Consulte la documentación de Apple para otras opciones.
Esto se inspiró originalmente en Emkeychain y Sdkeychain (los cuales ahora se han ido). Gracias a los autores. Desde entonces, Samkeychain ha cambiado a una implementación más simple que se abstrae de SSTOOLKIT.
Muchas gracias a Caleb Davenport por liderar el camino en la versión 1.0 de Samkeychain.