[vlc-commits] keychain: store the authtype
Thomas Guillem
git at videolan.org
Thu Nov 14 15:24:06 CET 2019
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Oct 31 15:32:08 2019 +0100| [7ea67ca1f03feec859a7bae0e72584e20c68554e] | committer: Thomas Guillem
keychain: store the authtype
Needed for the test_modules_keystore success.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7ea67ca1f03feec859a7bae0e72584e20c68554e
---
modules/keystore/keychain.m | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/modules/keystore/keychain.m b/modules/keystore/keychain.m
index e788755b0c..6afd11a8df 100644
--- a/modules/keystore/keychain.m
+++ b/modules/keystore/keychain.m
@@ -230,6 +230,7 @@ static int SetAttributesForQuery(const char *const ppsz_values[KEY_MAX], NSMutab
const char *psz_path = ppsz_values[KEY_PATH];
const char *psz_port = ppsz_values[KEY_PORT];
const char *psz_realm = ppsz_values[KEY_REALM];
+ const char *psz_authtype = ppsz_values[KEY_AUTHTYPE];
if (psz_label) {
[query setObject:[NSString stringWithUTF8String:psz_label] forKey:(__bridge id)kSecAttrLabel];
@@ -268,6 +269,23 @@ static int SetAttributesForQuery(const char *const ppsz_values[KEY_MAX], NSMutab
if (psz_realm) {
[query setObject:[NSString stringWithUTF8String:psz_realm] forKey:(__bridge id)kSecAttrSecurityDomain];
}
+ if (psz_authtype) {
+ if (strncasecmp(psz_protocol, "http", 4) == 0) {
+ const struct vlc2secattr tab[] =
+ { /* /!\ Alphabetical order /!\ */
+ { "Basic", kSecAttrAuthenticationTypeHTTPBasic },
+ { "Digest", kSecAttrAuthenticationTypeHTTPDigest },
+ };
+ const struct vlc2secattr *entry =
+ bsearch(psz_authtype, tab, ARRAY_SIZE(tab), sizeof(tab[0]), vlc2secattr_cmp);
+ if (entry)
+ [query setObject:(__bridge id)entry->secattr forKey:(__bridge id)kSecAttrAuthenticationType];
+ }
+ else if (strcasecmp(psz_protocol, "smb") == 0) {
+ if (strcmp(psz_authtype, "2") == 0)
+ [query setObject:(__bridge id)kSecAttrAuthenticationTypeMSN forKey:(__bridge id)kSecAttrAuthenticationType];
+ }
+ }
return VLC_SUCCESS;
}
@@ -322,6 +340,29 @@ static int FillEntryValues(const NSDictionary *item, char *ppsz_values[KEY_MAX])
return VLC_ENOMEM;
}
+ const char *auth_val = NULL;
+ if ([protocol isEqualToString:(__bridge NSString*)kSecAttrProtocolHTTP]
+ || [protocol isEqualToString:(__bridge NSString*)kSecAttrProtocolHTTPS])
+ {
+ id authtype = [item objectForKey:(__bridge id)kSecAttrAuthenticationType];
+ if (authtype == (__bridge id)kSecAttrAuthenticationTypeHTTPBasic)
+ auth_val = "Basic";
+ else if (authtype == (__bridge id)kSecAttrAuthenticationTypeHTTPDigest)
+ auth_val = "Digest";
+ }
+ else if ([protocol isEqualToString:(__bridge NSString*)kSecAttrProtocolSMB])
+ {
+ id keytype = [item objectForKey:(__bridge id)kSecAttrAuthenticationType];
+ if (keytype == (__bridge id)kSecAttrAuthenticationTypeMSN)
+ auth_val = "2";
+ }
+ if (auth_val)
+ {
+ ppsz_values[KEY_AUTHTYPE] = strdup(auth_val);
+ if (!ppsz_values[KEY_AUTHTYPE])
+ return VLC_ENOMEM;
+ }
+
return VLC_SUCCESS;
}
More information about the vlc-commits
mailing list