Platforms to show: All Mac Windows Linux Cross-Platform
/MacClassic/Keychain/KeyChain test iOS
Required plugins for this example: MBS MacClassic Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacClassic/Keychain/KeyChain test iOS
This example is the version from Thu, 21th Apr 2021.
Project "KeyChain test iOS.xojo_binary_project"
Class App Inherits MobileApplication
End Class
Class Screen1 Inherits MobileScreen
Control mbAdd Inherits MobileButton
ControlInstance mbAdd Inherits MobileButton
Constraint Constraint 1
Constraint Constraint 2
Constraint Constraint 3
Constraint Constraint 4
EventHandler Sub Pressed()
AddPassword
End EventHandler
End Control
Control mbGet Inherits MobileButton
ControlInstance mbGet Inherits MobileButton
Constraint Constraint 1
Constraint Constraint 2
Constraint Constraint 3
Constraint Constraint 4
EventHandler Sub Pressed()
GetPassword
End EventHandler
End Control
Control mbUpdate Inherits MobileButton
ControlInstance mbUpdate Inherits MobileButton
Constraint Constraint 1
Constraint Constraint 2
Constraint Constraint 3
Constraint Constraint 4
EventHandler Sub Pressed()
UpdatePassword
End EventHandler
End Control
Control mbDelete Inherits MobileButton
ControlInstance mbDelete Inherits MobileButton
Constraint Constraint 1
Constraint Constraint 2
Constraint Constraint 3
Constraint Constraint 4
EventHandler Sub Pressed()
DeletePassword
End EventHandler
End Control
Control Label1 Inherits MobileLabel
ControlInstance Label1 Inherits MobileLabel
Constraint Constraint 1
Constraint Constraint 2
Constraint Constraint 3
Constraint Constraint 4
End Control
EventHandler Sub Opening()
End EventHandler
Private Sub AddPassword()
Dim storePasswordDictionary As Dictionary
Dim theResult As Variant
Dim passwordData As MemoryBlock
Dim password, keychainErrorString As String
Dim keychainErrorNumber As Integer
password = DateTime.Now.SQLDateTime
passwordData = password.ConvertEncoding( Encodings.UTF8 )
storePasswordDictionary = New Dictionary
storePasswordDictionary.value( KeychainManagerMBS.kSecAttrService ) = "de.monkeybreadsoftware.test"
'storePasswordDictionary.value( KeychainManagerMBS.kSecAttrAccessGroup ) = "H6CE6NC936.de.monkeybreadsoftware.test"
storePasswordDictionary.value( KeychainManagerMBS.kSecAttrAccount ) = "testuser"
storePasswordDictionary.value( KeychainManagerMBS.kSecValueData ) = passwordData
storePasswordDictionary.value( KeychainManagerMBS.kSecClass ) = KeychainManagerMBS.kSecClassGenericPassword
storePasswordDictionary.Value( KeychainManagerMBS.kSecAttrDescription ) = "Secret staff login"
storePasswordDictionary.Value( KeychainManagerMBS.kSecAttrLabel ) = "MySecret"
storePasswordDictionary.Value( KeychainManagerMBS.kSecAttrAccessible ) = KeychainManagerMBS.kSecAttrAccessibleAfterFirstUnlock
// kSecAttrAccessible and kSecAttrAccessControl don't work together
If KeychainManagerMBS.AddItem( storePasswordDictionary, theResult ) Then
MessageBox( "Added password" )
Else
keychainErrorNumber = KeychainManagerMBS.LastError
keychainErrorString = KeychainManagerMBS.ErrorMessageString( keychainErrorNumber )
MessageBox( "Error adding password: "+keychainErrorNumber.ToString+" "+keychainErrorString )
End If
End Sub
Private Sub DeletePassword()
Dim storePasswordDictionary As Dictionary
Dim keychainErrorString As String
Dim keychainErrorNumber As Integer
Dim queryDictionary As New Dictionary
queryDictionary.value( KeychainManagerMBS.kSecClass ) = KeychainManagerMBS.kSecClassGenericPassword
queryDictionary.value( KeychainManagerMBS.kSecAttrService ) = "de.monkeybreadsoftware.test"
'queryDictionary.value( KeychainManagerMBS.kSecAttrAccessGroup ) = "H6CE6NC936.de.monkeybreadsoftware.test"
queryDictionary.value( KeychainManagerMBS.kSecAttrAccount ) = "testuser"
If KeychainManagerMBS.DeleteItem( queryDictionary ) Then
MessageBox( "Deleted password" )
Else
keychainErrorNumber = KeychainManagerMBS.LastError
keychainErrorString = KeychainManagerMBS.ErrorMessageString( keychainErrorNumber )
MessageBox( "Error deleting password: "+keychainErrorNumber.ToString+" "+keychainErrorString )
End If
End Sub
Private Sub GetPassword()
Dim queryDictionary As Dictionary
Dim passwordData As MemoryBlock
Dim password, keychainErrorString As String
Dim keychainErrorNumber As Integer
// Build query
queryDictionary = New Dictionary
queryDictionary.value( KeychainManagerMBS.kSecClass ) = KeychainManagerMBS.kSecClassGenericPassword
'queryDictionary.value( KeychainManagerMBS.kSecAttrAccessGroup ) = "H6CE6NC936.de.monkeybreadsoftware.test"
queryDictionary.Value( KeychainManagerMBS.kSecMatchLimit ) = KeychainManagerMBS.kSecMatchLimitOne
queryDictionary.value( KeychainManagerMBS.kSecAttrService ) = "de.monkeybreadsoftware.test"
queryDictionary.value( KeychainManagerMBS.kSecAttrAccount ) = "testuser"
// Fetch item from keychain
If KeychainManagerMBS.GetPassword( queryDictionary, passwordData ) Then
Dim data As String = passwordData
password = data.DefineEncoding( Encodings.UTF8 )
MessageBox( "Got password: "+password )
Else
keychainErrorNumber = KeychainManagerMBS.LastError
keychainErrorString = KeychainManagerMBS.ErrorMessageString( keychainErrorNumber )
MessageBox( "Error getting password: "+keychainErrorNumber.ToString+" "+keychainErrorString )
End If
End Sub
Private Sub UpdatePassword()
Dim storePasswordDictionary As Dictionary
Dim passwordData As MemoryBlock
Dim password, keychainErrorString As String
Dim keychainErrorNumber As Integer
password = DateTime.Now.SQLDateTime
passwordData = password.ConvertEncoding( Encodings.UTF8 )
Dim queryDictionary As New Dictionary
queryDictionary.value( KeychainManagerMBS.kSecClass ) = KeychainManagerMBS.kSecClassGenericPassword
queryDictionary.value( KeychainManagerMBS.kSecAttrService ) = "de.monkeybreadsoftware.test"
'queryDictionary.value( KeychainManagerMBS.kSecAttrAccessGroup ) = "H6CE6NC936.de.monkeybreadsoftware.test"
queryDictionary.value( KeychainManagerMBS.kSecAttrAccount ) = "testuser"
storePasswordDictionary = New Dictionary
storePasswordDictionary.value( KeychainManagerMBS.kSecValueData ) = passwordData
If KeychainManagerMBS.UpdateItem( queryDictionary, storePasswordDictionary ) Then
MessageBox( "Updated password" )
Else
keychainErrorNumber = KeychainManagerMBS.LastError
keychainErrorString = KeychainManagerMBS.ErrorMessageString( keychainErrorNumber )
MessageBox( "Error updating password: "+keychainErrorNumber.ToString+" "+keychainErrorString )
End If
End Sub
Property Private n As NSExceptionMBS
End Class
Class LaunchScreen Inherits iosView
End Class
End Project
See also:
The items on this page are in the following plugins: MBS MacClassic Plugin.