O SamkeyChain é um invólucro simples para acessar contas, obter senhas, definir senhas e excluir senhas usando o chaveiro do sistema no Mac OS X e iOS.
Basta adicionar o seguinte ao seu podfile se você estiver usando Cocoapods:
pod 'SAMKeychain'Ou Cartfile se você estiver usando Cartago:
github "soffes/SAMKeychain"
Para adicionar manualmente ao seu projeto:
Security.framework ao seu alvoSAMKeychain.h , SAMKeychain.m , SAMKeychainQuery.h e SAMKeychainQuery.m ao seu projeto.Samkeychain requer arco.
Nota: Atualmente, o SamkeyChain não suporta o Mac OS 10.6.
Samkeychain possui os seguintes métodos de classe para trabalhar com o chaveiro do 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 assim. (Veja SamkeyChain.H e SamkeyChainQuery.H para todos os métodos.)
Leia a documentação online.
Se sua economia no chaveiro falhar, use o objeto NSerror para lidar com ele. Você pode invocar [error code] para obter o código de erro numérico. Alguns valores são definidos no samkeychain.h e o restante em 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, você deve fazer algo mais sofisticado. Você pode ligar para [error localizedDescription] se tudo o que você precisa é a mensagem de erro.
Trabalhar com o chaveiro é muito ruim. Você realmente deve verificar se há erros e falhas. Esta biblioteca não o torna mais estável, apenas encerra todas as APIs C irritantes.
Você também não deve usar o padrão, mas defina o accessibilityType . kSecAttrAccessibleWhenUnlocked NOCKED deve funcionar para a maioria das aplicações. Consulte a documentação da Apple para outras opções.
Isso foi originalmente inspirado por Emkeychain e SdkeyChain (ambos agora desapareceram). Obrigado aos autores. Desde então, Samkeychain mudou para uma implementação mais simples que foi abstraída do SStoolkit.
Um enorme agradecimento a Caleb Davenport por liderar o caminho na versão 1.0 do Samkeychain.