- /* Check prefs dict for local responder info */
- Dictionary *prefsDict = NULL;
- try { /* per-user prefs */
- prefsDict = Dictionary::CreateDictionary(kSecRevocationDomain, Dictionary::US_User, true);
- if (!prefsDict->dict()) {
- delete prefsDict;
- prefsDict = NULL;
- }
- }
- catch(...) {}
- if(prefsDict == NULL) {
- try { /* system prefs */
- prefsDict = Dictionary::CreateDictionary(kSecRevocationDomain, Dictionary::US_System, true);
- if (!prefsDict->dict()) {
- delete prefsDict;
- prefsDict = NULL;
- }
- }
- catch(...) {}
- }
- if(prefsDict != NULL) {
- CFStringRef val = prefsDict->getStringValue(kSecOCSPLocalResponder);
- if(val != NULL) {
- CFDataRef cfData = CFStringCreateExternalRepresentation(NULL,
- val, kCFStringEncodingUTF8, 0);
- CFIndex len = CFDataGetLength(cfData);
- opts.LocalResponder = (CSSM_DATA_PTR)alloc.malloc(sizeof(CSSM_DATA));
- opts.LocalResponder->Data = (uint8 *)alloc.malloc(len);
- opts.LocalResponder->Length = len;
- memmove(opts.LocalResponder->Data, CFDataGetBytePtr(cfData), len);
- CFRelease(cfData);
- }
- }
-