MCPcopy Create free account
hub / github.com/OpenPrinting/cups / httpLoadCredentials

Function httpLoadCredentials

cups/tls-darwin.c:914–1022  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

912 */
913
914int /* O - 0 on success, -1 on error */
915httpLoadCredentials(
916 const char *path, /* I - Keychain path or @code NULL@ for default */
917 cups_array_t **credentials, /* IO - Credentials */
918 const char *common_name) /* I - Common name for credentials */
919{
920 OSStatus err; /* Error info */
921#if TARGET_OS_OSX
922 char filename[1024]; /* Filename for keychain */
923 SecKeychainRef keychain = NULL,/* Keychain reference */
924 syschain = NULL;/* System keychain */
925 CFArrayRef list; /* Keychain list */
926#endif /* TARGET_OS_OSX */
927 SecCertificateRef cert = NULL; /* Certificate */
928 CFDataRef data; /* Certificate data */
929 SecPolicyRef policy = NULL; /* Policy ref */
930 CFStringRef cfcommon_name = NULL;
931 /* Server name */
932 CFMutableDictionaryRef query = NULL; /* Query qualifiers */
933
934
935 DEBUG_printf(("httpLoadCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, (void *)credentials, common_name));
936
937 if (!credentials)
938 return (-1);
939
940 *credentials = NULL;
941
942#if TARGET_OS_OSX
943 keychain = http_cdsa_open_keychain(path, filename, sizeof(filename));
944
945 if (!keychain)
946 goto cleanup;
947
948 syschain = http_cdsa_open_system_keychain();
949
950#else
951 if (path)
952 return (-1);
953#endif /* TARGET_OS_OSX */
954
955 cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
956
957 policy = SecPolicyCreateSSL(1, cfcommon_name);
958
959 if (cfcommon_name)
960 CFRelease(cfcommon_name);
961
962 if (!policy)
963 goto cleanup;
964
965 if (!(query = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)))
966 goto cleanup;
967
968 CFDictionaryAddValue(query, kSecClass, kSecClassCertificate);
969 CFDictionaryAddValue(query, kSecMatchPolicy, policy);
970 CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
971 CFDictionaryAddValue(query, kSecMatchLimit, kSecMatchLimitOne);

Callers 1

httpCredentialsGetTrustFunction · 0.70

Calls 4

http_cdsa_open_keychainFunction · 0.85
cupsArrayNewFunction · 0.85
httpAddCredentialFunction · 0.85

Tested by

no test coverage detected