Hi there,
I am wondering what it the relation between keystore plug in and touch plugin?
regards and thanks
The two plugins are independent but complementary:
1. Key Store Plugin
KeyAuthentication
SetValue
2. Touch ID / Biometric Plugin
KeyAuthentication = True
So:
InvalidateOnBiometricChange
If your goal is a full public/private key + challenge/sign flow, that still requires a custom plugin; Key Store + Touch ID alone don’t provide that.
For a full public/private key + challenge/sign flow in OutSystems 11, you have to go beyond the standard Key Store and Touch/biometric plugins and introduce a custom native plugin that exposes true key-pair and signing operations.
Below is the concrete picture.
Biometric / Touch plugins
Key Store Plugin
GenerateKeyPair
Sign
So, OutSystems 11 does not have a ready-made plugin whose job is “generate key pair + sign challenge in OS keystore”.Get Public key from Plugin Touch Id
To implement the classic flow:
You need a custom mobile plugin that exposes, at minimum:
GenerateKeyPair()
SignChallenge(ChallengeData)
HasKeyPair()
DeleteKeyPair()
On iOS/Android, this plugin will internally use:
SecKeyCreateRandomKey
SecKeyCreateSignature
KeyPairGenerator
KeyGenParameterSpec
Signature
setUserAuthenticationRequired(true)
You then wrap this native code as an OutSystems mobile plugin (Cordova-style) and consume it via client actions in your mobile module.Integrating Plugins with OutSystems
In this full flow, the relation between the three is:
Biometric / Touch plugin
userAuthenticationRequired = true
Custom Key-Pair plugin (your implementation)
Key Store Plugin (optional)
POST /device/registerKey
GET /auth/challenge?deviceId=...
ChallengeId
ChallengeData
POST /auth/verify
DeviceId
PublicKey
All REST calls and orchestration are built with standard OutSystems REST integrations and client actions; the only non-standard part is the custom plugin itself.Get Public key from Plugin Touch IdIntegrating Plugins with OutSystems
So, to directly answer your question:
If you’d like, I can outline a minimal plugin API (JS signatures + client actions) tailored to your scenario.
Yes, the custom plugin does consist of Client Actions in OutSystems — that’s how you expose the native functionality to your mobile app.
When you integrate a Cordova/native plugin in OutSystems, you create a plugin wrapper module (a library) that contains:
Client Actions
SignChallenge
HasKeyPair
DeleteKeyPair
JavaScript nodes inside those Client Actions
Extensibility Configurations (plugin URL)
Plugin_Auth.GenerateKeyPair()
Plugin_Auth.SignChallenge(ChallengeData)
So, for your public/private key + challenge/sign flow:
If you want, I can sketch what the GenerateKeyPair and SignChallenge Client Actions would look like (inputs/outputs) for your scenario.
can you sketch what the GenerateKeyPair and SignChallenge Client Actions would look like?