Post not yet marked as solved
I have seen the same issue in my app. Did you solve the problem?
Post not yet marked as solved
I added a log ("Handle my test intent") in handle() function and debug into it, I found the system Intent error printed on the console after completion(response) is called.2018-10-04 15:21:37.573902-0400 SiriExtension[2260:423149] Handle my test intent2018-10-04 15:21:37.623309-0400 SiriExtension[2260:423150] [Intents] -[INCache cacheableObjectForIdentifier:] Unable to find cacheable object with identifier 2117FABE-0F3A-42E7-830C-34DFD214E55E in cache.
Post not yet marked as solved
I also found although Siri audio feedback doesn't work, but if I use search to trigger the shortcut, it displays my response string. So looks like just Siri has problem to retrieve the response or read the response?
Post not yet marked as solved
I have the exactly same problem as you. I created a small project with Swift to add custom intent and intent extension, everything works fine. Siri reads the response string from .intentdefinition file. When I add custom intent and intent extesion to an existing project, Siri doesn't read my response string. Since the existing project is using objective-c, I also tried adding intent extension with Swift, but nothing helps. I compare the project settings, info.plist and provisioning profile, don't see anything could cause the problem. Even moving the code from the working project into my existing project, no difference. I then created another new project with custom intent, and it works too. It makes me thinking that my existing project may have some settings cause the problem...
Post not yet marked as solved
I looked at open source of StaticCode API in security framework. It looks like the flags kSecCSConsiderExpiration and kSecCodeSignatureForceExpiration are both considered for expiration check.void SecStaticCode::validateDirectory(){ ... mValidationExpired = verifySignature(); ...#if TARGET_OS_OSX if (mValidationResult == errSecSuccess) { if (mValidationExpired) if ((mValidationFlags & kSecCSConsiderExpiration) || (codeDirectory()->flags & kSecCodeSignatureForceExpiration)) MacOSError::throwMe(CSSMERR_TP_CERT_EXPIRED); } else MacOSError::throwMe(mValidationResult);#endif}bool SecStaticCode::verifySignature(){ ... MacOSError::check(SecTrustGetCssmResultCode(mTrust, &result)); // if we have a valid timestamp, CMS validates against (that) signing time and all is well. // If we don't have one, may validate against *now*, and must be able to tolerate expiration. if (mSigningTimestamp == 0) { // no timestamp available if (((result == CSSMERR_TP_CERT_EXPIRED) || (result == CSSMERR_TP_CERT_NOT_VALID_YET)) && !(actionData.ActionFlags & CSSM_TP_ACTION_ALLOW_EXPIRED)) { CODESIGN_EVAL_STATIC_SIGNATURE_EXPIRED(this); actionData.ActionFlags |= CSSM_TP_ACTION_ALLOW_EXPIRED; // (this also allows postdated certs) continue; // retry validation while tolerating expiration } } Security::Syslog::error("SecStaticCode: verification failed (trust result %d, error %d)", trustResult, (int)result); MacOSError::throwMe(result); .... return actionData.ActionFlags & CSSM_TP_ACTION_ALLOW_EXPIRED;}I am not sure if I use the API SecStaticCodeCheckValidity correctly. Does it require specific SecRequirementRef for expiration checking?
Post not yet marked as solved
I tried SecItemUpdate which doesn't return error, but also doesn't make any effect on the key item since using SecItemCopyMatching to retrieve identity or key, or using key for signing doesn't prompt TouchID or password. I can also see the key in keychian -> Keys. But if I use SecKeyGeneratePair with with kSecAttrAccessControl to generate key pair, I don't see the key in keychain -> Keys