diff options
author | Andrew Bartlett <abartlet@samba.org> | 2010-08-10 08:25:02 +1000 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2010-08-13 09:08:27 -0400 |
commit | 71d80e6be0687ac7c2f3caab5e7b8caf400fe37e (patch) | |
tree | a30d558e704bac324809908c55a93bc17cb0c436 /source3/libads | |
parent | fff6fa72ffa7890cee516bd7e65b50bdb8daf51d (diff) | |
download | samba-71d80e6be0687ac7c2f3caab5e7b8caf400fe37e.tar.gz samba-71d80e6be0687ac7c2f3caab5e7b8caf400fe37e.tar.bz2 samba-71d80e6be0687ac7c2f3caab5e7b8caf400fe37e.zip |
s3-krb5 Only build ADS support if arcfour-hmac-md5 is available
Modern Kerberos implementations have either defines or enums for these
key types, which makes doing #ifdef difficult. This shows up in files
such as libnet_samsync_keytab.c, the bulk of which is not compiled on
current Fedora 12, for example.
The downside is that this makes Samba unconditionally depend on the
arcfour-hmac-md5 encryption type at build time. We will no longer
support libraries that only support the DES based encryption types.
However, the single-DES types that are supported in common with AD are
already painfully weak - so much so that they are disabled by default
in modern Kerberos libraries.
If not found, ADS support will not be compiled in.
This means that our 'net ads join' will no longer set the
ACB_USE_DES_KEY_ONLY flag, and we will always try to use
arcfour-hmac-md5.
A future improvement would be to remove the use of the DES encryption
types totally, but this would require that any ACB_USE_DES_KEY_ONLY
flag be removed from existing joins.
Andrew Bartlett
Signed-off-by: Simo Sorce <idra@samba.org>
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/kerberos_keytab.c | 9 | ||||
-rw-r--r-- | source3/libads/kerberos_verify.c | 2 |
2 files changed, 4 insertions, 7 deletions
diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c index a874901caf..386ce83ea7 100644 --- a/source3/libads/kerberos_keytab.c +++ b/source3/libads/kerberos_keytab.c @@ -236,17 +236,16 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc) krb5_keytab keytab = NULL; krb5_data password; krb5_kvno kvno; - krb5_enctype enctypes[4] = { ENCTYPE_DES_CBC_CRC, ENCTYPE_DES_CBC_MD5, 0, 0 }; + krb5_enctype enctypes[4] = { ENCTYPE_DES_CBC_CRC, + ENCTYPE_DES_CBC_MD5, + ENCTYPE_ARCFOUR_HMAC, + 0 }; char *princ_s = NULL, *short_princ_s = NULL; char *password_s = NULL; char *my_fqdn; TALLOC_CTX *ctx = NULL; char *machine_name; -#if defined(ENCTYPE_ARCFOUR_HMAC) - enctypes[2] = ENCTYPE_ARCFOUR_HMAC; -#endif - initialize_krb5_error_table(); ret = krb5_init_context(&context); if (ret) { diff --git a/source3/libads/kerberos_verify.c b/source3/libads/kerberos_verify.c index 887dac0502..7eda7fd8dd 100644 --- a/source3/libads/kerberos_verify.c +++ b/source3/libads/kerberos_verify.c @@ -344,9 +344,7 @@ static krb5_error_code ads_secrets_verify_ticket(krb5_context context, /* Let's make some room for 2 password (old and new)*/ krb5_data passwords[2]; krb5_enctype enctypes[] = { -#if defined(ENCTYPE_ARCFOUR_HMAC) ENCTYPE_ARCFOUR_HMAC, -#endif ENCTYPE_DES_CBC_CRC, ENCTYPE_DES_CBC_MD5, ENCTYPE_NULL |