I attempted to build the MacPorts textmate2 port, originally for 2.0-alpha.9537, and got an "unknown signee" error during configure when it attempted to download the bundles.
I reported it on MacPorts Trac: https://trac.macports.org/ticket/43466. That ticket contains the steps I took and also now contains what I did to get the build to work.
My problem seems very similar to http://lists.macromates.com/textmate/2013-February/035922.html http://textmate.1073791.n5.nabble.com/Unknown-signee-errors-td25943.html and http://permalink.gmane.org/gmane.os.apple.macports.tickets/68860
I think that there might be a couple of issues in key_chain.cc.
In file key_chain.cc, the line
if(err = SecItemImport(data, NULL, &type, &format, 0, ¶ms, NULL, &items) == errSecSuccess)
causes variable err to be set to the result of the logical expression, whereas the intent is to set it to the return value of SecItemImport. Needs either parentheses or splitting into an assignment and an if(). I chose the latter as in the diff output below.
Also, the documentation for SecItemImport (at https://developer.apple.com/library/mac/documentation/security/Reference/key...) shows that the sequence of parameters &type and &format is wrong. I reversed them.
These changes didn't fix the problem but at least showed that SecItemImport was returning errSecAddinLoadFailed. On a hunch, I changed both &type and &format to pass the "unknown" enum and that fixed the problem.
I've included below the diff of the resulting changes, with a long comment added explaining that I didn't investigate whether both &type and &format needed to be changed or just one. If I had to guess, I'd say it was &format.
I have no idea why this was a problem for me and not for others.
The diff:
*** /tmp/key_chain.cc 2014-06-12 15:55:45.000000000 +1000 --- /tmp/key_chain.cc_orig 2014-06-12 15:55:45.000000000 +1000 *************** *** 31,56 **** bool res = false;
SecItemImportExportKeyParameters params = { .keyUsage = NULL, .keyAttributes = NULL }; ! /***************************************************** ! /* Specifying the expected Item Type and Format ! * caused SecItemImport to return ! * errSecAddinLoadFailed. ! * I didn't check whether it was due to both being ! * specified or just one. Setting to the Unknown enum ! * worked. ! * Original code on next two comment lines. ! /* SecExternalItemType type = kSecItemTypePublicKey; ! /* SecExternalFormat format = kSecFormatPEMSequence; ! * Updated code with both vars set to unknown on next ! * two lines. */ ! SecExternalFormat format = kSecFormatUnknown; ! SecExternalItemType type = kSecItemTypeUnknown;
CFDataRef data = CFDataCreateWithBytesNoCopy(NULL, (const UInt8*)_key_data.data(), _key_data.size(), kCFAllocatorNull); CFArrayRef items = NULL; OSStatus err; ! err = SecItemImport(data, NULL, &format, &type, 0, ¶ms, NULL, &items); ! if(err == errSecSuccess) { _sec_key = (SecKeyRef)CFArrayGetValueAtIndex(items, 0); if(_sec_key != NULL) --- 31,43 ---- bool res = false;
SecItemImportExportKeyParameters params = { .keyUsage = NULL, .keyAttributes = NULL }; ! SecExternalItemType type = kSecItemTypePublicKey; ! SecExternalFormat format = kSecFormatPEMSequence;
CFDataRef data = CFDataCreateWithBytesNoCopy(NULL, (const UInt8*)_key_data.data(), _key_data.size(), kCFAllocatorNull); CFArrayRef items = NULL; OSStatus err; ! if(err = SecItemImport(data, NULL, &type, &format, 0, ¶ms, NULL, &items) == errSecSuccess) { _sec_key = (SecKeyRef)CFArrayGetValueAtIndex(items, 0); if(_sec_key != NULL)
regards - David