iOS Keychain - LAContext.setCredential(data, .applicationPassword) returns false on Simulator
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am trying to use an "applicationPassword" to protect the data that a user stores in the Keychain.
Everything works perfectly on a real device but unfortunately things don't work at all on the simulator.
In order to get started I have this very basic code to set the applicationPassword.
let authenticationContext = LAContext()
let applicationPassword = "123".data(using: .utf8)
let result = authenticationContext.setCredential(applicationPassword, type: .applicationPassword)
print(result)
The call to setCredential
returns true
on a real device but false
on the simulator.
Please help :-)
If this isn't supported on the Simulator then it isn't really a feasible solution.
Here is Apple's documentation, for reference:
https://developer.apple.com/documentation/localauthentication/lacontext/1514168-setcredential
ios swift keychain
add a comment |
I am trying to use an "applicationPassword" to protect the data that a user stores in the Keychain.
Everything works perfectly on a real device but unfortunately things don't work at all on the simulator.
In order to get started I have this very basic code to set the applicationPassword.
let authenticationContext = LAContext()
let applicationPassword = "123".data(using: .utf8)
let result = authenticationContext.setCredential(applicationPassword, type: .applicationPassword)
print(result)
The call to setCredential
returns true
on a real device but false
on the simulator.
Please help :-)
If this isn't supported on the Simulator then it isn't really a feasible solution.
Here is Apple's documentation, for reference:
https://developer.apple.com/documentation/localauthentication/lacontext/1514168-setcredential
ios swift keychain
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
Thanks for the reply.setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returnsfalse
.
– Oliver Pearmain
Nov 16 '18 at 16:28
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15
add a comment |
I am trying to use an "applicationPassword" to protect the data that a user stores in the Keychain.
Everything works perfectly on a real device but unfortunately things don't work at all on the simulator.
In order to get started I have this very basic code to set the applicationPassword.
let authenticationContext = LAContext()
let applicationPassword = "123".data(using: .utf8)
let result = authenticationContext.setCredential(applicationPassword, type: .applicationPassword)
print(result)
The call to setCredential
returns true
on a real device but false
on the simulator.
Please help :-)
If this isn't supported on the Simulator then it isn't really a feasible solution.
Here is Apple's documentation, for reference:
https://developer.apple.com/documentation/localauthentication/lacontext/1514168-setcredential
ios swift keychain
I am trying to use an "applicationPassword" to protect the data that a user stores in the Keychain.
Everything works perfectly on a real device but unfortunately things don't work at all on the simulator.
In order to get started I have this very basic code to set the applicationPassword.
let authenticationContext = LAContext()
let applicationPassword = "123".data(using: .utf8)
let result = authenticationContext.setCredential(applicationPassword, type: .applicationPassword)
print(result)
The call to setCredential
returns true
on a real device but false
on the simulator.
Please help :-)
If this isn't supported on the Simulator then it isn't really a feasible solution.
Here is Apple's documentation, for reference:
https://developer.apple.com/documentation/localauthentication/lacontext/1514168-setcredential
ios swift keychain
ios swift keychain
edited Nov 16 '18 at 16:44
Oliver Pearmain
asked Nov 16 '18 at 15:50
Oliver PearmainOliver Pearmain
11.2k86669
11.2k86669
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
Thanks for the reply.setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returnsfalse
.
– Oliver Pearmain
Nov 16 '18 at 16:28
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15
add a comment |
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
Thanks for the reply.setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returnsfalse
.
– Oliver Pearmain
Nov 16 '18 at 16:28
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
Thanks for the reply.
setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returns false
.– Oliver Pearmain
Nov 16 '18 at 16:28
Thanks for the reply.
setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returns false
.– Oliver Pearmain
Nov 16 '18 at 16:28
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15
add a comment |
1 Answer
1
active
oldest
votes
It would seem that applicationPassword
works in conjunction with the device's system passcode.
And therefore an applicationPassword
will NOT work on:
- The simulator (where its not possible to set a system passcode)
- A real device without a system passcode set
I have ascertained this information from the below souces:
WWDC 2015 - Session 706 - Security & Your Apps (see around 43:23 of video)
Transcript: https://asciiwwdc.com/2015/sessions/706?q=applicationpassword
Now, let's look at an item protected with ApplicationPassword.
Just the device passcode is no longer sufficient.
Your application has also got to provide its own password.
Again, we derive a cryptographic key from it, and it's only when the
device passcode and the app password are both present that access is
granted to the Keychain item.
https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/
Keychain items can now be encrypted using both the device’s passcode
and an “Application password”; both values are then needed to decrypt
and retrieve the item. This allows Apps to control when the data is
accessible/decrypted, instead of having the data decrypted as soon as
the device is unlocked.
https://macbirdie.net/2016/03/app-pwd
The other interesting new feature is securing the keychain items using
an application-provided password, which is an additional factor to
device unlock PIN or passcode.
The password can either come from the user or, as the session 706’s
presenter suggested, either can be an additional token sent by the
server or a secret kept on a device connected to the phone.
This security scheme requires at least a device passcode to exist,
since it works with it in tandem. As a result of that it’s not
possible to test it on the iOS Simulator, which makes developing the
support for it a little harder, because when you add a keychain item
protected that way, no actual password is even required to retrieve
it.
Its a shame that none of Apple's own documention seems to make a mention of this:
- Apple - setCredential(_:type:)
- Apple - LACredentialType.applicationPassword
- Apple - applicationPassword
- Apple - Restricting Keychain Item Accessibility
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53341248%2fios-keychain-lacontext-setcredentialdata-applicationpassword-returns-false%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It would seem that applicationPassword
works in conjunction with the device's system passcode.
And therefore an applicationPassword
will NOT work on:
- The simulator (where its not possible to set a system passcode)
- A real device without a system passcode set
I have ascertained this information from the below souces:
WWDC 2015 - Session 706 - Security & Your Apps (see around 43:23 of video)
Transcript: https://asciiwwdc.com/2015/sessions/706?q=applicationpassword
Now, let's look at an item protected with ApplicationPassword.
Just the device passcode is no longer sufficient.
Your application has also got to provide its own password.
Again, we derive a cryptographic key from it, and it's only when the
device passcode and the app password are both present that access is
granted to the Keychain item.
https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/
Keychain items can now be encrypted using both the device’s passcode
and an “Application password”; both values are then needed to decrypt
and retrieve the item. This allows Apps to control when the data is
accessible/decrypted, instead of having the data decrypted as soon as
the device is unlocked.
https://macbirdie.net/2016/03/app-pwd
The other interesting new feature is securing the keychain items using
an application-provided password, which is an additional factor to
device unlock PIN or passcode.
The password can either come from the user or, as the session 706’s
presenter suggested, either can be an additional token sent by the
server or a secret kept on a device connected to the phone.
This security scheme requires at least a device passcode to exist,
since it works with it in tandem. As a result of that it’s not
possible to test it on the iOS Simulator, which makes developing the
support for it a little harder, because when you add a keychain item
protected that way, no actual password is even required to retrieve
it.
Its a shame that none of Apple's own documention seems to make a mention of this:
- Apple - setCredential(_:type:)
- Apple - LACredentialType.applicationPassword
- Apple - applicationPassword
- Apple - Restricting Keychain Item Accessibility
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
add a comment |
It would seem that applicationPassword
works in conjunction with the device's system passcode.
And therefore an applicationPassword
will NOT work on:
- The simulator (where its not possible to set a system passcode)
- A real device without a system passcode set
I have ascertained this information from the below souces:
WWDC 2015 - Session 706 - Security & Your Apps (see around 43:23 of video)
Transcript: https://asciiwwdc.com/2015/sessions/706?q=applicationpassword
Now, let's look at an item protected with ApplicationPassword.
Just the device passcode is no longer sufficient.
Your application has also got to provide its own password.
Again, we derive a cryptographic key from it, and it's only when the
device passcode and the app password are both present that access is
granted to the Keychain item.
https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/
Keychain items can now be encrypted using both the device’s passcode
and an “Application password”; both values are then needed to decrypt
and retrieve the item. This allows Apps to control when the data is
accessible/decrypted, instead of having the data decrypted as soon as
the device is unlocked.
https://macbirdie.net/2016/03/app-pwd
The other interesting new feature is securing the keychain items using
an application-provided password, which is an additional factor to
device unlock PIN or passcode.
The password can either come from the user or, as the session 706’s
presenter suggested, either can be an additional token sent by the
server or a secret kept on a device connected to the phone.
This security scheme requires at least a device passcode to exist,
since it works with it in tandem. As a result of that it’s not
possible to test it on the iOS Simulator, which makes developing the
support for it a little harder, because when you add a keychain item
protected that way, no actual password is even required to retrieve
it.
Its a shame that none of Apple's own documention seems to make a mention of this:
- Apple - setCredential(_:type:)
- Apple - LACredentialType.applicationPassword
- Apple - applicationPassword
- Apple - Restricting Keychain Item Accessibility
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
add a comment |
It would seem that applicationPassword
works in conjunction with the device's system passcode.
And therefore an applicationPassword
will NOT work on:
- The simulator (where its not possible to set a system passcode)
- A real device without a system passcode set
I have ascertained this information from the below souces:
WWDC 2015 - Session 706 - Security & Your Apps (see around 43:23 of video)
Transcript: https://asciiwwdc.com/2015/sessions/706?q=applicationpassword
Now, let's look at an item protected with ApplicationPassword.
Just the device passcode is no longer sufficient.
Your application has also got to provide its own password.
Again, we derive a cryptographic key from it, and it's only when the
device passcode and the app password are both present that access is
granted to the Keychain item.
https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/
Keychain items can now be encrypted using both the device’s passcode
and an “Application password”; both values are then needed to decrypt
and retrieve the item. This allows Apps to control when the data is
accessible/decrypted, instead of having the data decrypted as soon as
the device is unlocked.
https://macbirdie.net/2016/03/app-pwd
The other interesting new feature is securing the keychain items using
an application-provided password, which is an additional factor to
device unlock PIN or passcode.
The password can either come from the user or, as the session 706’s
presenter suggested, either can be an additional token sent by the
server or a secret kept on a device connected to the phone.
This security scheme requires at least a device passcode to exist,
since it works with it in tandem. As a result of that it’s not
possible to test it on the iOS Simulator, which makes developing the
support for it a little harder, because when you add a keychain item
protected that way, no actual password is even required to retrieve
it.
Its a shame that none of Apple's own documention seems to make a mention of this:
- Apple - setCredential(_:type:)
- Apple - LACredentialType.applicationPassword
- Apple - applicationPassword
- Apple - Restricting Keychain Item Accessibility
It would seem that applicationPassword
works in conjunction with the device's system passcode.
And therefore an applicationPassword
will NOT work on:
- The simulator (where its not possible to set a system passcode)
- A real device without a system passcode set
I have ascertained this information from the below souces:
WWDC 2015 - Session 706 - Security & Your Apps (see around 43:23 of video)
Transcript: https://asciiwwdc.com/2015/sessions/706?q=applicationpassword
Now, let's look at an item protected with ApplicationPassword.
Just the device passcode is no longer sufficient.
Your application has also got to provide its own password.
Again, we derive a cryptographic key from it, and it's only when the
device passcode and the app password are both present that access is
granted to the Keychain item.
https://nabla-c0d3.github.io/blog/2015/06/16/ios9-security-privacy/
Keychain items can now be encrypted using both the device’s passcode
and an “Application password”; both values are then needed to decrypt
and retrieve the item. This allows Apps to control when the data is
accessible/decrypted, instead of having the data decrypted as soon as
the device is unlocked.
https://macbirdie.net/2016/03/app-pwd
The other interesting new feature is securing the keychain items using
an application-provided password, which is an additional factor to
device unlock PIN or passcode.
The password can either come from the user or, as the session 706’s
presenter suggested, either can be an additional token sent by the
server or a secret kept on a device connected to the phone.
This security scheme requires at least a device passcode to exist,
since it works with it in tandem. As a result of that it’s not
possible to test it on the iOS Simulator, which makes developing the
support for it a little harder, because when you add a keychain item
protected that way, no actual password is even required to retrieve
it.
Its a shame that none of Apple's own documention seems to make a mention of this:
- Apple - setCredential(_:type:)
- Apple - LACredentialType.applicationPassword
- Apple - applicationPassword
- Apple - Restricting Keychain Item Accessibility
answered Nov 19 '18 at 11:02
Oliver PearmainOliver Pearmain
11.2k86669
11.2k86669
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
add a comment |
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
Hmm, for me it works perfectly fine on a real device with passcode turned off.
– algrid
Apr 1 at 15:32
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53341248%2fios-keychain-lacontext-setcredentialdata-applicationpassword-returns-false%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
On the simulator make sure you are enrolled in faceId/TouchId under Hardware menu
– Woodstock
Nov 16 '18 at 16:20
Thanks for the reply.
setCredential
has nothing to do with biometrics (faceID or touchID) so I wouldn't have expected this to make a difference. I have tried as suggested and the call still returnsfalse
.– Oliver Pearmain
Nov 16 '18 at 16:28
On simulator it will not work properly, had same issue
– canister_exister
Nov 16 '18 at 17:15