Skip to content
This repository has been archived by the owner on Aug 24, 2019. It is now read-only.

Error -34018 (errSecDefault) #52

Closed
tonyxiao opened this issue Dec 3, 2013 · 111 comments
Closed

Error -34018 (errSecDefault) #52

tonyxiao opened this issue Dec 3, 2013 · 111 comments

Comments

@tonyxiao
Copy link

tonyxiao commented Dec 3, 2013

Sometimes I'd see the following error

(lldb) po error
Error Domain=com.samsoffes.sskeychain Code=-34018 "errSecDefault" UserInfo=0x17d3f070 {NSLocalizedDescription=errSecDefault}

But I have no idea what errSecDefault (code -34018) means nor how to resolve it. Any ideas?

@aspyct
Copy link

aspyct commented Jan 22, 2014

As an additional information, we have the same problem in our project, which doesn't use SSKeychain. We started experiencing the problem with iOS7 only with the test runs. Right now, about a month later, we discovered that we have the same problem with an iPad mini 1 running iOS 6.1. But it works with an iPhone 4S running the same OS version.

If you have any ideas, I'd be interested. I'm also open to contributing to this issue, as we're experiencing the same problem, but this will be planning-constrained.

iPhone 5S, iOS7: fail
iPhone 5C, iOS7: fail
iPhone 4S, iOS7: fail
iPad mini 1, iOS6: fail
iPhone 4S, iOS6: success

@calebd
Copy link
Collaborator

calebd commented Jan 22, 2014

Are you guys using access groups or iCloud syncing? Error -34108 is defined in SecBasePriv.h as "missing entitlement".

@aspyct
Copy link

aspyct commented Jan 24, 2014

Nope, none of the two.

@iwasrobbed
Copy link

👍 Just started seeing the same issue consistently after upgrading to iOS 7.1 SDK. By the way, this only happens in a testing environment running the app through KIF on a device. If I run normally, it works just fine and it also works fine on the simulator during test.

This seemed to fix it for me during test: http://stackoverflow.com/a/22305193/308315

@soffes
Copy link
Owner

soffes commented Mar 16, 2014

PRs welcome :)

@TedAvery
Copy link

👍 Happening to me as well on iOS 7.1.1, but very sporadically, can't find a way to recreate it myself.

@rsanchezsaez
Copy link

I'm experiencing this as well when trying to get previously stored items. They weird thing is that it seems to be happening semi-randomly.

In our case it seems related to trying to access the keychain in code inside a dispatch_once(&token, block).

@soffes
Copy link
Owner

soffes commented Jul 18, 2014

@rsanchezsaez hah! That'll do it :)

@rsanchezsaez
Copy link

@soffes: How do you mean? That accessing the keychain inside a dispatch_once(&token, block) block produces this error? They weird thing is that we sometimes get it and sometimes don't (with the code being at the same exact place).

@soffes
Copy link
Owner

soffes commented Jul 18, 2014

Oh, I thought you meant it was only happening sometimes because you were only executing the code once

@rsanchezsaez
Copy link

No, the code is ran once per application lifetime, but sometimes we get the bug and sometimes we don't (we have experienced the bug on several application runs, both in Debug and Release mode). :-)

@ccwasden
Copy link

I am seeing -34018 "errSecDefault" on occasion, has anyone figured out what is going on or how to avoid it?

@marknorgren
Copy link

I am also seeing the -34018 intermittently.

Error Domain=com.samsoffes.sskeychain Code=-34018 "errSecDefault" UserInfo=0x19fe8c10 {NSLocalizedDescription=errSecDefault}

@rvi
Copy link

rvi commented Nov 3, 2014

Same here, on iOS 8.1 on iPhone 6. :/

@ccwasden
Copy link

ccwasden commented Nov 4, 2014

So, I was getting this error after accessing the Keychain around 100 times or so. Initially the keychain worked fine but then at some point it would just stop working and I couldn't access using sskeychain. Any chance it is connected to too many queries on the keychain in a short period of time?

@abc2mit
Copy link

abc2mit commented Nov 4, 2014

I'm also getting this issue intermittently now on iPhone 5s, iOS 7.1.1.

It's weird.. I'm getting the error both on retrieve and save. It seems to be occurring on launch or re-launch of the app. I wonder if it's hitting the keychain too often?

@abc2mit
Copy link

abc2mit commented Nov 11, 2014

Does anyone know if the iOS Keychain is thread-safe? I'm actually hitting the iOS Keychain from multiple threads, usually in parallel, so I'm not sure if this is what is causing the -34018. I've also tried switching from kSecClassGenericPassword to kSecClassInternetPassword, but there doesn't seem to be an effect.

@abc2mit
Copy link

abc2mit commented Nov 17, 2014

@ccwasden That's an interesting thought. That might be true. Or a frequency issue, like 100 requests/hour. I still run into this once in a while, but I now built a cache around it. That's the only thing I can think of, since no one else seems to have any resolution.

@chrisballinger
Copy link

We are seeing this randomly as well, haven't been able to figure it out yet. The most frustrating part is that sometimes quitting the app and running it again solves the problem. I've also only seen it when debugging and never in "release" builds so far.

@maqoo
Copy link

maqoo commented Nov 20, 2014

Hi - we use SSKeychain in our project right now and get this error a lot - debug only though.

Ussually it happens when updating code from git repo at first launch of debug version of the app (this one is actually fixable with the code signing script from http://stackoverflow.com/questions/20344255/secitemadd-and-secitemcopymatching-returns-error-code-34018-errsecmissingentit/22305193#22305193 )

Second thing is that when we use UIImagePicker to capture some photos. We try to access the keychain when UIImagePicker is visible and we can do it with no problem. But right after the image picker control is dismissed, this error starts to occur.

@abc2mit
Copy link

abc2mit commented Nov 25, 2014

@chrisballinger @maqoo Thanks for the updates! I haven't yet incorporated downloading remote logs from my app yet, so I haven't see if there are any issues from release versions.

@skingtree
Copy link

I also have this problem.
Some critical data not saved in keychain and retrieve nil when the app relaunch.
Just like something we trust not work in 100%.

@soffes
Copy link
Owner

soffes commented Dec 12, 2014

This is not an issue with SSKeychain. It is an issue with Keychain. Like the readme says:

Working with the keychain is pretty sucky. You should really check for errors and failures. This library doesn't make it any more stable, it just wraps up all of the annoying C APIs.

Good luck everyone.

@soffes soffes closed this as completed Dec 12, 2014
@paulbruneau
Copy link

I'm glad to see I'm not the only one. When my app gets this, it basically "logs out" the user. I am going to have to re-think what I do when I see this.

@diegopizzocaro
Copy link

Experiencing exactly the same and only in debug.
We debugged it a lot and it seems an issue accessing the keychain when the app is launched from the background. This is only happening with the debugger (i.e. when launched from Xcode).
We think the issue might be related in our case to the debugger keeping alive the app even if it should be killed by the OS.
We tried in fact to run the app and then put it in background and launch many other app to occupy RAM.
With the debugger the bug came up when resuming the app from the background, while without the debugger it didn't (we did run at least 10 tests each).

Note that if you're accessing the keychain in the background you should have something like this in your didFinishLaunchingWithOption

[SSKeychain setAccessibilityType:kSecAttrAccessibleAfterFirstUnlock];

@liujianan901228
Copy link

Following

@samjarman
Copy link

Glad I'm not alone, sad this is an issue.

@xinGGG
Copy link

xinGGG commented Apr 10, 2016

I found that this was a problem when I repeated the use of the key in the same period.

@samjarman
Copy link

@xinGGG Can you please explain further?

@samjarman
Copy link

I tried to distribute the app I was working on via TestFlight and found the same issue. Grr.

@mAu888
Copy link
Contributor

mAu888 commented Apr 28, 2016

[...] We believe these problems were resolved in iOS 9.3. [...]
https://forums.developer.apple.com/thread/4743#126088

@paulbruneau
Copy link

We suspect that there may be yet more causes of this problem.

@benguild
Copy link

benguild commented Jul 8, 2016

Anybody know if this is fixed in iOS 10?

@benguild
Copy link

benguild commented Jul 8, 2016

@danielgalasko Can you post a Gist that shows how to correctly throw the exception if it encounters this error?

@SamuraiZack
Copy link

Following as well

@XiMouQiu
Copy link

I have same problem about this issue

@lagapollo
Copy link

lagapollo commented Aug 24, 2016

got a workaround by enabling keychain sharing in app capabilities

@benguild
Copy link

@lagapollo Are you sure that actually works?

@briananderson1222
Copy link

My app had been working on iOS8 and iOS9, but stopped working with iOS 10. Using the 'fix' provided by @lagapollo works but seems unnecessary.. is this a bug?

@samjarman
Copy link

samjarman commented Aug 24, 2016 via email

@briankoksal
Copy link

briankoksal commented Aug 27, 2016

workaround from @lagapollo worked for me in iOS10

@akbortoli
Copy link

Make sure you enable keychain sharing in the capabilities screen.

not working on iOS 10 #149

keychain-sharing

@samjarman
Copy link

Except there are no capabilities for test targets, so if you're trying to write to the keychain in a unit test/test target... you'll get this issue too. Any ideas for fixing that?

@phatmann
Copy link

As long as there is an Entitlements file, the simulator will work correctly. You do not need to enable Keychain Sharing (but toggling it on and off creates the entitlements file).

@xilin
Copy link

xilin commented Sep 20, 2016

So that explain why my app works well without enabling Keychain Sharing.

2016-09-20 3:36 GMT+08:00 phatmann notifications@github.com:

As long as there is an Entitlements file, the simulator will work
correctly. You do not need to enable Keychain Sharing (but toggling it on
and off creates the entitlements file).


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#52 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAhKo4zTakdCa8yL-yIm2Pa9NJ7gY9_pks5qruQlgaJpZM4BRXw1
.

@mistdon
Copy link

mistdon commented Oct 17, 2016

Following....

@sasikiran
Copy link

From the Xcode 8.1 GM release notes, this is mentioned under Known Issues

Keychain APIs may fail to work in the Simulator if your entitlements file doesn’t contain a value for the application-identifier entitlement. (28338972)
Workaround: Add a user-defined build setting to your target named ENTITLEMENTS_REQUIRED and set the value to YES. This will cause Xcode to automatically insert an application-identifier entitlement when building.

@timbroder
Copy link

following...

@shaneowens
Copy link

Following

@hryamzik
Copy link

Getting the same on Mac OS but not sure if I'm doing it right.

        SAMKeychainQuery *q = [SAMKeychainQuery new];
        q.synchronizationMode = SAMKeychainQuerySynchronizationModeYes;
        q.service = @"myService";
        q.account = @"myAccount";
        q.password = @"pass";
        NSError* error = nil;
        [q save:&error];
        if (error != nil) {
            NSLog(@"Err: %@", [error localizedDescription]);
        }

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests