]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Remove Kerberos v4 support vestiges from ccapi 913/head
authorRobbie Harwood <rharwood@redhat.com>
Thu, 4 Apr 2019 18:37:38 +0000 (14:37 -0400)
committerGreg Hudson <ghudson@mit.edu>
Thu, 11 Apr 2019 19:40:10 +0000 (15:40 -0400)
15 files changed:
src/ccapi/common/cci_cred_union.c
src/ccapi/lib/ccapi_v2.c
src/ccapi/lib/win/OldCC/ccapi.h
src/ccapi/server/ccs_ccache.c
src/ccapi/test/test_ccapi_ccache.c
src/ccapi/test/test_ccapi_constants.c
src/ccapi/test/test_ccapi_context.c
src/ccapi/test/test_ccapi_v2.c
src/include/CredentialsCache.h
src/include/CredentialsCache2.h
src/lib/krb5/ccache/ccapi/stdcc.c
src/lib/krb5/ccache/ccapi/stdcc_util.c
src/windows/kfwlogon/kfwlogon.h
src/windows/leashdll/leash-int.h
src/windows/lib/cacheapi.h

index 4c89816107718c4c90590c8105b238599d9cd27d..424a93dab33db46fa13bd852339293a2860e9b34 100644 (file)
 
 #include "cci_common.h"
 
-#ifdef TARGET_OS_MAC
-#pragma mark -
-#endif
-
-/* ------------------------------------------------------------------------ */
-
-static cc_uint32 cci_credentials_v4_release (cc_credentials_v4_t *io_v4creds)
-{
-    cc_int32 err = ccNoError;
-
-    if (!io_v4creds) { err = ccErrBadParam; }
-
-    if (!err) {
-        memset (io_v4creds, 0, sizeof (*io_v4creds));
-        free (io_v4creds);
-    }
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static cc_uint32 cci_credentials_v4_read (cc_credentials_v4_t **out_v4creds,
-                                          k5_ipc_stream          io_stream)
-{
-    cc_int32 err = ccNoError;
-    cc_credentials_v4_t *v4creds = NULL;
-
-    if (!io_stream  ) { err = cci_check_error (ccErrBadParam); }
-    if (!out_v4creds) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        v4creds = malloc (sizeof (*v4creds));
-        if (!v4creds) { err = cci_check_error (ccErrNoMem); }
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_uint32 (io_stream, &v4creds->version);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->principal, cc_v4_name_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->principal_instance, cc_v4_instance_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->service, cc_v4_name_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->service_instance, cc_v4_instance_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->realm, cc_v4_realm_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->session_key, cc_v4_key_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_int32 (io_stream, &v4creds->kvno);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_int32 (io_stream, &v4creds->string_to_key_type);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_time (io_stream, &v4creds->issue_date);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_int32 (io_stream, &v4creds->lifetime);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_uint32 (io_stream, &v4creds->address);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read_int32 (io_stream, &v4creds->ticket_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_read (io_stream, v4creds->ticket, cc_v4_ticket_size);
-    }
-
-    if (!err) {
-        *out_v4creds = v4creds;
-        v4creds = NULL;
-    }
-
-    free (v4creds);
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-static cc_uint32 cci_credentials_v4_write (cc_credentials_v4_t *in_v4creds,
-                                           k5_ipc_stream         io_stream)
-{
-    cc_int32 err = ccNoError;
-
-    if (!io_stream ) { err = cci_check_error (ccErrBadParam); }
-    if (!in_v4creds) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_uint32 (io_stream, in_v4creds->version);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->principal, cc_v4_name_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->principal_instance, cc_v4_instance_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->service, cc_v4_name_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->service_instance, cc_v4_instance_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->realm, cc_v4_realm_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->session_key, cc_v4_key_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_int32 (io_stream, in_v4creds->kvno);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_int32 (io_stream, in_v4creds->string_to_key_type);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_time (io_stream, in_v4creds->issue_date);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_int32 (io_stream, in_v4creds->lifetime);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_uint32 (io_stream, in_v4creds->address);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write_int32 (io_stream, in_v4creds->ticket_size);
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_write (io_stream, in_v4creds->ticket, cc_v4_ticket_size);
-    }
-
-    return cci_check_error (err);
-}
-
-#ifdef TARGET_OS_MAC
-#pragma mark -
-#endif
-
 /* ------------------------------------------------------------------------ */
 
 static cc_uint32 cci_cc_data_contents_release (cc_data *io_ccdata)
@@ -600,9 +425,7 @@ cc_uint32 cci_credentials_union_release (cc_credentials_union *io_cred_union)
     if (!io_cred_union) { err = ccErrBadParam; }
 
     if (!err) {
-        if (io_cred_union->version == cc_credentials_v4) {
-            cci_credentials_v4_release (io_cred_union->credentials.credentials_v4);
-        } else if (io_cred_union->version == cc_credentials_v5) {
+        if (io_cred_union->version == cc_credentials_v5) {
             cci_credentials_v5_release (io_cred_union->credentials.credentials_v5);
         }
         free (io_cred_union);
@@ -632,11 +455,7 @@ cc_uint32 cci_credentials_union_read (cc_credentials_union **out_credentials_uni
     }
 
     if (!err) {
-        if (credentials_union->version == cc_credentials_v4) {
-            err = cci_credentials_v4_read (&credentials_union->credentials.credentials_v4,
-                                           io_stream);
-
-        } else if (credentials_union->version == cc_credentials_v5) {
+        if (credentials_union->version == cc_credentials_v5) {
             err = cci_credentials_v5_read (&credentials_union->credentials.credentials_v5,
                                            io_stream);
 
@@ -671,11 +490,7 @@ cc_uint32 cci_credentials_union_write (const cc_credentials_union *in_credential
     }
 
     if (!err) {
-        if (in_credentials_union->version == cc_credentials_v4) {
-            err = cci_credentials_v4_write (in_credentials_union->credentials.credentials_v4,
-                                            io_stream);
-
-        } else if (in_credentials_union->version == cc_credentials_v5) {
+        if (in_credentials_union->version == cc_credentials_v5) {
             err = cci_credentials_v5_write (in_credentials_union->credentials.credentials_v5,
                                             io_stream);
 
@@ -714,11 +529,7 @@ cc_uint32 cci_cred_union_release (cred_union *io_cred_union)
     if (!io_cred_union) { err = ccErrBadParam; }
 
     if (!err) {
-        if (io_cred_union->cred_type == CC_CRED_V4) {
-            memset (io_cred_union->cred.pV4Cred, 0, sizeof (cc_credentials_v4_compat));
-            free (io_cred_union->cred.pV4Cred);
-
-        } else if (io_cred_union->cred_type == CC_CRED_V5) {
+        if (io_cred_union->cred_type == CC_CRED_V5) {
             free (io_cred_union->cred.pV5Cred->client);
             free (io_cred_union->cred.pV5Cred->server);
             cci_cc_data_contents_release (&io_cred_union->cred.pV5Cred->keyblock);
@@ -829,36 +640,7 @@ cc_uint32 cci_credentials_union_to_cred_union (const cc_credentials_union  *in_c
     }
 
     if (!err) {
-        if (in_credentials_union->version == cc_credentials_v4) {
-            cc_credentials_v4_compat *compat_v4creds = NULL;
-
-            compat_v4creds = malloc (sizeof (*compat_v4creds));
-            if (!compat_v4creds) { err = cci_check_error (ccErrNoMem); }
-
-            if (!err) {
-                cc_credentials_v4_t *v4creds = in_credentials_union->credentials.credentials_v4;
-
-                compat_cred_union->cred_type = CC_CRED_V4;
-                compat_cred_union->cred.pV4Cred = compat_v4creds;
-
-                compat_v4creds->kversion = v4creds->version;
-                strncpy (compat_v4creds->principal,          v4creds->principal,          KRB_NAME_SZ+1);
-                strncpy (compat_v4creds->principal_instance, v4creds->principal_instance, KRB_INSTANCE_SZ+1);
-                strncpy (compat_v4creds->service,            v4creds->service,            KRB_NAME_SZ+1);
-                strncpy (compat_v4creds->service_instance,   v4creds->service_instance,   KRB_INSTANCE_SZ+1);
-                strncpy (compat_v4creds->realm,              v4creds->realm,              KRB_REALM_SZ+1);
-                memcpy (compat_v4creds->session_key, v4creds->session_key, 8);
-                compat_v4creds->kvno       = v4creds->kvno;
-                compat_v4creds->str_to_key = v4creds->string_to_key_type;
-                compat_v4creds->issue_date = v4creds->issue_date;
-                compat_v4creds->lifetime   = v4creds->lifetime;
-                compat_v4creds->address    = v4creds->address;
-                compat_v4creds->ticket_sz  = v4creds->ticket_size;
-                memcpy (compat_v4creds->ticket, v4creds->ticket, MAX_V4_CRED_LEN);
-                compat_v4creds->oops = 0;
-            }
-
-        } else if (in_credentials_union->version == cc_credentials_v5) {
+        if (in_credentials_union->version == cc_credentials_v5) {
             cc_credentials_v5_t *v5creds = in_credentials_union->credentials.credentials_v5;
             cc_credentials_v5_compat *compat_v5creds = NULL;
 
@@ -951,36 +733,7 @@ cc_uint32 cci_cred_union_to_credentials_union (const cred_union      *in_cred_un
     }
 
     if (!err) {
-        if (in_cred_union->cred_type == CC_CRED_V4) {
-            cc_credentials_v4_compat *compat_v4creds = in_cred_union->cred.pV4Cred;
-            cc_credentials_v4_t *v4creds = NULL;
-
-            if (!err) {
-                v4creds = malloc (sizeof (*v4creds));
-                if (!v4creds) { err = cci_check_error (ccErrNoMem); }
-            }
-
-            if (!err) {
-                creds_union->version = cc_credentials_v4;
-                creds_union->credentials.credentials_v4 = v4creds;
-
-                v4creds->version = compat_v4creds->kversion;
-                strncpy (v4creds->principal,          compat_v4creds->principal,          KRB_NAME_SZ);
-                strncpy (v4creds->principal_instance, compat_v4creds->principal_instance, KRB_INSTANCE_SZ);
-                strncpy (v4creds->service,            compat_v4creds->service,            KRB_NAME_SZ);
-                strncpy (v4creds->service_instance,   compat_v4creds->service_instance,   KRB_INSTANCE_SZ);
-                strncpy (v4creds->realm,              compat_v4creds->realm,              KRB_REALM_SZ);
-                memcpy (v4creds->session_key, compat_v4creds->session_key, 8);
-                v4creds->kvno               = compat_v4creds->kvno;
-                v4creds->string_to_key_type = compat_v4creds->str_to_key;
-                v4creds->issue_date         = compat_v4creds->issue_date;
-                v4creds->lifetime           = compat_v4creds->lifetime;
-                v4creds->address            = compat_v4creds->address;
-                v4creds->ticket_size        = compat_v4creds->ticket_sz;
-                memcpy (v4creds->ticket, compat_v4creds->ticket, MAX_V4_CRED_LEN);
-            }
-
-        } else if (in_cred_union->cred_type == CC_CRED_V5) {
+        if (in_cred_union->cred_type == CC_CRED_V5) {
             cc_credentials_v5_compat *compat_v5creds = in_cred_union->cred.pV5Cred;
             cc_credentials_v5_t *v5creds = NULL;
 
@@ -1072,26 +825,7 @@ cc_uint32 cci_cred_union_compare_to_credentials_union (const cred_union
     if (!out_equal           ) { err = cci_check_error (ccErrBadParam); }
 
     if (!err) {
-        if (in_cred_union_compat->cred_type == CC_CRED_V4 &&
-            in_credentials_union->version == cc_credentials_v4) {
-            cc_credentials_v4_compat *old_creds_v4 = in_cred_union_compat->cred.pV4Cred;
-            cc_credentials_v4_t *new_creds_v4 = in_credentials_union->credentials.credentials_v4;
-
-            if (old_creds_v4 && new_creds_v4 &&
-                !strcmp (old_creds_v4->principal,
-                         new_creds_v4->principal) &&
-                !strcmp (old_creds_v4->principal_instance,
-                         new_creds_v4->principal_instance) &&
-                !strcmp (old_creds_v4->service,
-                         new_creds_v4->service) &&
-                !strcmp (old_creds_v4->service_instance,
-                         new_creds_v4->service_instance) &&
-                !strcmp (old_creds_v4->realm, new_creds_v4->realm) &&
-                (old_creds_v4->issue_date == (long) new_creds_v4->issue_date)) {
-                equal = 1;
-            }
-
-        } else if (in_cred_union_compat->cred_type == CC_CRED_V5 &&
+        if (in_cred_union_compat->cred_type == CC_CRED_V5 &&
                    in_credentials_union->version == cc_credentials_v5) {
             cc_credentials_v5_compat *old_creds_v5 = in_cred_union_compat->cred.pV5Cred;
             cc_credentials_v5_t *new_creds_v5 = in_credentials_union->credentials.credentials_v5;
index 8a831d796abb819904915eca333e9a037b6dfc86..ae9b790b0c9e3dfadabda9462832a6326622c8f5 100644 (file)
@@ -44,10 +44,7 @@ static cc_int32 cci_remap_version (cc_int32   in_v2_version,
     if (!out_v3_version) { err = cci_check_error (ccErrBadParam); }
 
     if (!err) {
-        if (in_v2_version == CC_CRED_V4) {
-            *out_v3_version = cc_credentials_v4;
-
-        } else if (in_v2_version == CC_CRED_V5) {
+        if (in_v2_version == CC_CRED_V5) {
             *out_v3_version = cc_credentials_v5;
 
         } else {
@@ -450,10 +447,7 @@ cc_result cc_get_cred_version (apiCB    *in_context,
     }
 
     if (!err) {
-        if (compat_version == cc_credentials_v4) {
-            *out_version = CC_CRED_V4;
-
-        } else if (compat_version == cc_credentials_v5) {
+        if (compat_version == cc_credentials_v5) {
             *out_version = CC_CRED_V5;
 
         } else {
@@ -642,10 +636,6 @@ cc_result cc_seq_fetch_NCs_next (apiCB       *in_context,
     if (!out_ccache ) { err = cci_check_error (ccErrBadParam); }
     if (!in_iterator) { err = cci_check_error (ccErrBadParam); }
 
-    /* CCache iterators need to return some ccaches twice (when v3 ccache has
-     * two kinds of credentials). To do that, we return such ccaches twice
-     * v4 first, then v5. */
-
     if (!err) {
         err = cci_ccache_iterator_get_saved_ccache_name (iterator,
                                                          &saved_ccache_name);
@@ -674,25 +664,7 @@ cc_result cc_seq_fetch_NCs_next (apiCB       *in_context,
             }
 
             if (!err) {
-                if (version == cc_credentials_v4_v5) {
-                    cc_string_t name = NULL;
-
-                    err = cci_ccache_set_compat_version (ccache, cc_credentials_v4);
-
-                    if (!err) {
-                        err = ccapi_ccache_get_name (ccache, &name);
-                    }
-
-                    if (!err) {
-                        err = cci_ccache_iterator_set_saved_ccache_name (iterator,
-                                                                         name->data);
-                    }
-
-                    if (name) { ccapi_string_release (name); }
-
-                } else {
-                    err = cci_ccache_set_compat_version (ccache, version);
-                }
+                err = cci_ccache_set_compat_version (ccache, version);
             }
         }
     }
index 82512771a85e94f2f941d957dd0f007b1a2fa8cd..4d6f3faaf1bc0990479511e2f9237847a4ea974f 100644 (file)
@@ -80,7 +80,6 @@ enum __MIDL_ccapi_0003
     {  KRB_NAME_SZ     = 40,
        KRB_INSTANCE_SZ = 40,
        KRB_REALM_SZ    = 40,
-       MAX_V4_CRED_LEN = 1250
     } ;
 typedef struct _NC_INFO
     {
@@ -95,24 +94,6 @@ typedef struct _NC_INFO_LIST
     /* [size_is] */ NC_INFO *info;
     }  NC_INFO_LIST;
 
-typedef struct _V4_CRED
-    {
-    CC_UCHAR kversion;
-    CC_CHAR principal[ 41 ];
-    CC_CHAR principal_instance[ 41 ];
-    CC_CHAR service[ 41 ];
-    CC_CHAR service_instance[ 41 ];
-    CC_CHAR realm[ 41 ];
-    CC_UCHAR session_key[ 8 ];
-    CC_INT32 kvno;
-    CC_INT32 str_to_key;
-    CC_INT32 issue_date;
-    CC_INT32 lifetime;
-    CC_UINT32 address;
-    CC_INT32 ticket_sz;
-    CC_UCHAR ticket[ 1250 ];
-    }  V4_CRED;
-
 typedef struct _CC_DATA
     {
     CC_UINT32 type;
@@ -145,7 +126,6 @@ typedef struct _V5_CRED
 
 typedef /* [switch_type] */ union _CRED_PTR_UNION
     {
-    /* [case()] */ V4_CRED *pV4Cred;
     /* [case()] */ V5_CRED *pV5Cred;
     }  CRED_PTR_UNION;
 
index 65c59e4be8e671173327bbfdd150774e8d809cda..645380a7b50d08b328ee9f9272bb9a3e968863b5 100644 (file)
@@ -31,19 +31,16 @@ struct ccs_ccache_d {
     ccs_lock_state_t lock_state;
     cc_uint32 creds_version;
     char *name;
-    char *v4_principal;
     char *v5_principal;
     cc_time_t last_default_time;
     cc_time_t last_changed_time;
-    cc_uint32 kdc_time_offset_v4_valid;
-    cc_time_t kdc_time_offset_v4;
     cc_uint32 kdc_time_offset_v5_valid;
     cc_time_t kdc_time_offset_v5;
     ccs_credentials_list_t credentials;
     ccs_callback_array_t change_callbacks;
 };
 
-struct ccs_ccache_d ccs_ccache_initializer = { NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, NULL };
+struct ccs_ccache_d ccs_ccache_initializer = { NULL, NULL, 0, NULL, NULL, 0, 0, 0, 0, NULL, NULL };
 
 /* ------------------------------------------------------------------------ */
 
@@ -88,11 +85,7 @@ cc_int32 ccs_ccache_new (ccs_ccache_t      *out_ccache,
     if (!err) {
         ccache->creds_version = in_creds_version;
 
-        if (ccache->creds_version == cc_credentials_v4) {
-            ccache->v4_principal = strdup (in_principal);
-            if (!ccache->v4_principal) { err = cci_check_error (ccErrNoMem); }
-
-        } else if (ccache->creds_version == cc_credentials_v5) {
+        if (ccache->creds_version == cc_credentials_v5) {
             ccache->v5_principal = strdup (in_principal);
             if (!ccache->v5_principal) { err = cci_check_error (ccErrNoMem); }
 
@@ -147,7 +140,6 @@ cc_int32 ccs_ccache_reset (ccs_ccache_t            io_ccache,
                            const char             *in_principal)
 {
     cc_int32 err = ccNoError;
-    char *v4_principal = NULL;
     char *v5_principal = NULL;
     ccs_credentials_list_t credentials = NULL;
 
@@ -158,11 +150,7 @@ cc_int32 ccs_ccache_reset (ccs_ccache_t            io_ccache,
     if (!err) {
         io_ccache->creds_version = in_creds_version;
 
-        if (io_ccache->creds_version == cc_credentials_v4) {
-            v4_principal = strdup (in_principal);
-            if (!v4_principal) { err = cci_check_error (ccErrNoMem); }
-
-        } else if (io_ccache->creds_version == cc_credentials_v5) {
+        if (io_ccache->creds_version == cc_credentials_v5) {
             v5_principal = strdup (in_principal);
             if (!v5_principal) { err = cci_check_error (ccErrNoMem); }
 
@@ -176,15 +164,9 @@ cc_int32 ccs_ccache_reset (ccs_ccache_t            io_ccache,
     }
 
     if (!err) {
-        io_ccache->kdc_time_offset_v4 = 0;
-        io_ccache->kdc_time_offset_v4_valid = 0;
         io_ccache->kdc_time_offset_v5 = 0;
         io_ccache->kdc_time_offset_v5_valid = 0;
 
-        if (io_ccache->v4_principal) { free (io_ccache->v4_principal); }
-        io_ccache->v4_principal = v4_principal;
-        v4_principal = NULL; /* take ownership */
-
         if (io_ccache->v5_principal) { free (io_ccache->v5_principal); }
         io_ccache->v5_principal = v5_principal;
         v5_principal = NULL; /* take ownership */
@@ -196,7 +178,6 @@ cc_int32 ccs_ccache_reset (ccs_ccache_t            io_ccache,
        err = ccs_ccache_changed (io_ccache, io_cache_collection);
     }
 
-    free (v4_principal);
     free (v5_principal);
     ccs_credentials_list_release (credentials);
 
@@ -250,7 +231,6 @@ cc_int32 ccs_ccache_release (ccs_ccache_t io_ccache)
         cci_identifier_release (io_ccache->identifier);
         ccs_lock_state_release (io_ccache->lock_state);
         free (io_ccache->name);
-        free (io_ccache->v4_principal);
         free (io_ccache->v5_principal);
         ccs_credentials_list_release (io_ccache->credentials);
         ccs_callback_array_release (io_ccache->change_callbacks);
@@ -607,15 +587,8 @@ static cc_int32 ccs_ccache_get_principal (ccs_ccache_t           io_ccache,
         err = krb5int_ipc_stream_read_uint32 (in_request_data, &version);
     }
 
-    if (!err && version == cc_credentials_v4_v5) {
-        err = cci_check_error (ccErrBadCredentialsVersion);
-    }
-
     if (!err) {
-        if (version == cc_credentials_v4) {
-            err = krb5int_ipc_stream_write_string (io_reply_data, io_ccache->v4_principal);
-
-        } else if (version == cc_credentials_v5) {
+        if (version == cc_credentials_v5) {
             err = krb5int_ipc_stream_write_string (io_reply_data, io_ccache->v5_principal);
 
         } else {
@@ -652,16 +625,7 @@ static cc_int32 ccs_ccache_set_principal (ccs_ccache_t           io_ccache,
 
     if (!err) {
         /* reset KDC time offsets because they are per-KDC */
-        if (version == cc_credentials_v4) {
-            io_ccache->kdc_time_offset_v4 = 0;
-            io_ccache->kdc_time_offset_v4_valid = 0;
-
-            if (io_ccache->v4_principal) { free (io_ccache->v4_principal); }
-            io_ccache->v4_principal = principal;
-            principal = NULL; /* take ownership */
-
-
-        } else if (version == cc_credentials_v5) {
+        if (version == cc_credentials_v5) {
             io_ccache->kdc_time_offset_v5 = 0;
             io_ccache->kdc_time_offset_v5_valid = 0;
 
@@ -998,14 +962,7 @@ static cc_int32 ccs_ccache_get_kdc_time_offset (ccs_ccache_t           io_ccache
     }
 
     if (!err) {
-        if (cred_vers == cc_credentials_v4) {
-            if (io_ccache->kdc_time_offset_v4_valid) {
-                err = krb5int_ipc_stream_write_time (io_reply_data, io_ccache->kdc_time_offset_v4);
-            } else {
-                err = cci_check_error (ccErrTimeOffsetNotSet);
-            }
-
-        } else if (cred_vers == cc_credentials_v5) {
+        if (cred_vers == cc_credentials_v5) {
             if (io_ccache->kdc_time_offset_v5_valid) {
                 err = krb5int_ipc_stream_write_time (io_reply_data, io_ccache->kdc_time_offset_v5);
             } else {
@@ -1040,13 +997,7 @@ static cc_int32 ccs_ccache_set_kdc_time_offset (ccs_ccache_t           io_ccache
     }
 
     if (!err) {
-        if (cred_vers == cc_credentials_v4) {
-            err = krb5int_ipc_stream_read_time (in_request_data, &io_ccache->kdc_time_offset_v4);
-
-            if (!err) {
-                io_ccache->kdc_time_offset_v4_valid = 1;
-            }
-        } else if (cred_vers == cc_credentials_v5) {
+        if (cred_vers == cc_credentials_v5) {
             err = krb5int_ipc_stream_read_time (in_request_data, &io_ccache->kdc_time_offset_v5);
 
             if (!err) {
@@ -1084,11 +1035,7 @@ static cc_int32 ccs_ccache_clear_kdc_time_offset (ccs_ccache_t           io_ccac
     }
 
     if (!err) {
-        if (cred_vers == cc_credentials_v4) {
-            io_ccache->kdc_time_offset_v4 = 0;
-            io_ccache->kdc_time_offset_v4_valid = 0;
-
-        } else if (cred_vers == cc_credentials_v5) {
+        if (cred_vers == cc_credentials_v5) {
             io_ccache->kdc_time_offset_v5 = 0;
             io_ccache->kdc_time_offset_v5_valid = 0;
 
index a0fd84af10b2258b22304c8e94dade8c7058e6ac..fe63e6710103ec0fb2b93abfbfefde5c094d1232 100644 (file)
@@ -303,18 +303,6 @@ int check_cc_ccache_get_credentials_version(void) {
                failure_count++;
        }
 
-       // try it with added v4 creds
-       if (!err) {
-               err = cc_ccache_set_principal(ccache, cc_credentials_v4, "foo@BAR.ORG");
-       }
-       if (!err) {
-               check_once_cc_ccache_get_credentials_version(ccache, cc_credentials_v4_v5, ccNoError, "v5 with v4 creds added");
-       }
-       else {
-               log_error("cc_ccache_set_principal failed, can't complete test");
-               failure_count++;
-       }
-
        if (ccache) {
                cc_ccache_destroy(ccache);
                ccache = NULL;
@@ -322,35 +310,6 @@ int check_cc_ccache_get_credentials_version(void) {
 
        err = ccNoError;
 
-       // try one created with v4 creds
-       if (!err) {
-               err = cc_context_create_new_ccache(context, cc_credentials_v4, "foo@BAR.ORG", &ccache);
-       }
-       if (!err) {
-               check_once_cc_ccache_get_credentials_version(ccache, cc_credentials_v4, ccNoError, "v4 creds");
-       }
-       else {
-               log_error("cc_context_create_new_ccache failed, can't complete test");
-               failure_count++;
-       }
-
-       // try it with added v5 creds
-       if (!err) {
-               err = cc_ccache_set_principal(ccache, cc_credentials_v5, "foo@BAR.ORG");
-       }
-       if (!err) {
-               check_once_cc_ccache_get_credentials_version(ccache, cc_credentials_v4_v5, ccNoError, "v4 with v5 creds added");
-       }
-       else {
-               log_error("cc_ccache_set_principal failed, can't complete test");
-               failure_count++;
-       }
-
-       if (ccache) {
-               cc_ccache_destroy(ccache);
-               ccache = NULL;
-       }
-
        if (context) { cc_context_release(context); }
 
        #endif /* cc_ccache_get_credentials_version */
@@ -582,31 +541,13 @@ int check_cc_ccache_get_principal(void) {
                log_error("cc_context_create_new_ccache failed, can't complete test");
                failure_count++;
        }
-       if (ccache) {
-               cc_ccache_release(ccache);
-               ccache = NULL;
-       }
 
-       // try with krb4 principal
-       if (!err) {
-               err = cc_context_create_new_ccache(context, cc_credentials_v4, "foo.BAR@BAZ.ORG", &ccache);
-       }
-       if (!err) {
-               check_once_cc_ccache_get_principal(ccache, cc_credentials_v4, "foo.BAR@BAZ.ORG", ccNoError, "trying to get krb4 princ for krb4 ccache");
-       }
-       else {
-               log_error("cc_context_create_new_ccache failed, can't complete test");
-               failure_count++;
-       }
-
-       // try with bad param
-       if (!err) {
-               // cc_ccache_t doesn't have any concept of the difference between a v4 and v5 principal
-               check_once_cc_ccache_get_principal(ccache, cc_credentials_v4_v5, "foo.BAR@BAZ.ORG",
-                       ccErrBadCredentialsVersion,
-                       "passing cc_credentials_v4_v5 (shouldn't be allowed)");
-               check_once_cc_ccache_get_principal(ccache, cc_credentials_v5, NULL, ccErrBadParam, "passed null out param");
-       }
+        // try with bad param
+        if (!err) {
+            check_once_cc_ccache_get_principal(ccache, cc_credentials_v5,
+                                               NULL, ccErrBadParam,
+                                               "passed null out param");
+        }
 
        if (ccache) {
                cc_ccache_release(ccache);
@@ -643,99 +584,33 @@ int check_cc_ccache_set_principal(void) {
                err = destroy_all_ccaches(context);
        }
 
-       // bad params
-       if (!err) {
-               err = cc_context_create_new_ccache(context, cc_credentials_v5, "foo@BAZ.ORG", &ccache);
-       }
-       if (!err) {
-               check_once_cc_ccache_set_principal(ccache, cc_credentials_v4_v5, "foo/BAZ@BAR.ORG", ccErrBadCredentialsVersion, "cc_credentials_v4_v5 (not allowed)");
-               check_once_cc_ccache_set_principal(ccache, cc_credentials_v5, NULL, ccErrBadParam, "NULL principal");
-       }
-       else {
-               log_error("cc_context_create_new_ccache failed, can't complete test");
-               failure_count++;
-       }
-       if (ccache) {
-               cc_ccache_destroy(ccache);
-               ccache = NULL;
-       }
-
-
-       // empty ccache
-
-               // replace v5 only ccache's principal
-               if (!err) {
-                       err = cc_context_create_new_ccache(context, cc_credentials_v5, "foo@BAZ.ORG", &ccache);
-               }
-               if (!err) {
-                       check_once_cc_ccache_set_principal(ccache, cc_credentials_v5, "foo/BAZ@BAR.ORG", ccNoError, "replace v5 only ccache's principal (empty ccache)");
-               }
-               else {
-                       log_error("cc_context_create_new_ccache failed, can't complete test");
-                       failure_count++;
-               }
-               if (ccache) {
-                       cc_ccache_destroy(ccache);
-                       ccache = NULL;
-               }
-
-               // add v4 principal to v5 only ccache
-               if (!err) {
-                       err = cc_context_create_new_ccache(context, cc_credentials_v5, "foo@BAZ.ORG", &ccache);
-               }
-               if (!err) {
-                       check_once_cc_ccache_set_principal(ccache, cc_credentials_v4, "foo.BAZ@BAR.ORG", ccNoError, "add v4 principal to v5 only ccache (empty ccache)");
-               }
-               else {
-                       log_error("cc_context_create_new_ccache failed, can't complete test");
-                       failure_count++;
-               }
-               if (ccache) {
-                       cc_ccache_destroy(ccache);
-                       ccache = NULL;
-               }
-
-               // replace v4 only ccache's principal
-               if (!err) {
-                       err = cc_context_create_new_ccache(context, cc_credentials_v4, "foo@BAZ.ORG", &ccache);
-               }
-               if (!err) {
-                       check_once_cc_ccache_set_principal(ccache, cc_credentials_v4, "foo.BAZ@BAR.ORG", ccNoError, "replace v4 only ccache's principal (empty ccache)");
-               }
-               else {
-                       log_error("cc_context_create_new_ccache failed, can't complete test");
-                       failure_count++;
-               }
-               if (ccache) {
-                       cc_ccache_destroy(ccache);
-                       ccache = NULL;
-               }
-
-               // add v5 principal to v4 only ccache
-               if (!err) {
-                       err = cc_context_create_new_ccache(context, cc_credentials_v4, "foo@BAZ.ORG", &ccache);
-               }
-               if (!err) {
-                       check_once_cc_ccache_set_principal(ccache, cc_credentials_v5, "foo/BAZ@BAR.ORG", ccNoError, "add v5 principal to v4 only ccache (empty ccache)");
-               }
-               else {
-                       log_error("cc_context_create_new_ccache failed, can't complete test");
-                       failure_count++;
-               }
-               if (ccache) {
-                       cc_ccache_destroy(ccache);
-                       ccache = NULL;
-               }
-
-       // with credentials
-
-               // replace v5 only ccache's principal
-
-               // add v4 principal to v5 only ccache
-
-               // replace v4 only ccache's principal
-
-               // add v5 principal to v4 only ccache
+        // replace v5 only ccache's principal
+        if (!err) {
+            err = cc_context_create_new_ccache(context, cc_credentials_v5,
+                                               "foo@BAZ.ORG", &ccache);
+        }
+        if (!err) {
+            check_once_cc_ccache_set_principal(
+                ccache, cc_credentials_v5, "foo/BAZ@BAR.ORG", ccNoError,
+                "replace v5 only ccache's principal (empty ccache)");
+        }
+        else {
+            log_error(
+                "cc_context_create_new_ccache failed, can't complete test");
+            failure_count++;
+        }
+
+        // bad params
+        if (!err) {
+            check_once_cc_ccache_set_principal(ccache, cc_credentials_v5,
+                                               NULL, ccErrBadParam,
+                                               "NULL principal");
+        }
+
+        if (ccache) {
+            cc_ccache_destroy(ccache);
+            ccache = NULL;
+        }
 
        if (context) {
                err = destroy_all_ccaches(context);
@@ -847,21 +722,6 @@ int check_cc_ccache_store_credentials(void) {
 
        if (&creds_union) { release_v5_creds_union(&creds_union); }
 
-       // bad creds version
-       if (!err) {
-               err = new_v5_creds_union(&creds_union, "BAR.ORG");
-       }
-
-       if (!err) {
-               creds_union.version = cc_credentials_v4_v5;
-               check_once_cc_ccache_store_credentials(ccache, &creds_union, ccErrBadCredentialsVersion, "v4_v5 creds (invalid) into a ccache with only v5 princ");
-               creds_union.version = cc_credentials_v4;
-               check_once_cc_ccache_store_credentials(ccache, &creds_union, ccErrBadCredentialsVersion, "v4 creds into a ccache with only v5 princ");
-               creds_union.version = cc_credentials_v5;
-       }
-
-       if (&creds_union) { release_v5_creds_union(&creds_union); }
-
        // non-existent ccache
        if (ccache) {
                err = cc_ccache_get_name(ccache, &name);
@@ -1809,21 +1669,10 @@ int check_cc_ccache_get_kdc_time_offset(void) {
                err = cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v5, time_offset);
        }
        if (!err) {
-               check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v5, &time_offset, ccNoError, "offset set for v5 but not v4");
-       }
-       if (!err) {
-               check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v4, &time_offset, ccErrTimeOffsetNotSet, "asking for v4 offset when only v5 is set");
-       }
-       if (!err) {
-               err = cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v4, time_offset);
-       }
-       if (!err) {
-               check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v4, &time_offset, ccNoError, "asking for v4 offset when v4 and v5 are set");
+               check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v5, &time_offset, ccNoError, "offset set for v5");
        }
 
-
        check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v5, NULL, ccErrBadParam, "NULL time_offset out param");
-       check_once_cc_ccache_get_kdc_time_offset(ccache, cc_credentials_v4_v5, &time_offset, ccErrBadCredentialsVersion, "v4_v5 creds_vers in param (invalid)");
 
        if (ccache) { cc_ccache_release(ccache); }
 
@@ -1900,9 +1749,6 @@ int check_cc_ccache_set_kdc_time_offset(void) {
        }
 
        check_once_cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v5, 0, ccNoError, "first time setting offset (v5)");
-       check_once_cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v4, 0, ccNoError, "first time setting offset (v4)");
-
-       check_once_cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v4_v5, 0, ccErrBadCredentialsVersion, "invalid creds_vers (v4_v5)");
 
        if (ccache) { cc_ccache_release(ccache); }
 
@@ -1978,15 +1824,10 @@ int check_cc_ccache_clear_kdc_time_offset(void) {
        }
 
        check_once_cc_ccache_clear_kdc_time_offset(ccache, cc_credentials_v5, ccNoError, "clearing an offset that was never set (v5)");
-       check_once_cc_ccache_clear_kdc_time_offset(ccache, cc_credentials_v4, ccNoError, "clearing an offset that was never set (v4)");
 
        err = cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v5, 0);
-       err = cc_ccache_set_kdc_time_offset(ccache, cc_credentials_v4, 0);
 
        check_once_cc_ccache_clear_kdc_time_offset(ccache, cc_credentials_v5, ccNoError, "clearing v5");
-       check_once_cc_ccache_clear_kdc_time_offset(ccache, cc_credentials_v4, ccNoError, "clearing v4");
-
-       check_once_cc_ccache_clear_kdc_time_offset(ccache, cc_credentials_v4_v5, ccErrBadCredentialsVersion, "bad in param creds vers (v4_v5)");
 
        if (ccache) { cc_ccache_release(ccache); }
 
index 9f2aecbc278e69a3204744537daab7693834db95..57377262e809ee428e6db7ab56fc4b2699c4da21 100644 (file)
@@ -46,9 +46,7 @@ int check_constants(void) {
 
        /* Credentials versions */
 
-       check_int(cc_credentials_v4,    1);
        check_int(cc_credentials_v5,    2);
-       check_int(cc_credentials_v4_v5, (cc_credentials_v4 | cc_credentials_v5));
 
        /* Lock types */
 
index 09feebee5fcab4cda8b1e0defadbd4cc7c85bb14..2dc348ea0fe1cf67a2f1b89234b317f1fe57ebc5 100644 (file)
@@ -583,7 +583,6 @@ int check_cc_context_create_ccache(void) {
 
                // try bad parameters
                err = check_once_cc_context_create_ccache(context, NULL, cc_credentials_v5, "foo@BAR.ORG", &ccache, ccErrBadParam, "NULL name");                    // NULL name
-               err = check_once_cc_context_create_ccache(context, "name", cc_credentials_v4_v5, "foo@BAR.ORG", &ccache, ccErrBadCredentialsVersion, "invalid creds_vers"); // invalid creds_vers
                err = check_once_cc_context_create_ccache(context, "name", cc_credentials_v5, NULL, &ccache, ccErrBadParam, "NULL principal");                          // NULL principal
                err = check_once_cc_context_create_ccache(context, "name", cc_credentials_v5, "foo@BAR.ORG", NULL, ccErrBadParam, "NULL ccache");                    // NULL ccache
        }
@@ -681,7 +680,6 @@ int check_cc_context_create_default_ccache(void) {
                }
 
                // try bad parameters
-               err = check_once_cc_context_create_default_ccache(context, cc_credentials_v4_v5, "foo@BAR.ORG", &ccache, ccErrBadCredentialsVersion, "invalid creds_vers"); // invalid creds_vers
                err = check_once_cc_context_create_default_ccache(context, cc_credentials_v5, NULL, &ccache, ccErrBadParam, "NULL principal");                          // NULL principal
                err = check_once_cc_context_create_default_ccache(context, cc_credentials_v5, "foo@BAR.ORG", NULL, ccErrBadParam, "NULL ccache");                    // NULL ccache
        }
@@ -773,7 +771,6 @@ int check_cc_context_create_new_ccache(void) {
                if (ccache) { cc_ccache_release(ccache); }
 
                // try bad parameters
-               err = check_once_cc_context_create_new_ccache(context, 1, cc_credentials_v4_v5, "foo@BAR.ORG", &ccache, ccErrBadCredentialsVersion, "invalid creds_vers"); // invalid creds_vers
                err = check_once_cc_context_create_new_ccache(context, 1, cc_credentials_v5, NULL, &ccache, ccErrBadParam, "NULL principal");                          // NULL principal
                err = check_once_cc_context_create_new_ccache(context, 1, cc_credentials_v5, "foo@BAR.ORG", NULL, ccErrBadParam, "NULL ccache");                    // NULL ccache
        }
index e0205ce469651eec629d60ae7b3eef6105a7eb8a..c71bb45a85dd82ed987481617086fd49090895eb 100644 (file)
@@ -45,20 +45,6 @@ static int compare_v5_creds_unions_compat(const cred_union *a, const cred_union
                 a->cred.pV5Cred->starttime == b->cred.pV5Cred->starttime) {
                 retval = 0;
             }
-        } else if (a->cred_type == CC_CRED_V4) {
-            if (!strcmp (a->cred.pV4Cred->principal,
-                         b->cred.pV4Cred->principal) &&
-                !strcmp (a->cred.pV4Cred->principal_instance,
-                         b->cred.pV4Cred->principal_instance) &&
-                !strcmp (a->cred.pV4Cred->service,
-                         b->cred.pV4Cred->service) &&
-                !strcmp (a->cred.pV4Cred->service_instance,
-                         b->cred.pV4Cred->service_instance) &&
-                !strcmp (a->cred.pV4Cred->realm,
-                         b->cred.pV4Cred->realm) &&
-                a->cred.pV4Cred->issue_date == b->cred.pV4Cred->issue_date) {
-                retval = 0;
-            }
         }
     }
 
@@ -361,10 +347,6 @@ int check_cc_open(void) {
             err = check_once_cc_open(context, name, CC_CRED_V5, &ccache, CC_NOERROR, NULL);
         }
 
-        // check version
-        if (!err) {
-            err = check_once_cc_open(context, name, CC_CRED_V4, &ccache, CC_ERR_CRED_VERSION, NULL);
-        }
         // try bad parameters
         err = check_once_cc_open(context, NULL, CC_CRED_V5, &ccache, CC_BAD_PARM, NULL);
         err = check_once_cc_open(context, name, CC_CRED_V5, NULL, CC_BAD_PARM, NULL);
@@ -681,17 +663,6 @@ int check_cc_get_cred_version(void) {
 
     err = CC_NOERROR;
 
-    // try one created with v4 creds
-    if (!err) {
-        err = cc_create(context, name, "foo@BAR.ORG", CC_CRED_V4, 0, &ccache);
-    }
-    if (!err) {
-        check_once_cc_get_cred_version(context, ccache, CC_CRED_V4, CC_NOERROR, "v4 creds");
-    }
-    else {
-        log_error("cc_context_create_new_ccache failed, can't complete test");
-        failure_count++;
-    }
     if (ccache) {
         cc_destroy(context, &ccache);
         ccache = NULL;
@@ -840,7 +811,6 @@ int check_cc_get_principal(void) {
     apiCB *context = NULL;
     ccache_p *ccache = NULL;
     char *name_v5 = "TEST_CC_GET_PRINCIPAL_V5";
-    char *name_v4 = "TEST_CC_GET_PRINCIPAL_V4";
 
     BEGIN_TEST("cc_get_principal");
 
@@ -866,18 +836,6 @@ int check_cc_get_principal(void) {
         ccache = NULL;
     }
 
-    // try with krb4 principal
-    if (!err) {
-        err = cc_create(context, name_v4, "foo.BAR@BAZ.ORG", CC_CRED_V4, 0, &ccache);
-    }
-    if (!err) {
-        check_once_cc_get_principal(context, ccache, "foo.BAR@BAZ.ORG", CC_NOERROR, "trying to get krb4 princ for krb4 ccache");
-    }
-    else {
-        log_error("cc_create failed, can't complete test");
-        failure_count++;
-    }
-
     // try with bad param
     if (!err) {
         check_once_cc_get_principal(context, ccache, NULL, CC_BAD_PARM, "passed null out param");
@@ -945,7 +903,6 @@ int check_cc_set_principal(void) {
     apiCB *context = NULL;
     ccache_p *ccache = NULL;
     char *name_v5 = "TEST_CC_GET_PRINCIPAL_V5";
-    char *name_v4 = "TEST_CC_GET_PRINCIPAL_V4";
 
     BEGIN_TEST("cc_set_principal");
 
@@ -972,37 +929,6 @@ int check_cc_set_principal(void) {
         ccache = NULL;
     }
 
-    // empty ccache
-
-    // replace v5 ccache's principal
-    if (!err) {
-        err = cc_create(context, name_v5, "foo@BAZ.ORG", CC_CRED_V5, 0, &ccache);
-     }
-    if (!err) {
-        check_once_cc_set_principal(context, ccache, CC_CRED_V5, "foo/BAZ@BAR.ORG", CC_NOERROR, "replace v5 only ccache's principal (empty ccache)");
-        check_once_cc_set_principal(context, ccache, CC_CRED_V4, "foo.BAZ@BAR.ORG", CC_ERR_CRED_VERSION, "replace v5 principal with v4");
-    }
-    else {
-        log_error("cc_create failed, can't complete test");
-        failure_count++;
-    }
-    if (ccache) {
-        cc_destroy(context, &ccache);
-        ccache = NULL;
-    }
-
-    // replace v4 ccache's principal
-    if (!err) {
-        err = cc_create(context, name_v4, "foo@BAZ.ORG", CC_CRED_V4, 0, &ccache);
-    }
-    if (!err) {
-        check_once_cc_set_principal(context, ccache, CC_CRED_V4, "foo.BAZ@BAR.ORG", CC_NOERROR, "replace v4 only ccache's principal (empty ccache)");
-        check_once_cc_set_principal(context, ccache, CC_CRED_V5, "foo/BAZ@BAR.ORG", CC_ERR_CRED_VERSION, "replace v4 principal with v5");
-    }
-    else {
-        log_error("cc_create failed, can't complete test");
-        failure_count++;
-    }
     if (ccache) {
         cc_destroy(context, &ccache);
         ccache = NULL;
@@ -1102,21 +1028,6 @@ int check_cc_store(void) {
         }
     }
 
-    // bad creds version
-    if (!err) {
-        err = new_v5_creds_union_compat(&creds_union, "BAR.ORG");
-
-        if (!err) {
-            creds_union.cred_type = CC_CRED_MAX;
-            check_once_cc_store(context, ccache, creds_union, CC_ERR_CRED_VERSION, "CC_CRED_MAX (invalid) into a ccache with only v5 princ");
-            creds_union.cred_type = CC_CRED_V4;
-            check_once_cc_store(context, ccache, creds_union, CC_ERR_CRED_VERSION, "v4 creds into a v5 ccache");
-            creds_union.cred_type = CC_CRED_V5;
-
-            release_v5_creds_union_compat(&creds_union);
-        }
-    }
-
     // non-existent ccache
     if (ccache) {
         err = cc_get_name(context, ccache, &name);
index 54f71a1a0280d64c3179552c8b1d77834e6b67a4..c18159639466243c7156e60044f3450ee8a8c683 100644 (file)
@@ -104,19 +104,19 @@ extern "C" {
  * \section introduction Introduction
  *
  * This is the specification for an API which provides Credentials Cache
- * services for both Kerberos v5 and v4. The idea behind this API is that
- * multiple Kerberos implementations can share a single collection of
- * credentials caches, mediated by this API specification. On the Mac OS
- * and Microsoft Windows platforms this will allow single-login, even when
- * more than one Kerberos shared library is in use on a particular system.
+ * services for Kerberos v5 (and previously v4). The idea behind this API is
+ * that multiple Kerberos implementations can share a single collection of
+ * credentials caches, mediated by this API specification. On the Mac OS and
+ * Microsoft Windows platforms this will allow single-login, even when more
+ * than one Kerberos shared library is in use on a particular system.
  *
  * Abstractly, a credentials cache collection contains one or more credentials
  * caches, or ccaches. A ccache is uniquely identified by its name, which is
  * a string internal to the API and not intended to be presented to users.
  * The user presentable identifier of a ccache is its principal.
  *
- * Unlike the previous versions of the API, version 3 of the API stores both
- * Kerberos v4 and v5 credentials in the same ccache.
+ * Unlike the previous versions of the API, version 3 of the API could store
+ * credentials for multiple Kerberos versions in the same ccache.
  *
  * At any given time, one ccache is the "default" ccache. The exact meaning
  * of a default ccache is OS-specific; refer to implementation requirements
@@ -305,10 +305,9 @@ enum {
 /*!
  * Credentials versions
  *
- * These constants are used in several places in the API to discern
- * between Kerberos v4 and Kerberos v5. Not all values are valid
- * inputs and outputs for all functions; function specifications
- * below detail the allowed values.
+ * These constants are used in several places in the API to discern Kerberos
+ * versions. Not all values are valid inputs and outputs for all functions;
+ * function specifications below detail the allowed values.
  *
  * Kerberos version constants will always be a bit-field, and can be
  * tested as such; for example the following test will tell you if
@@ -317,9 +316,9 @@ enum {
  * if ((ccacheVersion & cc_credentials_v5) != 0)
  */
 enum cc_credential_versions {
-    cc_credentials_v4 = 1,
+    /* cc_credentials_v4 = 1, */
     cc_credentials_v5 = 2,
-    cc_credentials_v4_v5 = 3
+    /* cc_credentials_v4_v5 = 3 */
 };
 
 /*!
@@ -353,29 +352,6 @@ enum cc_lock_modes {
     cc_lock_block = 1
 };
 
-/*!
- * Sizes of fields in cc_credentials_v4_t.
- */
-enum {
-    /* Make sure all of these are multiples of four (for alignment sanity) */
-    cc_v4_name_size     = 40,
-    cc_v4_instance_size = 40,
-    cc_v4_realm_size    = 40,
-    cc_v4_ticket_size   = 1254,
-    cc_v4_key_size      = 8
-};
-
-/*!
- * String to key type (Kerberos v4 only)
- */
-enum cc_string_to_key_type {
-    cc_v4_stk_afs = 0,
-    cc_v4_stk_des = 1,
-    cc_v4_stk_columbia_special = 2,
-    cc_v4_stk_krb5 = 3,
-    cc_v4_stk_unknown = 4
-};
-
 /*!@}*/
 
 /*!
@@ -482,15 +458,13 @@ typedef cc_ccache_iterator_d *cc_ccache_iterator_t;
  * \defgroup cc_credentials_reference cc_credentials_t Overview
  * @{
  *
- * The cc_credentials_t type is used to store a single set of
- * credentials for either Kerberos v4 or Kerberos v5. In addition
- * to its only function, release(), it contains a pointer to a
- * cc_credentials_union structure. A cc_credentials_union
+ * The cc_credentials_t type is used to store a single set of credentials for
+ * Kerberos v5. In addition to its only function, release(), it contains a
+ * pointer to a cc_credentials_union structure. A cc_credentials_union
  * structure contains an integer of the enumerator type
- * cc_credentials_version, which is either #cc_credentials_v4 or
- * #cc_credentials_v5, and a pointer union, which contains either a
- * cc_credentials_v4_t pointer or a cc_credentials_v5_t pointer,
- * depending on the value in version.
+ * cc_credentials_version, which is #cc_credentials_v5, and a pointer union,
+ * which contains a cc_credentials_v5_t pointer, depending on the value in
+ * version.
  *
  * Variables of the type cc_credentials_t are allocated by the CCAPI
  * implementation, and should be released with their release()
@@ -501,43 +475,6 @@ typedef cc_ccache_iterator_d *cc_ccache_iterator_t;
  * For API functions see \ref cc_credentials_f.
  */
 
-/*!
- * If a cc_credentials_t variable is used to store Kerberos v4
- * credentials, then credentials.credentials_v4 points to a v4
- * credentials structure.  This structure is similar to a
- * krb4 API CREDENTIALS structure.
- */
-struct cc_credentials_v4_t {
-    cc_uint32       version;
-    /*! A properly quoted string representation of the first component of the client principal */
-    char            principal [cc_v4_name_size];
-    /*! A properly quoted string representation of the second component of the client principal */
-    char            principal_instance [cc_v4_instance_size];
-    /*! A properly quoted string representation of the first component of the service principal */
-    char            service [cc_v4_name_size];
-    /*! A properly quoted string representation of the second component of the service principal */
-    char            service_instance [cc_v4_instance_size];
-    /*! A properly quoted string representation of the realm */
-    char            realm [cc_v4_realm_size];
-    /*! Ticket session key */
-    unsigned char   session_key [cc_v4_key_size];
-    /*! Key version number */
-    cc_int32        kvno;
-    /*! String to key type used.  See cc_string_to_key_type for valid values */
-    cc_int32        string_to_key_type;
-    /*! Time when the ticket was issued */
-    cc_time_t       issue_date;
-    /*! Ticket lifetime in 5 minute units */
-    cc_int32        lifetime;
-    /*! IPv4 address of the client the ticket was issued for */
-    cc_uint32       address;
-    /*! Ticket size (no greater than cc_v4_ticket_size) */
-    cc_int32        ticket_size;
-    /*! Ticket data */
-    unsigned char   ticket [cc_v4_ticket_size];
-};
-typedef struct cc_credentials_v4_t cc_credentials_v4_t;
-
 /*!
  * The CCAPI data structure.  This structure is similar to a krb5_data structure.
  * In a v5 credentials structure, cc_data structures are used
@@ -602,8 +539,6 @@ struct cc_credentials_union {
     cc_uint32                   version;
     /*! The credentials. */
     union {
-        /*! If \a version is #cc_credentials_v4, a pointer to a cc_credentials_v4_t. */
-        cc_credentials_v4_t*    credentials_v4;
         /*! If \a version is #cc_credentials_v5, a pointer to a cc_credentials_v5_t. */
         cc_credentials_v5_t*    credentials_v5;
     }                           credentials;
@@ -781,13 +716,11 @@ struct cc_context_f {
      * \return On success, #ccNoError.  On failure, an error code representing the failure.
      * \brief \b cc_context_create_ccache(): Create a new ccache.
      *
-     * Create a new credentials cache. The ccache is uniquely identified by its name.
-     * The principal given is also associated with the ccache and the credentials
-     * version specified. A NULL name is not allowed (and ccErrBadName is returned
-     * if one is passed in). Only cc_credentials_v4 and cc_credentials_v5 are valid
-     * input values for cred_vers. If you want to create a new ccache that will hold
-     * both versions of credentials, call cc_context_create_ccache() with one version,
-     * and then cc_ccache_set_principal() with the other version.
+     * Create a new credentials cache. The ccache is uniquely identified by
+     * its name.  The principal given is also associated with the ccache and
+     * the credentials version specified. A NULL name is not allowed (and
+     * ccErrBadName is returned if one is passed in). Only cc_credentials_v5
+     * can be an input value for cred_vers.
      *
      * If you want to create a new ccache (with a unique name), you should use
      * cc_context_create_new_ccache() instead. If you want to create or reinitialize
@@ -814,10 +747,9 @@ struct cc_context_f {
      * cc_context_get_default_ccache_name()); see the description of
      * cc_context_get_default_ccache_name() for details.
      *
-     * The principal should be a C string containing an unparsed Kerberos principal
-     * in the format of the appropriate Kerberos version, i.e. \verbatim foo.bar/@BAZ
-     * \endverbatim for Kerberos v4 and \verbatim foo/bar/@BAZ \endverbatim
-     * for Kerberos v5.
+     * The principal should be a C string containing an unparsed Kerberos
+     * principal in the format of the appropriate Kerberos version,
+     * i.e. \verbatim foo/bar/@BAZ \endverbatim for Kerberos v5.
      */
     cc_int32 (*create_ccache) (cc_context_t  in_context,
                                const char   *in_name,
@@ -1014,14 +946,11 @@ struct cc_ccache_f {
      * \return On success, #ccNoError.  On failure, an error code representing the failure.
      * \brief \b cc_ccache_get_credentials_version(): Get the credentials version of a ccache.
      *
-     * cc_ccache_get_credentials_version() returns one value of the enumerated type
-     * cc_credentials_vers. The possible return values are #cc_credentials_v4
-     * (if ccache's v4 principal has been set), #cc_credentials_v5
-     * (if ccache's v5 principal has been set), or #cc_credentials_v4_v5
-     * (if both ccache's v4 and v5 principals have been set). A ccache's
-     * principal is set with one of cc_context_create_ccache(),
-     * cc_context_create_new_ccache(), cc_context_create_default_ccache(), or
-     * cc_ccache_set_principal().
+     * cc_ccache_get_credentials_version() returns one value of the enumerated
+     * type cc_credentials_vers. The return value is #cc_credentials_v5 (if
+     * ccache's v5 principal has been set).  A ccache's principal is set with
+     * one of cc_context_create_ccache(), cc_context_create_new_ccache(),
+     * cc_context_create_default_ccache(), or cc_ccache_set_principal().
      */
     cc_int32 (*get_credentials_version) (cc_ccache_t  in_ccache,
                                          cc_uint32   *out_credentials_version);
@@ -1046,10 +975,7 @@ struct cc_ccache_f {
      *
      * Return the principal for the ccache that was set via cc_context_create_ccache(),
      * cc_context_create_default_ccache(), cc_context_create_new_ccache(), or
-     * cc_ccache_set_principal(). Principals for v4 and v5 are separate, but
-     * should be kept synchronized for each ccache; they can be retrieved by
-     * passing cc_credentials_v4 or cc_credentials_v5 in cred_vers. Passing
-     * cc_credentials_v4_v5 will result in the error ccErrBadCredentialsVersion.
+     * cc_ccache_set_principal().
      */
     cc_int32 (*get_principal) (cc_ccache_t  in_ccache,
                                cc_uint32    in_credentials_version,
@@ -1063,10 +989,7 @@ struct cc_ccache_f {
      * \return On success, #ccNoError.  On failure, an error code representing the failure.
      * \brief \b cc_ccache_set_principal(): Set the principal of a ccache.
      *
-     * Set the a principal for ccache. The v4 and v5 principals can be set
-     * independently, but they should always be kept equal, up to differences in
-     * string representation between v4 and v5. Passing cc_credentials_v4_v5 in
-     * cred_vers will result in the error ccErrBadCredentialsVersion.
+     * Set the a principal for ccache.
      */
     cc_int32 (*set_principal) (cc_ccache_t  io_ccache,
                                cc_uint32    in_credentials_version,
@@ -1083,12 +1006,13 @@ struct cc_ccache_f {
      * See the description of the credentials types for the meaning of
      * cc_credentials_union fields.
      *
-     * Before credentials of a specific credential type can be stored in a ccache,
-     * the corresponding principal version has to be set. For example, before you can
-     * store Kerberos v4 credentials in a ccache, the Kerberos v4 principal has to be set
-     * either by cc_context_create_ccache(), cc_context_create_default_ccache(),
-     * cc_context_create_new_ccache(), or cc_ccache_set_principal(); likewise for
-     * Kerberos v5. Otherwise, ccErrBadCredentialsVersion is returned.
+     * Before credentials of a specific credential type can be stored in a
+     * ccache, the corresponding principal version has to be set.  That is,
+     * before you can store Kerberos v5 credentials in a ccache, the Kerberos
+     * v5 principal has to be set either by cc_context_create_ccache(),
+     * cc_context_create_default_ccache(), cc_context_create_new_ccache(), or
+     * cc_ccache_set_principal(); otherwise, ccErrBadCredentialsVersion is
+     * returned.
      */
     cc_int32 (*store_credentials) (cc_ccache_t                 io_ccache,
                                    const cc_credentials_union *in_credentials_union);
index b3b48996d8fd761f935493095359b00d8c4459af..9e5a346ac041aaab2ceef09537157d5836b6d17a 100644 (file)
@@ -85,36 +85,13 @@ typedef struct cc_credentials_v5_compat {
     cc_data_compat**            authdata;
 } cc_credentials_v5_compat;
 
-enum {
-    MAX_V4_CRED_LEN = 1250
-};
-
 enum {
     KRB_NAME_SZ = 40,
     KRB_INSTANCE_SZ = 40,
     KRB_REALM_SZ = 40
 };
 
-typedef struct cc_credentials_v4_compat {
-    unsigned char       kversion;
-    char                principal[KRB_NAME_SZ+1];
-    char                principal_instance[KRB_INSTANCE_SZ+1];
-    char                service[KRB_NAME_SZ+1];
-    char                service_instance[KRB_INSTANCE_SZ+1];
-    char                realm[KRB_REALM_SZ+1];
-    unsigned char       session_key[8];
-    cc_int32            kvno;
-    cc_int32            str_to_key;
-    long                issue_date;
-    cc_int32            lifetime;
-    cc_uint32           address;
-    cc_int32            ticket_sz;
-    unsigned char       ticket[MAX_V4_CRED_LEN];
-    unsigned long       oops;
-} cc_credentials_v4_compat;
-
 typedef union cred_ptr_union_compat {
-    cc_credentials_v4_compat* pV4Cred;
     cc_credentials_v5_compat* pV5Cred;
 } cred_ptr_union_compat;
 
@@ -135,7 +112,6 @@ typedef struct infoNC infoNC;
 
 /* Some old type names */
 
-typedef cc_credentials_v4_compat V4Cred_type;
 typedef cc_credentials_v5_compat cc_creds;
 struct ccache_cit;
 typedef struct ccache_cit ccache_cit;
@@ -166,7 +142,7 @@ enum {
 
 enum {
     CC_CRED_UNKNOWN,
-    CC_CRED_V4,
+    /* CC_CRED_V4, */
     CC_CRED_V5,
     CC_CRED_MAX
 };
index f7a79bc3eae3e996b4a7ea1aa3138162f56c41dc..542abcf560cbaa95b480a3ace240ec4b7e58bcd0 100644 (file)
@@ -587,7 +587,6 @@ krb5_stdccv3_next_cred (krb5_context context,
         err = stdccv3_setup (context, ccapi_data);
     }
 
-    /* Note: CCAPI v3 ccaches can contain both v4 and v5 creds */
     while (!err) {
         err = cc_credentials_iterator_next (iterator, &credentials);
 
@@ -834,7 +833,6 @@ krb5_stdccv3_remove (krb5_context context,
                                                  &iterator);
     }
 
-    /* Note: CCAPI v3 ccaches can contain both v4 and v5 creds */
     while (!err && !found) {
         cc_credentials_t credentials = NULL;
 
index 62d847c18b169e531895543b1c0254ab55bfe900..1f2a3865c580ae8096fe4ed8f32ed86218b2e941 100644 (file)
@@ -521,9 +521,6 @@ cred_union_release (cc_credentials_union *in_cred_union)
 
             free (cv5);
 
-        } else if (in_cred_union->version == cc_credentials_v4 &&
-                   in_cred_union->credentials.credentials_v4) {
-            free (in_cred_union->credentials.credentials_v4);
         }
         free ((cc_credentials_union *) in_cred_union);
     }
@@ -892,10 +889,7 @@ static void deep_free_cc_v5_creds (cc_creds* creds)
 
 static void deep_free_cc_creds (cred_union creds)
 {
-    if (creds.cred_type == CC_CRED_V4) {
-        /* we shouldn't get this, of course */
-        free (creds.cred.pV4Cred);
-    } else if (creds.cred_type == CC_CRED_V5) {
+    if (creds.cred_type == CC_CRED_V5) {
         deep_free_cc_v5_creds (creds.cred.pV5Cred);
     }
 }
index b2674573ea1bcae026003526cb19e57dc44bea67..622d5665c6743cf799e8cd6484b018d594af0789 100644 (file)
@@ -94,7 +94,7 @@ typedef int cc_int32;
 
 enum {
     CC_CRED_VUNKNOWN = 0,       // For validation
-    CC_CRED_V4 = 1,
+    /* CC_CRED_V4 = 1, */
     CC_CRED_V5 = 2,
     CC_CRED_VMAX = 3            // For validation
 };
index cb40c607c2942670d8f5f570a88c5c363af02564..bf6f6a08d633454fed78452ea8ed570bbce94d4f 100644 (file)
@@ -182,7 +182,7 @@ typedef int cc_int32;
 
 enum {
     CC_CRED_VUNKNOWN = 0,       // For validation
-    CC_CRED_V4 = 1,
+    /* CC_CRED_V4 = 1, */
     CC_CRED_V5 = 2,
     CC_CRED_VMAX = 3            // For validation
 };
index b308578105a0b4c77a99c001f96ee879d719191c..9aab4a0981181e53672a5892ebee0b6506bd224f 100644 (file)
@@ -126,52 +126,8 @@ typedef struct _cc_creds {
     cc_data **  authdata;
 } cc_creds;
 
-// begin V4 stuff
-// use an enumerated type so all callers infer the same meaning
-// these values are what krbv4win uses internally.
-#define STK_AFS        0
-#define STK_DES        1
-
-// K4 uses a MAX_KTXT_LEN of 1250 to hold a ticket
-// K95 uses 256
-// To be safe I'll use the larger number, but a factor of 5!!!
-#define MAX_V4_CRED_LEN        1250
-
-// V4 Credentials
-
-enum {
-    KRB_NAME_SZ = 40,
-    KRB_INSTANCE_SZ = 40,
-    KRB_REALM_SZ = 40
-};
-
-typedef struct cc_V4credential {
-    unsigned char  kversion;
-    char           principal[KRB_NAME_SZ + 1];
-    char           principal_instance[KRB_INSTANCE_SZ + 1];
-    char                  service[KRB_NAME_SZ + 1];
-    char                  service_instance[KRB_INSTANCE_SZ + 1];
-    char           realm[KRB_REALM_SZ + 1];
-    unsigned char  session_key[8];
-    cc_int32       kvno;           // k95 used BYTE skvno
-    cc_int32       str_to_key;     // k4 infers dynamically, k95 stores
-    long           issue_date;     // k95 called this issue_time
-    cc_int32       lifetime;       // k95 used LONG expiration_time
-    cc_uint32      address;        // IP Address of local host
-    cc_int32       ticket_sz;      // k95 used BYTE, k4 ktext uses int to hold up to 1250
-    unsigned char  ticket[MAX_V4_CRED_LEN];
-    unsigned long  oops;           // zero to catch runaways
-} V4Cred_type;
-
-enum {
-    CC_CRED_VUNKNOWN = 0,       // For validation
-    CC_CRED_V4 = 1,
-    CC_CRED_V5 = 2,
-    CC_CRED_VMAX = 3            // For validation
-};
 
 typedef union cred_ptr_union_type {
-    V4Cred_type* pV4Cred;
     cc_creds*    pV5Cred;
 } cred_ptr_union;
 
@@ -223,16 +179,15 @@ cc_get_change_time(
 **   create, open, close, destroy, get_principal, get_cred_version, &
 **   lock_request
 **
-** Multiple NCs are allowed within the main cache.  Each has a Name
-** and kerberos version # (V4 or V5).  Caller gets "ccache_ptr"s for
-** NCs.
+** Multiple NCs are allowed within the main cache.  Each has a Name and
+** kerberos version # (V5).  Caller gets "ccache_ptr"s for NCs.
 */
 CCACHE_API
 cc_create(
     apiCB* cc_ctx,          // >  DLL's primary control structure
     const char* name,       // >  name of cache to be [destroyed if exists, then] created
     const char* principal,
-    cc_int32 vers,          // >  ticket version (CC_CRED_V4 or CC_CRED_V5)
+    cc_int32 vers,          // >  ticket version (CC_CRED_V5)
     cc_uint32 cc_flags,     // >  options
     ccache_p** ccache_ptr   // <  NC control structure
     );
@@ -241,7 +196,7 @@ CCACHE_API
 cc_open(
     apiCB* cc_ctx,          // >  DLL's primary control structure
     const char* name,       // >  name of pre-created cache
-    cc_int32 vers,          // >  ticket version (CC_CRED_V4 or CC_CRED_V5)
+    cc_int32 vers,          // >  ticket version (CC_CRED_V5)
     cc_uint32 cc_flags,     // >  options
     ccache_p** ccache_ptr   // <  NC control structure
     );