Ver código fonte

Clean up trailing whitespaces

kishikawa katsumi 9 anos atrás
pai
commit
45a813f6a5

+ 5 - 5
Examples/Example-iOS/Example-iOS/AccountsViewController.swift

@@ -81,7 +81,7 @@ class AccountsViewController: UITableViewController {
 
 
         return cell
         return cell
     }
     }
-    
+
     override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
     override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
         let services = Array(itemsGroupedByService!.keys)
         let services = Array(itemsGroupedByService!.keys)
         let service = services[indexPath.section]
         let service = services[indexPath.section]
@@ -91,9 +91,9 @@ class AccountsViewController: UITableViewController {
 
 
         let item = items[indexPath.row]
         let item = items[indexPath.row]
         let key = item["key"] as! String
         let key = item["key"] as! String
-        
+
         keychain[key] = nil
         keychain[key] = nil
-        
+
         if items.count == 1 {
         if items.count == 1 {
             reloadData()
             reloadData()
             tableView.deleteSections(NSIndexSet(index: indexPath.section), withRowAnimation: .Automatic)
             tableView.deleteSections(NSIndexSet(index: indexPath.section), withRowAnimation: .Automatic)
@@ -101,9 +101,9 @@ class AccountsViewController: UITableViewController {
             tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
             tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func reloadData() {
     func reloadData() {
         let items = Keychain.allItems(.GenericPassword)
         let items = Keychain.allItems(.GenericPassword)
         itemsGroupedByService = groupBy(items) { item -> String in
         itemsGroupedByService = groupBy(items) { item -> String in

+ 1 - 1
Examples/Example-iOS/Example-iOS/InputViewController.swift

@@ -60,7 +60,7 @@ class InputViewController: UITableViewController {
             keychain = Keychain()
             keychain = Keychain()
         }
         }
         keychain[usernameField.text!] = passwordField.text
         keychain[usernameField.text!] = passwordField.text
-        
+
         dismissViewControllerAnimated(true, completion: nil)
         dismissViewControllerAnimated(true, completion: nil)
     }
     }
 
 

+ 94 - 94
Lib/KeychainAccess/Keychain.swift

@@ -332,27 +332,27 @@ public class Keychain {
     public var itemClass: ItemClass {
     public var itemClass: ItemClass {
         return options.itemClass
         return options.itemClass
     }
     }
-    
+
     public var service: String {
     public var service: String {
         return options.service
         return options.service
     }
     }
-    
+
     public var accessGroup: String? {
     public var accessGroup: String? {
         return options.accessGroup
         return options.accessGroup
     }
     }
-    
+
     public var server: NSURL {
     public var server: NSURL {
         return options.server
         return options.server
     }
     }
-    
+
     public var protocolType: ProtocolType {
     public var protocolType: ProtocolType {
         return options.protocolType
         return options.protocolType
     }
     }
-    
+
     public var authenticationType: AuthenticationType {
     public var authenticationType: AuthenticationType {
         return options.authenticationType
         return options.authenticationType
     }
     }
-    
+
     public var accessibility: Accessibility {
     public var accessibility: Accessibility {
         return options.accessibility
         return options.accessibility
     }
     }
@@ -362,15 +362,15 @@ public class Keychain {
     public var authenticationPolicy: AuthenticationPolicy? {
     public var authenticationPolicy: AuthenticationPolicy? {
         return options.authenticationPolicy
         return options.authenticationPolicy
     }
     }
-    
+
     public var synchronizable: Bool {
     public var synchronizable: Bool {
         return options.synchronizable
         return options.synchronizable
     }
     }
-    
+
     public var label: String? {
     public var label: String? {
         return options.label
         return options.label
     }
     }
-    
+
     public var comment: String? {
     public var comment: String? {
         return options.comment
         return options.comment
     }
     }
@@ -380,7 +380,7 @@ public class Keychain {
     public var authenticationPrompt: String? {
     public var authenticationPrompt: String? {
         return options.authenticationPrompt
         return options.authenticationPrompt
     }
     }
-    
+
     private let options: Options
     private let options: Options
     
     
     // MARK:
     // MARK:
@@ -392,13 +392,13 @@ public class Keychain {
         }
         }
         self.init(options)
         self.init(options)
     }
     }
-    
+
     public convenience init(service: String) {
     public convenience init(service: String) {
         var options = Options()
         var options = Options()
         options.service = service
         options.service = service
         self.init(options)
         self.init(options)
     }
     }
-    
+
     public convenience init(accessGroup: String) {
     public convenience init(accessGroup: String) {
         var options = Options()
         var options = Options()
         if let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier {
         if let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier {
@@ -407,18 +407,18 @@ public class Keychain {
         options.accessGroup = accessGroup
         options.accessGroup = accessGroup
         self.init(options)
         self.init(options)
     }
     }
-    
+
     public convenience init(service: String, accessGroup: String) {
     public convenience init(service: String, accessGroup: String) {
         var options = Options()
         var options = Options()
         options.service = service
         options.service = service
         options.accessGroup = accessGroup
         options.accessGroup = accessGroup
         self.init(options)
         self.init(options)
     }
     }
-    
+
     public convenience init(server: String, protocolType: ProtocolType, authenticationType: AuthenticationType = .Default) {
     public convenience init(server: String, protocolType: ProtocolType, authenticationType: AuthenticationType = .Default) {
         self.init(server: NSURL(string: server)!, protocolType: protocolType, authenticationType: authenticationType)
         self.init(server: NSURL(string: server)!, protocolType: protocolType, authenticationType: authenticationType)
     }
     }
-    
+
     public convenience init(server: NSURL, protocolType: ProtocolType, authenticationType: AuthenticationType = .Default) {
     public convenience init(server: NSURL, protocolType: ProtocolType, authenticationType: AuthenticationType = .Default) {
         var options = Options()
         var options = Options()
         options.itemClass = .InternetPassword
         options.itemClass = .InternetPassword
@@ -427,13 +427,13 @@ public class Keychain {
         options.authenticationType = authenticationType
         options.authenticationType = authenticationType
         self.init(options)
         self.init(options)
     }
     }
-    
+
     private init(_ opts: Options) {
     private init(_ opts: Options) {
         options = opts
         options = opts
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     public func accessibility(accessibility: Accessibility) -> Keychain {
     public func accessibility(accessibility: Accessibility) -> Keychain {
         var options = self.options
         var options = self.options
         options.accessibility = accessibility
         options.accessibility = accessibility
@@ -448,19 +448,19 @@ public class Keychain {
         options.authenticationPolicy = authenticationPolicy
         options.authenticationPolicy = authenticationPolicy
         return Keychain(options)
         return Keychain(options)
     }
     }
-    
+
     public func synchronizable(synchronizable: Bool) -> Keychain {
     public func synchronizable(synchronizable: Bool) -> Keychain {
         var options = self.options
         var options = self.options
         options.synchronizable = synchronizable
         options.synchronizable = synchronizable
         return Keychain(options)
         return Keychain(options)
     }
     }
-    
+
     public func label(label: String) -> Keychain {
     public func label(label: String) -> Keychain {
         var options = self.options
         var options = self.options
         options.label = label
         options.label = label
         return Keychain(options)
         return Keychain(options)
     }
     }
-    
+
     public func comment(comment: String) -> Keychain {
     public func comment(comment: String) -> Keychain {
         var options = self.options
         var options = self.options
         options.comment = comment
         options.comment = comment
@@ -480,13 +480,13 @@ public class Keychain {
         options.authenticationPrompt = authenticationPrompt
         options.authenticationPrompt = authenticationPrompt
         return Keychain(options)
         return Keychain(options)
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     public func get(key: String) throws -> String? {
     public func get(key: String) throws -> String? {
         return try getString(key)
         return try getString(key)
     }
     }
-    
+
     public func getString(key: String) throws -> String? {
     public func getString(key: String) throws -> String? {
         guard let data = try getData(key) else  {
         guard let data = try getData(key) else  {
             return nil
             return nil
@@ -550,7 +550,7 @@ public class Keychain {
     }
     }
 
 
     // MARK:
     // MARK:
-    
+
     public func set(value: String, key: String) throws {
     public func set(value: String, key: String) throws {
         guard let data = value.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) else {
         guard let data = value.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) else {
             throw conversionError(message: "failed to convert string to data")
             throw conversionError(message: "failed to convert string to data")
@@ -673,37 +673,37 @@ public class Keychain {
             return (try? get(key) { $0 }).flatMap { $0 }
             return (try? get(key) { $0 }).flatMap { $0 }
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     public func remove(key: String) throws {
     public func remove(key: String) throws {
         var query = options.query()
         var query = options.query()
         query[AttributeAccount] = key
         query[AttributeAccount] = key
-        
+
         let status = SecItemDelete(query)
         let status = SecItemDelete(query)
         if status != errSecSuccess && status != errSecItemNotFound {
         if status != errSecSuccess && status != errSecItemNotFound {
             throw securityError(status: status)
             throw securityError(status: status)
         }
         }
     }
     }
-    
+
     public func removeAll() throws {
     public func removeAll() throws {
         var query = options.query()
         var query = options.query()
         #if !os(iOS) && !os(watchOS) && !os(tvOS)
         #if !os(iOS) && !os(watchOS) && !os(tvOS)
         query[MatchLimit] = MatchLimitAll
         query[MatchLimit] = MatchLimitAll
         #endif
         #endif
-        
+
         let status = SecItemDelete(query)
         let status = SecItemDelete(query)
         if status != errSecSuccess && status != errSecItemNotFound {
         if status != errSecSuccess && status != errSecItemNotFound {
             throw securityError(status: status)
             throw securityError(status: status)
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     public func contains(key: String) throws -> Bool {
     public func contains(key: String) throws -> Bool {
         var query = options.query()
         var query = options.query()
         query[AttributeAccount] = key
         query[AttributeAccount] = key
-        
+
         let status = SecItemCopyMatching(query, nil)
         let status = SecItemCopyMatching(query, nil)
         switch status {
         switch status {
         case errSecSuccess:
         case errSecSuccess:
@@ -714,19 +714,19 @@ public class Keychain {
             throw securityError(status: status)
             throw securityError(status: status)
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     public class func allKeys(itemClass: ItemClass) -> [(String, String)] {
     public class func allKeys(itemClass: ItemClass) -> [(String, String)] {
         var query = [String: AnyObject]()
         var query = [String: AnyObject]()
         query[Class] = itemClass.rawValue
         query[Class] = itemClass.rawValue
         query[AttributeSynchronizable] = SynchronizableAny
         query[AttributeSynchronizable] = SynchronizableAny
         query[MatchLimit] = MatchLimitAll
         query[MatchLimit] = MatchLimitAll
         query[ReturnAttributes] = true
         query[ReturnAttributes] = true
-        
+
         var result: AnyObject?
         var result: AnyObject?
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
-        
+
         switch status {
         switch status {
         case errSecSuccess:
         case errSecSuccess:
             if let items = result as? [[String: AnyObject]] {
             if let items = result as? [[String: AnyObject]] {
@@ -743,15 +743,15 @@ public class Keychain {
             return []
             return []
         default: ()
         default: ()
         }
         }
-        
+
         securityError(status: status)
         securityError(status: status)
         return []
         return []
     }
     }
-    
+
     public func allKeys() -> [String] {
     public func allKeys() -> [String] {
         return self.dynamicType.prettify(itemClass: itemClass, items: items()).map { $0["key"] as! String }
         return self.dynamicType.prettify(itemClass: itemClass, items: items()).map { $0["key"] as! String }
     }
     }
-    
+
     public class func allItems(itemClass: ItemClass) -> [[String: AnyObject]] {
     public class func allItems(itemClass: ItemClass) -> [[String: AnyObject]] {
         var query = [String: AnyObject]()
         var query = [String: AnyObject]()
         query[Class] = itemClass.rawValue
         query[Class] = itemClass.rawValue
@@ -760,10 +760,10 @@ public class Keychain {
         #if os(iOS) || os(watchOS) || os(tvOS)
         #if os(iOS) || os(watchOS) || os(tvOS)
         query[ReturnData] = true
         query[ReturnData] = true
         #endif
         #endif
-        
+
         var result: AnyObject?
         var result: AnyObject?
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
-        
+
         switch status {
         switch status {
         case errSecSuccess:
         case errSecSuccess:
             if let items = result as? [[String: AnyObject]] {
             if let items = result as? [[String: AnyObject]] {
@@ -773,15 +773,15 @@ public class Keychain {
             return []
             return []
         default: ()
         default: ()
         }
         }
-        
+
         securityError(status: status)
         securityError(status: status)
         return []
         return []
     }
     }
-    
+
     public func allItems() -> [[String: AnyObject]] {
     public func allItems() -> [[String: AnyObject]] {
         return self.dynamicType.prettify(itemClass: itemClass, items: items())
         return self.dynamicType.prettify(itemClass: itemClass, items: items())
     }
     }
-    
+
     #if os(iOS)
     #if os(iOS)
     @available(iOS 8.0, *)
     @available(iOS 8.0, *)
     public func getSharedPassword(completion: (account: String?, password: String?, error: NSError?) -> () = { account, password, error -> () in }) {
     public func getSharedPassword(completion: (account: String?, password: String?, error: NSError?) -> () = { account, password, error -> () in }) {
@@ -920,9 +920,9 @@ public class Keychain {
         return SecCreateSharedWebCredentialPassword()! as String
         return SecCreateSharedWebCredentialPassword()! as String
     }
     }
     #endif
     #endif
-    
+
     // MARK:
     // MARK:
-    
+
     private func items() -> [[String: AnyObject]] {
     private func items() -> [[String: AnyObject]] {
         var query = options.query()
         var query = options.query()
         query[MatchLimit] = MatchLimitAll
         query[MatchLimit] = MatchLimitAll
@@ -930,10 +930,10 @@ public class Keychain {
         #if os(iOS) || os(watchOS) || os(tvOS)
         #if os(iOS) || os(watchOS) || os(tvOS)
         query[ReturnData] = true
         query[ReturnData] = true
         #endif
         #endif
-        
+
         var result: AnyObject?
         var result: AnyObject?
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
         let status = withUnsafeMutablePointer(&result) { SecItemCopyMatching(query, UnsafeMutablePointer($0)) }
-        
+
         switch status {
         switch status {
         case errSecSuccess:
         case errSecSuccess:
             if let items = result as? [[String: AnyObject]] {
             if let items = result as? [[String: AnyObject]] {
@@ -943,17 +943,17 @@ public class Keychain {
             return []
             return []
         default: ()
         default: ()
         }
         }
-        
+
         securityError(status: status)
         securityError(status: status)
         return []
         return []
     }
     }
-    
+
     private class func prettify(itemClass itemClass: ItemClass, items: [[String: AnyObject]]) -> [[String: AnyObject]] {
     private class func prettify(itemClass itemClass: ItemClass, items: [[String: AnyObject]]) -> [[String: AnyObject]] {
         let items = items.map { attributes -> [String: AnyObject] in
         let items = items.map { attributes -> [String: AnyObject] in
             var item = [String: AnyObject]()
             var item = [String: AnyObject]()
-            
+
             item["class"] = itemClass.description
             item["class"] = itemClass.description
-            
+
             switch itemClass {
             switch itemClass {
             case .GenericPassword:
             case .GenericPassword:
                 if let service = attributes[AttributeService] as? String {
                 if let service = attributes[AttributeService] as? String {
@@ -977,7 +977,7 @@ public class Keychain {
                     }
                     }
                 }
                 }
             }
             }
-            
+
             if let key = attributes[AttributeAccount] as? String {
             if let key = attributes[AttributeAccount] as? String {
                 item["key"] = key
                 item["key"] = key
             }
             }
@@ -988,7 +988,7 @@ public class Keychain {
                     item["value"] = data
                     item["value"] = data
                 }
                 }
             }
             }
-            
+
             if let accessible = attributes[AttributeAccessible] as? String {
             if let accessible = attributes[AttributeAccessible] as? String {
                 if let accessibility = Accessibility(rawValue: accessible) {
                 if let accessibility = Accessibility(rawValue: accessible) {
                     item["accessibility"] = accessibility.description
                     item["accessibility"] = accessibility.description
@@ -1002,29 +1002,29 @@ public class Keychain {
         }
         }
         return items
         return items
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     private class func conversionError(message message: String) -> NSError {
     private class func conversionError(message message: String) -> NSError {
         let error = NSError(domain: KeychainAccessErrorDomain, code: Int(Status.ConversionError.rawValue), userInfo: [NSLocalizedDescriptionKey: message])
         let error = NSError(domain: KeychainAccessErrorDomain, code: Int(Status.ConversionError.rawValue), userInfo: [NSLocalizedDescriptionKey: message])
         print("error:[\(error.code)] \(error.localizedDescription)")
         print("error:[\(error.code)] \(error.localizedDescription)")
-        
+
         return error
         return error
     }
     }
-    
+
     private func conversionError(message message: String) -> NSError {
     private func conversionError(message message: String) -> NSError {
         return self.dynamicType.conversionError(message: message)
         return self.dynamicType.conversionError(message: message)
     }
     }
-    
+
     private class func securityError(status status: OSStatus) -> NSError {
     private class func securityError(status status: OSStatus) -> NSError {
         let message = Status(status: status).description
         let message = Status(status: status).description
-        
+
         let error = NSError(domain: KeychainAccessErrorDomain, code: Int(status), userInfo: [NSLocalizedDescriptionKey: message])
         let error = NSError(domain: KeychainAccessErrorDomain, code: Int(status), userInfo: [NSLocalizedDescriptionKey: message])
         print("OSStatus error:[\(error.code)] \(error.localizedDescription)")
         print("OSStatus error:[\(error.code)] \(error.localizedDescription)")
-        
+
         return error
         return error
     }
     }
-    
+
     private func securityError(status status: OSStatus) -> NSError {
     private func securityError(status status: OSStatus) -> NSError {
         return self.dynamicType.securityError(status: status)
         return self.dynamicType.securityError(status: status)
     }
     }
@@ -1032,22 +1032,22 @@ public class Keychain {
 
 
 struct Options {
 struct Options {
     var itemClass: ItemClass = .GenericPassword
     var itemClass: ItemClass = .GenericPassword
-    
+
     var service: String = ""
     var service: String = ""
     var accessGroup: String? = nil
     var accessGroup: String? = nil
-    
+
     var server: NSURL!
     var server: NSURL!
     var protocolType: ProtocolType!
     var protocolType: ProtocolType!
     var authenticationType: AuthenticationType = .Default
     var authenticationType: AuthenticationType = .Default
-    
+
     var accessibility: Accessibility = .AfterFirstUnlock
     var accessibility: Accessibility = .AfterFirstUnlock
     var authenticationPolicy: AuthenticationPolicy?
     var authenticationPolicy: AuthenticationPolicy?
-    
+
     var synchronizable: Bool = false
     var synchronizable: Bool = false
-    
+
     var label: String?
     var label: String?
     var comment: String?
     var comment: String?
-    
+
     var authenticationPrompt: String?
     var authenticationPrompt: String?
 
 
     var attributes = [String: AnyObject]()
     var attributes = [String: AnyObject]()
@@ -1149,20 +1149,20 @@ extension Keychain: CustomStringConvertible, CustomDebugStringConvertible {
         description += "]"
         description += "]"
         return description
         return description
     }
     }
-    
+
     public var debugDescription: String {
     public var debugDescription: String {
         return "\(items())"
         return "\(items())"
     }
     }
 }
 }
 
 
 extension Options {
 extension Options {
-    
+
     func query() -> [String: AnyObject] {
     func query() -> [String: AnyObject] {
         var query = [String: AnyObject]()
         var query = [String: AnyObject]()
-        
+
         query[Class] = itemClass.rawValue
         query[Class] = itemClass.rawValue
         query[AttributeSynchronizable] = SynchronizableAny
         query[AttributeSynchronizable] = SynchronizableAny
-        
+
         switch itemClass {
         switch itemClass {
         case .GenericPassword:
         case .GenericPassword:
             query[AttributeService] = service
             query[AttributeService] = service
@@ -1184,22 +1184,22 @@ extension Options {
                 query[UseOperationPrompt] = authenticationPrompt
                 query[UseOperationPrompt] = authenticationPrompt
             }
             }
         }
         }
-        
+
         return query
         return query
     }
     }
-    
+
     func attributes(key key: String?, value: NSData) -> ([String: AnyObject], NSError?) {
     func attributes(key key: String?, value: NSData) -> ([String: AnyObject], NSError?) {
         var attributes: [String: AnyObject]
         var attributes: [String: AnyObject]
-        
+
         if key != nil {
         if key != nil {
             attributes = query()
             attributes = query()
             attributes[AttributeAccount] = key
             attributes[AttributeAccount] = key
         } else {
         } else {
             attributes = [String: AnyObject]()
             attributes = [String: AnyObject]()
         }
         }
-        
+
         attributes[ValueData] = value
         attributes[ValueData] = value
-        
+
         if label != nil {
         if label != nil {
             attributes[AttributeLabel] = label
             attributes[AttributeLabel] = label
         }
         }
@@ -1224,9 +1224,9 @@ extension Options {
         } else {
         } else {
             attributes[AttributeAccessible] = accessibility.rawValue
             attributes[AttributeAccessible] = accessibility.rawValue
         }
         }
-        
+
         attributes[AttributeSynchronizable] = synchronizable
         attributes[AttributeSynchronizable] = synchronizable
-        
+
         return (attributes, nil)
         return (attributes, nil)
     }
     }
 }
 }
@@ -1244,7 +1244,7 @@ extension Attributes: CustomStringConvertible, CustomDebugStringConvertible {
 }
 }
 
 
 extension ItemClass: RawRepresentable, CustomStringConvertible {
 extension ItemClass: RawRepresentable, CustomStringConvertible {
-    
+
     public init?(rawValue: String) {
     public init?(rawValue: String) {
         switch rawValue {
         switch rawValue {
         case String(kSecClassGenericPassword):
         case String(kSecClassGenericPassword):
@@ -1255,7 +1255,7 @@ extension ItemClass: RawRepresentable, CustomStringConvertible {
             return nil
             return nil
         }
         }
     }
     }
-    
+
     public var rawValue: String {
     public var rawValue: String {
         switch self {
         switch self {
         case GenericPassword:
         case GenericPassword:
@@ -1264,7 +1264,7 @@ extension ItemClass: RawRepresentable, CustomStringConvertible {
             return String(kSecClassInternetPassword)
             return String(kSecClassInternetPassword)
         }
         }
     }
     }
-    
+
     public var description: String {
     public var description: String {
         switch self {
         switch self {
         case GenericPassword:
         case GenericPassword:
@@ -1276,7 +1276,7 @@ extension ItemClass: RawRepresentable, CustomStringConvertible {
 }
 }
 
 
 extension ProtocolType: RawRepresentable, CustomStringConvertible {
 extension ProtocolType: RawRepresentable, CustomStringConvertible {
-    
+
     public init?(rawValue: String) {
     public init?(rawValue: String) {
         switch rawValue {
         switch rawValue {
         case String(kSecAttrProtocolFTP):
         case String(kSecAttrProtocolFTP):
@@ -1345,7 +1345,7 @@ extension ProtocolType: RawRepresentable, CustomStringConvertible {
             return nil
             return nil
         }
         }
     }
     }
-    
+
     public var rawValue: String {
     public var rawValue: String {
         switch self {
         switch self {
         case FTP:
         case FTP:
@@ -1412,7 +1412,7 @@ extension ProtocolType: RawRepresentable, CustomStringConvertible {
             return String(kSecAttrProtocolPOP3S)
             return String(kSecAttrProtocolPOP3S)
         }
         }
     }
     }
-    
+
     public var description: String {
     public var description: String {
         switch self {
         switch self {
         case FTP:
         case FTP:
@@ -1482,7 +1482,7 @@ extension ProtocolType: RawRepresentable, CustomStringConvertible {
 }
 }
 
 
 extension AuthenticationType: RawRepresentable, CustomStringConvertible {
 extension AuthenticationType: RawRepresentable, CustomStringConvertible {
-    
+
     public init?(rawValue: String) {
     public init?(rawValue: String) {
         switch rawValue {
         switch rawValue {
         case String(kSecAttrAuthenticationTypeNTLM):
         case String(kSecAttrAuthenticationTypeNTLM):
@@ -1505,7 +1505,7 @@ extension AuthenticationType: RawRepresentable, CustomStringConvertible {
             return nil
             return nil
         }
         }
     }
     }
-    
+
     public var rawValue: String {
     public var rawValue: String {
         switch self {
         switch self {
         case NTLM:
         case NTLM:
@@ -1526,7 +1526,7 @@ extension AuthenticationType: RawRepresentable, CustomStringConvertible {
             return String(kSecAttrAuthenticationTypeDefault)
             return String(kSecAttrAuthenticationTypeDefault)
         }
         }
     }
     }
-    
+
     public var description: String {
     public var description: String {
         switch self {
         switch self {
         case NTLM:
         case NTLM:
@@ -1550,7 +1550,7 @@ extension AuthenticationType: RawRepresentable, CustomStringConvertible {
 }
 }
 
 
 extension Accessibility: RawRepresentable, CustomStringConvertible {
 extension Accessibility: RawRepresentable, CustomStringConvertible {
-    
+
     public init?(rawValue: String) {
     public init?(rawValue: String) {
         if #available(OSX 10.10, *) {
         if #available(OSX 10.10, *) {
             switch rawValue {
             switch rawValue {
@@ -1613,7 +1613,7 @@ extension Accessibility: RawRepresentable, CustomStringConvertible {
             return String(kSecAttrAccessibleAlwaysThisDeviceOnly)
             return String(kSecAttrAccessibleAlwaysThisDeviceOnly)
         }
         }
     }
     }
-    
+
     public var description: String {
     public var description: String {
         switch self {
         switch self {
         case WhenUnlocked:
         case WhenUnlocked:
@@ -1639,7 +1639,7 @@ extension CFError {
         let domain = CFErrorGetDomain(self) as String
         let domain = CFErrorGetDomain(self) as String
         let code = CFErrorGetCode(self)
         let code = CFErrorGetCode(self)
         let userInfo = CFErrorCopyUserInfo(self) as [NSObject: AnyObject]
         let userInfo = CFErrorCopyUserInfo(self) as [NSObject: AnyObject]
-        
+
         return NSError(domain: domain, code: code, userInfo: userInfo)
         return NSError(domain: domain, code: code, userInfo: userInfo)
     }
     }
 }
 }
@@ -2051,7 +2051,7 @@ public enum Status: OSStatus, ErrorType {
 }
 }
 
 
 extension Status: RawRepresentable, CustomStringConvertible {
 extension Status: RawRepresentable, CustomStringConvertible {
-    
+
     public init(status: OSStatus) {
     public init(status: OSStatus) {
         if let mappedStatus = Status(rawValue: status) {
         if let mappedStatus = Status(rawValue: status) {
             self = mappedStatus
             self = mappedStatus
@@ -2059,7 +2059,7 @@ extension Status: RawRepresentable, CustomStringConvertible {
             self = .UnexpectedError
             self = .UnexpectedError
         }
         }
     }
     }
-    
+
     public var description: String {
     public var description: String {
         switch self {
         switch self {
         case Success:
         case Success:

+ 3 - 3
Lib/KeychainAccessTests/EnumTests.swift

@@ -27,15 +27,15 @@ import XCTest
 import KeychainAccess
 import KeychainAccess
 
 
 class EnumTests: XCTestCase {
 class EnumTests: XCTestCase {
-    
+
     override func setUp() {
     override func setUp() {
         super.setUp()
         super.setUp()
     }
     }
-    
+
     override func tearDown() {
     override func tearDown() {
         super.tearDown()
         super.tearDown()
     }
     }
-    
+
     func testItemClass() {
     func testItemClass() {
         do {
         do {
             let itemClass = ItemClass(rawValue: kSecClassGenericPassword as String)
             let itemClass = ItemClass(rawValue: kSecClassGenericPassword as String)

+ 2 - 2
Lib/KeychainAccessTests/ErrorTypeTests.swift

@@ -27,7 +27,7 @@ import XCTest
 import KeychainAccess
 import KeychainAccess
 
 
 class ErrorTypeTests: XCTestCase {
 class ErrorTypeTests: XCTestCase {
-    
+
     override func setUp() {
     override func setUp() {
         super.setUp()
         super.setUp()
     }
     }
@@ -35,7 +35,7 @@ class ErrorTypeTests: XCTestCase {
     override func tearDown() {
     override func tearDown() {
         super.tearDown()
         super.tearDown()
     }
     }
-    
+
     func testErrorType() {
     func testErrorType() {
         do {
         do {
             let status = Status(rawValue: errSecSuccess)
             let status = Status(rawValue: errSecSuccess)

+ 106 - 106
Lib/KeychainAccessTests/KeychainAccessTests.swift

@@ -29,61 +29,61 @@ import XCTest
 import KeychainAccess
 import KeychainAccess
 
 
 class KeychainAccessTests: XCTestCase {
 class KeychainAccessTests: XCTestCase {
-    
+
     override func setUp() {
     override func setUp() {
         super.setUp()
         super.setUp()
 
 
         do { try Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared").removeAll() } catch {}
         do { try Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared").removeAll() } catch {}
         do { try Keychain(service: "Twitter").removeAll() } catch {}
         do { try Keychain(service: "Twitter").removeAll() } catch {}
-        
+
         do { try Keychain(server: NSURL(string: "https://example.com")!, protocolType: .HTTPS).removeAll() } catch {}
         do { try Keychain(server: NSURL(string: "https://example.com")!, protocolType: .HTTPS).removeAll() } catch {}
         do { try Keychain(server: NSURL(string: "https://example.com:443")!, protocolType: .HTTPS).removeAll() } catch {}
         do { try Keychain(server: NSURL(string: "https://example.com:443")!, protocolType: .HTTPS).removeAll() } catch {}
-        
+
         do { try Keychain().removeAll() } catch {}
         do { try Keychain().removeAll() } catch {}
     }
     }
-    
+
     override func tearDown() {
     override func tearDown() {
         super.tearDown()
         super.tearDown()
     }
     }
-    
+
     // MARK:
     // MARK:
     
     
     func testGenericPassword() {
     func testGenericPassword() {
         do {
         do {
             // Add Keychain items
             // Add Keychain items
             let keychain = Keychain(service: "Twitter")
             let keychain = Keychain(service: "Twitter")
-            
+
             do { try keychain.set("kishikawa_katsumi", key: "username") } catch {}
             do { try keychain.set("kishikawa_katsumi", key: "username") } catch {}
             do { try keychain.set("password_1234", key: "password") } catch {}
             do { try keychain.set("password_1234", key: "password") } catch {}
-            
+
             let username = try! keychain.get("username")
             let username = try! keychain.get("username")
             XCTAssertEqual(username, "kishikawa_katsumi")
             XCTAssertEqual(username, "kishikawa_katsumi")
-            
+
             let password = try! keychain.get("password")
             let password = try! keychain.get("password")
             XCTAssertEqual(password, "password_1234")
             XCTAssertEqual(password, "password_1234")
         }
         }
-        
+
         do {
         do {
             // Update Keychain items
             // Update Keychain items
             let keychain = Keychain(service: "Twitter")
             let keychain = Keychain(service: "Twitter")
-            
+
             do { try keychain.set("katsumi_kishikawa", key: "username") } catch {}
             do { try keychain.set("katsumi_kishikawa", key: "username") } catch {}
             do { try keychain.set("1234_password", key: "password") } catch {}
             do { try keychain.set("1234_password", key: "password") } catch {}
-            
+
             let username = try! keychain.get("username")
             let username = try! keychain.get("username")
             XCTAssertEqual(username, "katsumi_kishikawa")
             XCTAssertEqual(username, "katsumi_kishikawa")
-            
+
             let password = try! keychain.get("password")
             let password = try! keychain.get("password")
             XCTAssertEqual(password, "1234_password")
             XCTAssertEqual(password, "1234_password")
         }
         }
-        
+
         do {
         do {
             // Remove Keychain items
             // Remove Keychain items
             let keychain = Keychain(service: "Twitter")
             let keychain = Keychain(service: "Twitter")
-            
+
             do { try keychain.remove("username") } catch {}
             do { try keychain.remove("username") } catch {}
             do { try keychain.remove("password") } catch {}
             do { try keychain.remove("password") } catch {}
-            
+
             XCTAssertNil(try! keychain.get("username"))
             XCTAssertNil(try! keychain.get("username"))
             XCTAssertNil(try! keychain.get("password"))
             XCTAssertNil(try! keychain.get("password"))
         }
         }
@@ -93,154 +93,154 @@ class KeychainAccessTests: XCTestCase {
         do {
         do {
             // Add Keychain items
             // Add Keychain items
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
-            
+
             keychain["username"] = "kishikawa_katsumi"
             keychain["username"] = "kishikawa_katsumi"
             keychain["password"] = "password_1234"
             keychain["password"] = "password_1234"
-            
+
             let username = keychain["username"]
             let username = keychain["username"]
             XCTAssertEqual(username, "kishikawa_katsumi")
             XCTAssertEqual(username, "kishikawa_katsumi")
-            
+
             let password = keychain["password"]
             let password = keychain["password"]
             XCTAssertEqual(password, "password_1234")
             XCTAssertEqual(password, "password_1234")
         }
         }
-        
+
         do {
         do {
             // Update Keychain items
             // Update Keychain items
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
-            
+
             keychain["username"] = "katsumi_kishikawa"
             keychain["username"] = "katsumi_kishikawa"
             keychain["password"] = "1234_password"
             keychain["password"] = "1234_password"
-            
+
             let username = keychain["username"]
             let username = keychain["username"]
             XCTAssertEqual(username, "katsumi_kishikawa")
             XCTAssertEqual(username, "katsumi_kishikawa")
-            
+
             let password = keychain["password"]
             let password = keychain["password"]
             XCTAssertEqual(password, "1234_password")
             XCTAssertEqual(password, "1234_password")
         }
         }
-        
+
         do {
         do {
             // Remove Keychain items
             // Remove Keychain items
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
             let keychain = Keychain(service: "Twitter", accessGroup: "27AEDK3C9F.shared")
-            
+
             keychain["username"] = nil
             keychain["username"] = nil
             keychain["password"] = nil
             keychain["password"] = nil
-            
+
             XCTAssertNil(keychain["username"])
             XCTAssertNil(keychain["username"])
             XCTAssertNil(keychain["password"])
             XCTAssertNil(keychain["password"])
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func testInternetPassword() {
     func testInternetPassword() {
         do {
         do {
             // Add Keychain items
             // Add Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             do { try keychain.set("kishikawa_katsumi", key: "username") } catch {}
             do { try keychain.set("kishikawa_katsumi", key: "username") } catch {}
             do { try keychain.set("password_1234", key: "password") } catch {}
             do { try keychain.set("password_1234", key: "password") } catch {}
-            
+
             let username = try! keychain.get("username")
             let username = try! keychain.get("username")
             XCTAssertEqual(username, "kishikawa_katsumi")
             XCTAssertEqual(username, "kishikawa_katsumi")
-            
+
             let password = try! keychain.get("password")
             let password = try! keychain.get("password")
             XCTAssertEqual(password, "password_1234")
             XCTAssertEqual(password, "password_1234")
         }
         }
-        
+
         do {
         do {
             // Update Keychain items
             // Update Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             do { try keychain.set("katsumi_kishikawa", key: "username") } catch {}
             do { try keychain.set("katsumi_kishikawa", key: "username") } catch {}
             do { try keychain.set("1234_password", key: "password") } catch {}
             do { try keychain.set("1234_password", key: "password") } catch {}
-            
+
             let username = try! keychain.get("username")
             let username = try! keychain.get("username")
             XCTAssertEqual(username, "katsumi_kishikawa")
             XCTAssertEqual(username, "katsumi_kishikawa")
-            
+
             let password = try! keychain.get("password")
             let password = try! keychain.get("password")
             XCTAssertEqual(password, "1234_password")
             XCTAssertEqual(password, "1234_password")
         }
         }
-        
+
         do {
         do {
             // Remove Keychain items
             // Remove Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             do { try keychain.remove("username") } catch {}
             do { try keychain.remove("username") } catch {}
             do { try keychain.remove("password") } catch {}
             do { try keychain.remove("password") } catch {}
-            
+
             XCTAssertNil(try! keychain.get("username"))
             XCTAssertNil(try! keychain.get("username"))
             XCTAssertNil(try! keychain.get("password"))
             XCTAssertNil(try! keychain.get("password"))
         }
         }
     }
     }
-    
+
     func testInternetPasswordSubscripting() {
     func testInternetPasswordSubscripting() {
         do {
         do {
             // Add Keychain items
             // Add Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             keychain["username"] = "kishikawa_katsumi"
             keychain["username"] = "kishikawa_katsumi"
             keychain["password"] = "password_1234"
             keychain["password"] = "password_1234"
-            
+
             let username = keychain["username"]
             let username = keychain["username"]
             XCTAssertEqual(username, "kishikawa_katsumi")
             XCTAssertEqual(username, "kishikawa_katsumi")
-            
+
             let password = keychain["password"]
             let password = keychain["password"]
             XCTAssertEqual(password, "password_1234")
             XCTAssertEqual(password, "password_1234")
         }
         }
-        
+
         do {
         do {
             // Update Keychain items
             // Update Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             keychain["username"] = "katsumi_kishikawa"
             keychain["username"] = "katsumi_kishikawa"
             keychain["password"] = "1234_password"
             keychain["password"] = "1234_password"
-            
+
             let username = keychain["username"]
             let username = keychain["username"]
             XCTAssertEqual(username, "katsumi_kishikawa")
             XCTAssertEqual(username, "katsumi_kishikawa")
-            
+
             let password = keychain["password"]
             let password = keychain["password"]
             XCTAssertEqual(password, "1234_password")
             XCTAssertEqual(password, "1234_password")
         }
         }
-        
+
         do {
         do {
             // Remove Keychain items
             // Remove Keychain items
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
             let keychain = Keychain(server: NSURL(string: "https://kishikawakatsumi.com")!, protocolType: .HTTPS)
-            
+
             keychain["username"] = nil
             keychain["username"] = nil
             keychain["password"] = nil
             keychain["password"] = nil
-            
+
             XCTAssertNil(keychain["username"])
             XCTAssertNil(keychain["username"])
             XCTAssertNil(keychain["password"])
             XCTAssertNil(keychain["password"])
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func testDefaultInitializer() {
     func testDefaultInitializer() {
         let keychain = Keychain()
         let keychain = Keychain()
         XCTAssertEqual(keychain.service, NSBundle.mainBundle().bundleIdentifier)
         XCTAssertEqual(keychain.service, NSBundle.mainBundle().bundleIdentifier)
         XCTAssertEqual(keychain.service, "com.kishikawakatsumi.TestHost")
         XCTAssertEqual(keychain.service, "com.kishikawakatsumi.TestHost")
         XCTAssertNil(keychain.accessGroup)
         XCTAssertNil(keychain.accessGroup)
     }
     }
-    
+
     func testInitializerWithService() {
     func testInitializerWithService() {
         let keychain = Keychain(service: "com.example.github-token")
         let keychain = Keychain(service: "com.example.github-token")
         XCTAssertEqual(keychain.service, "com.example.github-token")
         XCTAssertEqual(keychain.service, "com.example.github-token")
         XCTAssertNil(keychain.accessGroup)
         XCTAssertNil(keychain.accessGroup)
     }
     }
-    
+
     func testInitializerWithAccessGroup() {
     func testInitializerWithAccessGroup() {
         let keychain = Keychain(accessGroup: "27AEDK3C9F.shared")
         let keychain = Keychain(accessGroup: "27AEDK3C9F.shared")
         XCTAssertEqual(keychain.service, "com.kishikawakatsumi.TestHost")
         XCTAssertEqual(keychain.service, "com.kishikawakatsumi.TestHost")
         XCTAssertEqual(keychain.accessGroup, "27AEDK3C9F.shared")
         XCTAssertEqual(keychain.accessGroup, "27AEDK3C9F.shared")
     }
     }
-    
+
     func testInitializerWithServiceAndAccessGroup() {
     func testInitializerWithServiceAndAccessGroup() {
         let keychain = Keychain(service: "com.example.github-token", accessGroup: "27AEDK3C9F.shared")
         let keychain = Keychain(service: "com.example.github-token", accessGroup: "27AEDK3C9F.shared")
         XCTAssertEqual(keychain.service, "com.example.github-token")
         XCTAssertEqual(keychain.service, "com.example.github-token")
         XCTAssertEqual(keychain.accessGroup, "27AEDK3C9F.shared")
         XCTAssertEqual(keychain.accessGroup, "27AEDK3C9F.shared")
     }
     }
-    
+
     func testInitializerWithServer() {
     func testInitializerWithServer() {
         let server = "https://kishikawakatsumi.com"
         let server = "https://kishikawakatsumi.com"
         let URL = NSURL(string: server)!
         let URL = NSURL(string: server)!
@@ -258,7 +258,7 @@ class KeychainAccessTests: XCTestCase {
             XCTAssertEqual(keychain.authenticationType, AuthenticationType.Default)
             XCTAssertEqual(keychain.authenticationType, AuthenticationType.Default)
         }
         }
     }
     }
-    
+
     func testInitializerWithServerAndAuthenticationType() {
     func testInitializerWithServerAndAuthenticationType() {
         let server = "https://kishikawakatsumi.com"
         let server = "https://kishikawakatsumi.com"
         let URL = NSURL(string: server)!
         let URL = NSURL(string: server)!
@@ -276,36 +276,36 @@ class KeychainAccessTests: XCTestCase {
             XCTAssertEqual(keychain.authenticationType, AuthenticationType.HTMLForm)
             XCTAssertEqual(keychain.authenticationType, AuthenticationType.HTMLForm)
         }
         }
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func testContains() {
     func testContains() {
         let keychain = Keychain(service: "Twitter")
         let keychain = Keychain(service: "Twitter")
-        
+
         XCTAssertFalse(try! keychain.contains("username"), "not stored username")
         XCTAssertFalse(try! keychain.contains("username"), "not stored username")
         XCTAssertFalse(try! keychain.contains("password"), "not stored password")
         XCTAssertFalse(try! keychain.contains("password"), "not stored password")
-        
+
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         XCTAssertTrue(try! keychain.contains("username"), "stored username")
         XCTAssertTrue(try! keychain.contains("username"), "stored username")
         XCTAssertFalse(try! keychain.contains("password"), "not stored password")
         XCTAssertFalse(try! keychain.contains("password"), "not stored password")
-        
+
         do { try keychain.set("password1234", key: "password") } catch {}
         do { try keychain.set("password1234", key: "password") } catch {}
         XCTAssertTrue(try! keychain.contains("username"), "stored username")
         XCTAssertTrue(try! keychain.contains("username"), "stored username")
         XCTAssertTrue(try! keychain.contains("password"), "stored password")
         XCTAssertTrue(try! keychain.contains("password"), "stored password")
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func testSetString() {
     func testSetString() {
         let keychain = Keychain(service: "Twitter")
         let keychain = Keychain(service: "Twitter")
-        
+
         XCTAssertNil(try! keychain.get("username"), "not stored username")
         XCTAssertNil(try! keychain.get("username"), "not stored username")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
-        
+
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
-        
+
         do { try keychain.set("password1234", key: "password") } catch {}
         do { try keychain.set("password1234", key: "password") } catch {}
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
         XCTAssertEqual(try! keychain.get("password"), "password1234", "stored password")
         XCTAssertEqual(try! keychain.get("password"), "password1234", "stored password")
@@ -405,15 +405,15 @@ class KeychainAccessTests: XCTestCase {
             XCTFail("error occurred")
             XCTFail("error occurred")
         }
         }
     }
     }
-    
+
     func testSetData() {
     func testSetData() {
         let JSONObject = ["username": "kishikawakatsumi", "password": "password1234"]
         let JSONObject = ["username": "kishikawakatsumi", "password": "password1234"]
         let JSONData = try! NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
         let JSONData = try! NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
-        
+
         let keychain = Keychain(service: "Twitter")
         let keychain = Keychain(service: "Twitter")
-        
+
         XCTAssertNil(try! keychain.getData("JSONData"), "not stored JSON data")
         XCTAssertNil(try! keychain.getData("JSONData"), "not stored JSON data")
-        
+
         do { try keychain.set(JSONData, key: "JSONData") } catch {}
         do { try keychain.set(JSONData, key: "JSONData") } catch {}
         XCTAssertEqual(try! keychain.getData("JSONData"), JSONData, "stored JSON data")
         XCTAssertEqual(try! keychain.getData("JSONData"), JSONData, "stored JSON data")
     }
     }
@@ -681,61 +681,61 @@ class KeychainAccessTests: XCTestCase {
 
 
         XCTAssertNil(try! keychain.get("username"), "not stored username")
         XCTAssertNil(try! keychain.get("username"), "not stored username")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
         XCTAssertNil(try! keychain.get("password"), "not stored password")
-        
+
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         do { try keychain.set("kishikawakatsumi", key: "username") } catch {}
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
         XCTAssertEqual(try! keychain.get("username"), "kishikawakatsumi", "stored username")
-        
+
         do { try keychain.set("password1234", key: "password") } catch {}
         do { try keychain.set("password1234", key: "password") } catch {}
         XCTAssertEqual(try! keychain.get("password"), "password1234", "stored password")
         XCTAssertEqual(try! keychain.get("password"), "password1234", "stored password")
-        
+
         do { try keychain.remove("username") } catch {}
         do { try keychain.remove("username") } catch {}
         XCTAssertNil(try! keychain.get("username"), "removed username")
         XCTAssertNil(try! keychain.get("username"), "removed username")
         XCTAssertEqual(try! keychain.get("password"), "password1234", "left password")
         XCTAssertEqual(try! keychain.get("password"), "password1234", "left password")
-        
+
         do { try keychain.remove("password") } catch {}
         do { try keychain.remove("password") } catch {}
         XCTAssertNil(try! keychain.get("username"), "removed username")
         XCTAssertNil(try! keychain.get("username"), "removed username")
         XCTAssertNil(try! keychain.get("password"), "removed password")
         XCTAssertNil(try! keychain.get("password"), "removed password")
     }
     }
-    
+
     func testRemoveData() {
     func testRemoveData() {
         let JSONObject = ["username": "kishikawakatsumi", "password": "password1234"]
         let JSONObject = ["username": "kishikawakatsumi", "password": "password1234"]
         let JSONData = try! NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
         let JSONData = try! NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
-        
+
         let keychain = Keychain(service: "Twitter")
         let keychain = Keychain(service: "Twitter")
-        
+
         XCTAssertNil(try! keychain.getData("JSONData"), "not stored JSON data")
         XCTAssertNil(try! keychain.getData("JSONData"), "not stored JSON data")
-        
+
         do { try keychain.set(JSONData, key: "JSONData") } catch {}
         do { try keychain.set(JSONData, key: "JSONData") } catch {}
         XCTAssertEqual(try! keychain.getData("JSONData"), JSONData, "stored JSON data")
         XCTAssertEqual(try! keychain.getData("JSONData"), JSONData, "stored JSON data")
-        
+
         do { try keychain.remove("JSONData") } catch {}
         do { try keychain.remove("JSONData") } catch {}
         XCTAssertNil(try! keychain.getData("JSONData"), "removed JSON data")
         XCTAssertNil(try! keychain.getData("JSONData"), "removed JSON data")
     }
     }
-    
+
     // MARK:
     // MARK:
-    
+
     func testSubscripting() {
     func testSubscripting() {
         let keychain = Keychain(service: "Twitter")
         let keychain = Keychain(service: "Twitter")
-        
+
         XCTAssertNil(keychain["username"], "not stored username")
         XCTAssertNil(keychain["username"], "not stored username")
         XCTAssertNil(keychain["password"], "not stored password")
         XCTAssertNil(keychain["password"], "not stored password")
         XCTAssertNil(keychain[string: "username"], "not stored username")
         XCTAssertNil(keychain[string: "username"], "not stored username")
         XCTAssertNil(keychain[string: "password"], "not stored password")
         XCTAssertNil(keychain[string: "password"], "not stored password")
-        
+
         keychain["username"] = "kishikawakatsumi"
         keychain["username"] = "kishikawakatsumi"
         XCTAssertEqual(keychain["username"], "kishikawakatsumi", "stored username")
         XCTAssertEqual(keychain["username"], "kishikawakatsumi", "stored username")
         XCTAssertEqual(keychain[string: "username"], "kishikawakatsumi", "stored username")
         XCTAssertEqual(keychain[string: "username"], "kishikawakatsumi", "stored username")
-        
+
         keychain["password"] = "password1234"
         keychain["password"] = "password1234"
         XCTAssertEqual(keychain["password"], "password1234", "stored password")
         XCTAssertEqual(keychain["password"], "password1234", "stored password")
         XCTAssertEqual(keychain[string: "password"], "password1234", "stored password")
         XCTAssertEqual(keychain[string: "password"], "password1234", "stored password")
-        
+
         keychain[string: "username"] = nil
         keychain[string: "username"] = nil
         XCTAssertNil(keychain["username"], "removed username")
         XCTAssertNil(keychain["username"], "removed username")
         XCTAssertEqual(keychain["password"], "password1234", "left password")
         XCTAssertEqual(keychain["password"], "password1234", "left password")
         XCTAssertNil(keychain[string: "username"], "removed username")
         XCTAssertNil(keychain[string: "username"], "removed username")
         XCTAssertEqual(keychain[string: "password"], "password1234", "left password")
         XCTAssertEqual(keychain[string: "password"], "password1234", "left password")
-        
+
         keychain[string: "password"] = nil
         keychain[string: "password"] = nil
         XCTAssertNil(keychain["username"], "removed username")
         XCTAssertNil(keychain["username"], "removed username")
         XCTAssertNil(keychain["password"], "removed password")
         XCTAssertNil(keychain["password"], "removed password")
@@ -753,7 +753,7 @@ class KeychainAccessTests: XCTestCase {
         keychain[data: "JSONData"] = nil
         keychain[data: "JSONData"] = nil
         XCTAssertNil(keychain[data:"JSONData"], "removed JSON data")
         XCTAssertNil(keychain[data:"JSONData"], "removed JSON data")
     }
     }
-    
+
     // MARK:
     // MARK:
 
 
     #if !os(OSX) // Disable on CI
     #if !os(OSX) // Disable on CI
@@ -871,9 +871,9 @@ class KeychainAccessTests: XCTestCase {
         }
         }
     }
     }
     #endif
     #endif
-    
+
     // MARK:
     // MARK:
-    
+
     func testSetStringWithCustomService() {
     func testSetStringWithCustomService() {
         let username_1 = "kishikawakatsumi"
         let username_1 = "kishikawakatsumi"
         let password_1 = "password1234"
         let password_1 = "password1234"
@@ -881,16 +881,16 @@ class KeychainAccessTests: XCTestCase {
         let password_2 = "password_1234"
         let password_2 = "password_1234"
         let username_3 = "k_katsumi"
         let username_3 = "k_katsumi"
         let password_3 = "12341234"
         let password_3 = "12341234"
-        
+
         let service_1 = ""
         let service_1 = ""
         let service_2 = "com.kishikawakatsumi.KeychainAccess"
         let service_2 = "com.kishikawakatsumi.KeychainAccess"
         let service_3 = "example.com"
         let service_3 = "example.com"
-        
+
         do { try Keychain().removeAll() } catch {}
         do { try Keychain().removeAll() } catch {}
         do { try Keychain(service: service_1).removeAll() } catch {}
         do { try Keychain(service: service_1).removeAll() } catch {}
         do { try Keychain(service: service_2).removeAll() } catch {}
         do { try Keychain(service: service_2).removeAll() } catch {}
         do { try Keychain(service: service_3).removeAll() } catch {}
         do { try Keychain(service: service_3).removeAll() } catch {}
-        
+
         XCTAssertNil(try! Keychain().get("username"), "not stored username")
         XCTAssertNil(try! Keychain().get("username"), "not stored username")
         XCTAssertNil(try! Keychain().get("password"), "not stored password")
         XCTAssertNil(try! Keychain().get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "not stored username")
@@ -899,25 +899,25 @@ class KeychainAccessTests: XCTestCase {
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
-        
+
         do { try Keychain().set(username_1, key: "username") } catch {}
         do { try Keychain().set(username_1, key: "username") } catch {}
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
-        
+
         do { try Keychain(service: service_1).set(username_1, key: "username") } catch {}
         do { try Keychain(service: service_1).set(username_1, key: "username") } catch {}
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
-        
+
         do { try Keychain(service: service_2).set(username_2, key: "username") } catch {}
         do { try Keychain(service: service_2).set(username_2, key: "username") } catch {}
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "stored username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "not stored username")
-        
+
         do { try Keychain(service: service_3).set(username_3, key: "username") } catch {}
         do { try Keychain(service: service_3).set(username_3, key: "username") } catch {}
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain().get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "stored username")
@@ -929,67 +929,67 @@ class KeychainAccessTests: XCTestCase {
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
-        
+
         do { try Keychain(service: service_1).set(password_1, key: "password") } catch {}
         do { try Keychain(service: service_1).set(password_1, key: "password") } catch {}
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
-        
+
         do { try Keychain(service: service_2).set(password_2, key: "password") } catch {}
         do { try Keychain(service: service_2).set(password_2, key: "password") } catch {}
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "stored password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
         XCTAssertNil(try! Keychain(service: service_3).get("password"), "not stored password")
-        
+
         do { try Keychain(service: service_3).set(password_3, key: "password") } catch {}
         do { try Keychain(service: service_3).set(password_3, key: "password") } catch {}
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain().get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "stored password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "stored password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "stored password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "stored password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "stored password")
-        
+
         do { try Keychain().remove("username") } catch {}
         do { try Keychain().remove("username") } catch {}
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "left username")
         XCTAssertEqual(try! Keychain(service: service_1).get("username"), username_1, "left username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "left username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "left username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
-        
+
         do { try Keychain(service: service_1).remove("username") } catch {}
         do { try Keychain(service: service_1).remove("username") } catch {}
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "left username")
         XCTAssertEqual(try! Keychain(service: service_2).get("username"), username_2, "left username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
-        
+
         do { try Keychain(service: service_2).remove("username") } catch {}
         do { try Keychain(service: service_2).remove("username") } catch {}
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "removed username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
         XCTAssertEqual(try! Keychain(service: service_3).get("username"), username_3, "left username")
-        
+
         do { try Keychain(service: service_3).remove("username") } catch {}
         do { try Keychain(service: service_3).remove("username") } catch {}
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain().get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_1).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_2).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "removed username")
         XCTAssertNil(try! Keychain(service: service_3).get("username"), "removed username")
-        
+
         do { try Keychain().remove("password") } catch {}
         do { try Keychain().remove("password") } catch {}
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "left password")
         XCTAssertEqual(try! Keychain(service: service_1).get("password"), password_1, "left password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "left password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "left password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
-        
+
         do { try Keychain(service: service_1).remove("password") } catch {}
         do { try Keychain(service: service_1).remove("password") } catch {}
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "removed password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "left password")
         XCTAssertEqual(try! Keychain(service: service_2).get("password"), password_2, "left password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
-        
+
         do { try Keychain(service: service_2).remove("password") } catch {}
         do { try Keychain(service: service_2).remove("password") } catch {}
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_1).get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "removed password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
         XCTAssertEqual(try! Keychain(service: service_3).get("password"), password_3, "left password")
-        
+
         do { try Keychain(service: service_3).remove("password") } catch {}
         do { try Keychain(service: service_3).remove("password") } catch {}
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain().get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "removed password")
         XCTAssertNil(try! Keychain(service: service_2).get("password"), "removed password")

+ 3 - 3
Lib/KeychainAccessTests/SharedCredentialTests.swift

@@ -27,7 +27,7 @@ import XCTest
 import KeychainAccess
 import KeychainAccess
 
 
 class SharedCredentialTests: XCTestCase {
 class SharedCredentialTests: XCTestCase {
-    
+
     override func setUp() {
     override func setUp() {
         super.setUp()
         super.setUp()
     }
     }
@@ -72,13 +72,13 @@ class SharedCredentialTests: XCTestCase {
             var passwords = Set<String>()
             var passwords = Set<String>()
             for _ in 0...100_000 {
             for _ in 0...100_000 {
                 let password = Keychain.generatePassword()
                 let password = Keychain.generatePassword()
-                
+
                 XCTAssertEqual(password.characters.count, "xxx-xxx-xxx-xxx".characters.count)
                 XCTAssertEqual(password.characters.count, "xxx-xxx-xxx-xxx".characters.count)
                 XCTAssertFalse(passwords.contains(password))
                 XCTAssertFalse(passwords.contains(password))
 
 
                 passwords.insert(password)
                 passwords.insert(password)
             }
             }
         }
         }
-
     }
     }
+
 }
 }